microservices-architecture logo

microservices-architecture

microservices architecture

SKILL.md

Full skill instructions

Microservices Architecture

Table of Contents

Overview

Comprehensive guide to designing, implementing, and maintaining microservices architectures. Covers service decomposition, communication patterns, data management, deployment strategies, and observability for distributed systems.

When to Use

  • Designing new microservices architectures
  • Decomposing monolithic applications
  • Implementing service-to-service communication
  • Setting up API gateways and service mesh
  • Implementing service discovery
  • Managing distributed transactions
  • Designing inter-service data consistency
  • Scaling independent services

Quick Start

Minimal working example:

Bounded Contexts:
┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│  Order Service  │  │  User Service   │  │ Payment Service │
│                 │  │                 │  │                 │
│ - Create Order  │  │ - User Profile  │  │ - Process Pay   │
│ - Order Status  │  │ - Auth          │  │ - Refund        │
│ - Order History │  │ - Preferences   │  │ - Transactions  │
└─────────────────┘  └─────────────────┘  └─────────────────┘

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Service Boundary DesignService Boundary Design
Communication PatternsCommunication Patterns
API Gateway PatternAPI Gateway Pattern
Service DiscoveryService Discovery
Data Consistency PatternsData Consistency Patterns
Service Mesh (Istio)Service Mesh (Istio)

Best Practices

✅ DO

  • Design services around business capabilities
  • Use asynchronous communication where possible
  • Implement circuit breakers for resilience
  • Use API gateway for cross-cutting concerns
  • Implement distributed tracing
  • Use service mesh for service-to-service communication
  • Design for failure (chaos engineering)
  • Implement health checks for all services
  • Use correlation IDs for request tracking
  • Version your APIs
  • Implement proper monitoring and alerting
  • Use event-driven architecture for loose coupling
  • Implement idempotent operations
  • Use database per service pattern

❌ DON'T

  • Share databases between services
  • Create overly granular services (nanoservices)
  • Use distributed transactions (two-phase commit)
  • Ignore network latency and failures
  • Share domain models between services
  • Deploy all services as one unit
  • Hardcode service URLs
  • Forget to implement authentication/authorization
  • Use synchronous calls for long-running operations
  • Ignore backward compatibility
  • Skip monitoring and logging
  • Create circular dependencies between services