← 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 .go preview
go/client.go// client.go — Go gRPC client for the CatalogService.
//
// Demonstrates:
// - Unary calls with metadata and timeouts
// - Server streaming consumption
// - Client streaming with iterator pattern
// - Bidirectional streaming with goroutines
// - Retry logic with exponential backoff
//
// Run: cd go && go run client.go
package main
import (
"context"
"fmt"
"log"
"os"
"time"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/metadata"
// After code generation, import the generated packages:
// catalogpb "github.com/example/grpc-templates/gen/catalogpb"
)
const (
defaultServerAddr = "localhost:50051"
defaultTimeout = 10 * time.Second
)
// ---------------------------------------------------------------------------
// Connection Setup
// ---------------------------------------------------------------------------
// connect creates a gRPC client connection with retry and keepalive options.
func connect(addr string) (*grpc.ClientConn, error) {
opts := []grpc.DialOption{