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