grpc-microservices
Comprehensive gRPC microservices skill covering protobuf schemas, service definitions, streaming patterns, interceptors, load balancing, and production gRPC architecture
By manutej · 461 installs
npx skills add manutej/luxor-claude-marketplace --skill grpc-microservices
Source repository · Upstream listing
gRPC Microservices
A comprehensive skill for building high performance, type safe microservices using gRPC and Protocol Buffers. This skill covers service design, all streaming patterns, interceptors, load balancing, error handling, and production deployment patterns for distributed systems.
When to Use This Skill
Use this skill when:
Building microservices that require high performance, low latency communication
Implementing real time data streaming between services
Designing type safe APIs with strong contracts using Protocol Buffers
Creating polyglot systems where services are written in different languages
Building distributed systems requiring bidirectional streaming
Implementing service meshes with advanced routing and observability
Designing APIs that need to evolve with backward/forward compatibility
Creating internal APIs where performance and type safety are critical
Building event driven architectures with streaming data pipelines
Implementing client server systems with push capabilities (server streaming)
Designing systems requiring efficient binary serialization
Building microservices requiring automatic code generation for multiple languages
Core Concepts
gRPC Fundamentals
gRPC is a modern open source RPC framework that can run anywhere. It enables client and server applications to communicate transparently and makes it easier to build connected systems.
Key Characteristics:
HTTP/2 based : Multiplexing, server push, header compression
Protocol Buffers : Efficient binary serialization format
Streaming : Bidirectional streaming support built in
Code Generation : Auto generate client/server code in 10+ languages
Deadlines/Timeouts : First class timeout support
Cancellation : Propagate cancellation across services
Interceptors : Middleware pattern for cross cutting concerns
Protocol Buffers (protobuf)
Protocol Buffers is a language neutral, platform neutral extensible mechanism for serializing structured data.
Advantages:
Compact : 3 10x smaller than JSON
Fast : 20 100x faster to serialize/deserialize than JSON
Type safe : Strongly typed schema with validation
Backward/Forward Compatible : Evolve schemas safely
Language Support : Official support for 10+ languages
Self documenting : Schema serves as documentation
Basic Syntax:
Service Definitions
gRPC services are defined in .proto files and specify available methods and their input/output types.
Basic Service:
Four Types of RPC Methods
1. Unary RPC (Request Response)
Simple request response pattern, like a traditional REST API call.
Use Cases:
CRUD operations
Simple queries
Synchronous operations
Traditional request response patterns
2. Server Streaming RPC
Client sends one request, server returns a stream of responses.
Use Cases:
Paginated results
Real time updates
Server side event push
Large dataset downloads
3. Client Streaming RPC
Client sends a stream of requests, server returns one response.
Use Cases:
Bulk uploads
Batch processing
Client side aggregation
File uploads in chunks
4. Bidirectional Streaming RPC
Both client and server send streams of messages independently.
Use Cases:
Real time chat applications
Live collaboration
Gaming (real time state sync)
IoT bidirectional communication
Protobuf Schema Design
Message Design Best Practices
1. Use Explicit Field Numbers
Field numbers are critical for backward compatibility and should never be reused.
2. Use Enumerations for Fixed Sets
3. Use Nested Messages for Complex Types
4. Use repeated for Arrays
5. Use oneof for Union Types
6. Use google.protobuf Well Known Types
Service Design Patterns
1. Resource Oriented Design
Follow RESTful principles adapted for RPC:
2. Pagination Pattern
3. Batch Operations Pattern
4. Long Running Operations Pattern
Streaming Patterns
Server Streaming Patterns
1. Pagination Streaming
Stream large result sets efficiently:
Implementation (Go):
2. Real Time Updates
Push updates to clients as they occur:
3. Log Tailing
Stream logs or audit trails:
Client Streaming Patterns
1. Bulk Upload
Client streams data, server processes and returns summary:
Implementation (Go):
2. Aggregation
Client sends multiple data points, server aggregates:
Bidirectional Streaming Patterns
1. Chat Application
Real time bidirectional communication:
Implementation (Go):
2. Live Collaboration
Real time document editing:
3. Game State Synchronization
Real time multiplayer game updates:
Interceptors (Middleware)
Interceptors provide a way to add cross cutting concerns to gRPC services.
Unary Interceptors
Server side Unary Interceptor:
Client side Unary Interceptor:
Streaming Interceptors
Server side Stream Interceptor:
Common Interceptor Patterns
1. Authentication Interceptor
2. Logging Interceptor
3. Rate Limiting Interceptor
4. Tracing Interceptor (OpenTelemetry)
5. Error Recovery Interceptor
Chaining Multiple Interceptors
Load Balancing
Client Side Load Balancing
gRPC provides built in client side load balancing with multiple policies.
1. Round Robin
2. Pick First (Default)
3. Custom Resolver
Implement custom service discovery:
Load Balancing with Service Mesh
Kubernetes with Service Mesh (Istio/Linkerd):
Health Checking
Implement health check service:
Implementation:
Error Handling
gRPC Status Codes
gRPC uses standardized status codes for error handling:
Common Status Codes:
OK : Success
Canceled : Operation was cancelled
Unknown : Unknown error
InvalidArgument : Client specified invalid argument
DeadlineExceeded : Deadline expired before operation
NotFound : Entity not found
AlreadyExists : Entity already exists
PermissionDenied : Permission denied
ResourceExhausted : Resource exhausted (rate limit)
FailedPrecondition : Operation rejected (system not in valid state)
Aborted : Operation aborted
OutOfRange : Out of valid range
Unimplemented : Operation not implemented
Internal : Internal server error
Unavailable : Service unavailable
DataLoss : Unrecoverable data loss
Unauthenticated : Request lacks valid authentication
Rich Error Details
Add structured error details:
Client side error handling:
Error Propagation
Retry Logic
Best Practices
1. Schema Evolution
DO:
Always use syntax = "proto3"
Never reuse field numbers
Use reserved for deprecated fields
Add new fields with new numbers
Use optional wrappers for nullable fields
DON'T:
Change field types
Reuse field numbers
Remove fields without reserving numbers
Change message names without aliases
2. Performance Optimization
Connection Management:
Connection Pooling:
Streaming for Large Data:
3. Security Best Practices
TLS Configuration:
Mutual TLS (mTLS):
Token Authentication:
4. Timeout and Deadline Management
Server side deadline propagation:
5. Monitoring and Observability
Prometheus Metrics:
6. Graceful Shutdown
7. Service Versioning
URL based versioning:
Field based versioning:
8. Testing Best Practices
Unit Testing with Mocks:
Integration Testing:
Production Deployment Patterns
Docker Deployment
Dockerfile:
Kubernetes Deployment
deployment.yaml:
Service Mesh Integration (Istio)
VirtualService for traffic routing:
Common Patterns and Anti Patterns
✅ DO:
1. Use streaming for large datasets
2. Implement proper error handling with status codes
3. Add interceptors for cross cutting concerns
4. Use connection pooling for high throughput clients
5. Implement health checks
6. Set appropriate timeouts and deadlines
7. Use TLS in production
8. Version your APIs
9. Monitor with metrics and tracing
10. Test with integration tests
❌ DON'T:
1. Don't use unary RPCs for large datasets Use streaming instead
2. Don't ignore context cancellation Always check context.Done()
3. Don't create new connections per request Reuse connections
4. Don't skip authentication/authorization Always validate
5. Don't forget graceful shutdown Handle SIGTERM properly
6. Don't hardcode endpoints Use service discovery
7. Don't ignore errors Handle all error cases
8. Don't use blocking operations without timeouts Always set deadlines
9. Don't skip health checks Implement liveness/readiness probes
10. Don't deploy without monitoring Add metrics and logging
Skill Version : 1.0.0
Last Updated : October 2025
Skill Category : Microservices, gRPC, Distributed Systems, API Design
Compatible With : Go, Python, Node.js, Java, C++, C , Ruby, and more