← Back to all products
$39
gRPC Service Templates
Protocol buffer schemas, service implementations in Python/Go/Node, streaming patterns, and load balancing configs.
JSONMarkdownYAMLPythonJavaScriptDockerKubernetesAWSNginx
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 21 files
grpc-service-templates/
├── LICENSE
├── README.md
├── configs/
│ ├── envoy-load-balancer.yaml
│ └── grpc-health-check.yaml
├── free-sample.zip
├── go/
│ ├── client.go
│ └── server.go
├── guide/
│ ├── codegen-instructions.md
│ ├── load-balancing.md
│ └── streaming-patterns.md
├── guides/
│ ├── codegen-instructions.md
│ ├── load-balancing.md
│ └── streaming-patterns.md
├── index.html
├── node/
│ ├── client.js
│ ├── package.json
│ └── server.js
├── proto/
│ ├── common.proto
│ └── service.proto
└── python/
├── client.py
└── server.py
📖 Documentation Preview README excerpt
gRPC Service Templates
Production-ready gRPC service templates in Python, Go, and Node.js — with shared protobuf definitions, streaming patterns, load balancing configs, and deep-dive guides.
What's Inside
grpc-service-templates/
├── proto/ # Shared protobuf definitions
│ ├── common.proto # Pagination, errors, metadata, health
│ └── service.proto # CatalogService — all 4 RPC patterns
├── python/
│ ├── server.py # Full server with interceptors, health checks
│ └── client.py # Client demonstrating all RPC patterns
├── go/
│ ├── server.go # Server with graceful shutdown, interceptors
│ └── client.go # Client with retry logic, deadline propagation
├── node/
│ ├── server.js # Server with dynamic proto loading
│ ├── client.js # Client with all streaming patterns
│ └── package.json # NPM dependencies
├── configs/
│ ├── envoy-load-balancer.yaml # Envoy L7 proxy for gRPC load balancing
│ └── grpc-health-check.yaml # Health check configs (K8s, Docker, AWS)
├── guides/
│ ├── streaming-patterns.md # All 4 patterns: when, why, how
│ ├── load-balancing.md # Why L4 LBs break gRPC + what to use instead
│ └── codegen-instructions.md # Exact protoc commands for all 3 languages
├── README.md
└── LICENSE
Features
Protobuf Definitions
- Rich domain model: Products with nested messages, enums, maps, oneof, repeated fields
- All 4 RPC patterns: Unary, server streaming, client streaming, bidirectional
- Standard patterns: FieldMask for partial updates, cursor-based pagination, gRPC health protocol
- Well-documented: Every field has a comment explaining its purpose and design rationale
Server Implementations (Python / Go / Node.js)
| Feature | Python | Go | Node.js |
|---|---|---|---|
| All 4 RPC patterns | Yes | Yes | Yes |
| Interceptors / middleware | Logging + auth | Logging + recovery | Logging |
| Health checking | gRPC health protocol | gRPC health protocol | Custom |
| Graceful shutdown | SIGTERM handler | SIGTERM + SIGINT | SIGTERM |
| In-memory data store | Thread-safe dict | sync.RWMutex map | Map |
| Error handling | gRPC status codes | status.Errorf | Callback errors |
| Reflection | Yes | Yes | N/A |
Configuration
- Envoy proxy config: L7 load balancing, health checks, connection pooling, circuit breaking
- Health check configs: Ready-to-use for Kubernetes (liveness/readiness probes), Docker Compose, and AWS ECS/ALB
Guides
- Streaming Patterns: When to use each pattern, code examples in all 3 languages, anti-patterns to avoid
- Load Balancing: Why gRPC breaks L4 load balancers, proxy vs client-side vs service mesh strategies
- Code Generation: Step-by-step protoc commands for Python, Go, Node.js, plus Makefile and Buf setup
... continues with setup instructions, usage examples, and more.
📄 Code Sample .py preview
python/client.py
"""
client.py — Python gRPC client for the CatalogService.
Demonstrates:
- Unary calls (GetProduct, CreateProduct)
- Server streaming (ListProducts, WatchInventory)
- Client streaming (BulkCreateProducts)
- Bidirectional streaming (SyncCatalog)
- Metadata injection (auth tokens)
- Deadline/timeout configuration
- Error handling with gRPC status codes
Prerequisites:
pip install grpcio grpcio-tools protobuf
Usage:
python client.py # Run all demos
python client.py --demo unary # Run specific demo
python client.py --host 10.0.0.5 # Connect to remote server
"""
from __future__ import annotations
import argparse
import logging
import os
import sys
import time
from typing import Iterator
import grpc
# Generated stubs — run protoc first (see guides/codegen-instructions.md)
try:
import service_pb2
import service_pb2_grpc
import common_pb2
except ImportError:
print("ERROR: Generated stubs not found. Run protoc first:")
print(" python -m grpc_tools.protoc -I ../proto \\")
print(" --python_out=. --grpc_python_out=. \\")
print(" ../proto/common.proto ../proto/service.proto")
sys.exit(1)
logger = logging.getLogger(__name__)
# ── Configuration ────────────────────────────────────────────────────────
SERVER_HOST = os.environ.get("GRPC_HOST", "localhost")
SERVER_PORT = int(os.environ.get("GRPC_PORT", "50051"))
# ... 260 more lines ...