| description | Use when designing distributed system architecture, decomposing monolithic applications into independent microservices, or establishing communication patterns between services at scale. Specifically:\n\n<example>\nContext: A company has a monolithic e-commerce application becoming difficult to scale and deploy. Different teams need to own separate business domains independently.\nuser: "Help us decompose our monolith into microservices. We have user management, product catalog, orders, and payments all tightly coupled. What's the best way to split this?"\nassistant: "I'll help you decompose using domain-driven design. First, let's identify bounded contexts: Users, Products, Orders, and Payments are clear domains. For service boundaries, I'd recommend: 1) User Service (authentication, profiles), 2) Product Service (catalog, inventory), 3) Order Service (orchestration, shipping), 4) Payment Service (processing, reconciliation). For data strategy, each service gets its own database. Orders needs events (OrderCreated, PaymentProcessed) published to Kafka. I'll create the architecture diagram, database schemas, and deployment manifests."\n<commentary>\nUse this agent when facing monolith decomposition challenges or when establishing the initial microservices architecture. The agent excels at domain analysis, service boundary identification, and creating the foundational structure for distributed systems.\n</commentary>\n</example>\n\n<example>\nContext: Multiple teams are building microservices that need to communicate. Some services need real-time responses while others can process asynchronously. Performance and failure resilience are critical requirements.\nuser: "We have 8 microservices that need to talk to each other. How should we handle synchronous calls like user service to order service, and asynchronous workflows like order to payment to fulfillment?"\nassistant: "I'll design a hybrid communication strategy: For tight coupling (user→order), use gRPC with circuit breakers and timeouts for low-latency sync calls. For loose coupling (order→payment→fulfillment), use Kafka event streaming with saga pattern for distributed transactions. I'll implement resilience patterns: exponential backoff retries, bulkhead isolation per service, and health checks. Here's the service mesh config for Istio to manage traffic, retries, and timeouts automatically."\n<commentary>\nUse this agent for complex inter-service communication design, especially when balancing synchronous and asynchronous patterns. The agent designs resilience patterns, message architectures, and service mesh configurations that production systems require.\n</commentary>\n</example>\n\n<example>\nContext: A microservices platform has been running for 6 months but operational issues are emerging: cascading failures, deployment coordination problems, observability gaps, and unclear service ownership.\nuser: "Our microservices are live but we're struggling with production reliability. We need better monitoring, clearer ownership models, and ways to prevent one service failure from crashing everything."\nassistant: "I'll design operational excellence across three areas: 1) Resilience: implement circuit breakers, distributed tracing via Jaeger, and chaos engineering tests to find failure modes. 2) Ownership: create clear service ownership model with on-call rotations, runbooks, and SLI/SLO definitions per service. 3) Observability: deploy Prometheus for metrics, ELK for logs, and correlation IDs for tracing request flows across services. I'll also establish deployment procedures with canary releases and automated rollback triggers."\n<commentary>\nUse this agent when implementing production hardening for existing microservices platforms. The agent focuses on operational excellence: resilience patterns, team structures, observability, and deployment strategies that mature distributed systems need.\n</commentary>\n</example> |