microservices-patterns
について
このClaudeスキルは、サービス境界の設計、イベント駆動型通信、耐障害性に関するパターンを提供することで、開発者がマイクロサービスアーキテクチャを設計するのを支援します。分散システムの構築、モノリスの分解、マイクロサービスの実装に有用です。本スキルは、サービス分解、サービス間通信、分散データ管理といった核心概念を網羅しています。
クイックインストール
Claude Code
推奨/plugin add https://github.com/lifangda/claude-pluginsgit clone https://github.com/lifangda/claude-plugins.git ~/.claude/skills/microservices-patternsこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Microservices Patterns
Master microservices architecture patterns including service boundaries, inter-service communication, data management, and resilience patterns for building distributed systems.
When to Use This Skill
- Decomposing monoliths into microservices
- Designing service boundaries and contracts
- Implementing inter-service communication
- Managing distributed data and transactions
- Building resilient distributed systems
- Implementing service discovery and load balancing
- Designing event-driven architectures
Core Concepts
1. Service Decomposition Strategies
By Business Capability
- Organize services around business functions
- Each service owns its domain
- Example: OrderService, PaymentService, InventoryService
By Subdomain (DDD)
- Core domain, supporting subdomains
- Bounded contexts map to services
- Clear ownership and responsibility
Strangler Fig Pattern
- Gradually extract from monolith
- New functionality as microservices
- Proxy routes to old/new systems
See detailed guide: Service Decomposition
2. Communication Patterns
Synchronous (Request/Response)
- REST APIs
- gRPC
- GraphQL
Asynchronous (Events/Messages)
- Event streaming (Kafka)
- Message queues (RabbitMQ, SQS)
- Pub/Sub patterns
See detailed patterns: Communication Patterns
3. Data Management
Database Per Service
- Each service owns its data
- No shared databases
- Loose coupling
Saga Pattern
- Distributed transactions
- Compensating actions
- Eventual consistency
See detailed patterns: Data Management
4. Resilience Patterns
Circuit Breaker
- Fail fast on repeated errors
- Prevent cascade failures
Retry with Backoff
- Transient fault handling
- Exponential backoff
Bulkhead
- Isolate resources
- Limit impact of failures
See detailed implementations: Resilience Patterns
Quick Start
Basic Service Structure
from fastapi import FastAPI
app = FastAPI()
class OrderService:
"""Handles order lifecycle."""
async def create_order(self, order_data: dict) -> Order:
order = Order.create(order_data)
# Publish event for other services
await self.event_bus.publish(
OrderCreatedEvent(
order_id=order.id,
customer_id=order.customer_id,
items=order.items,
total=order.total
)
)
return order
@app.post("/orders")
async def create_order(order_data: dict):
service = OrderService()
return await service.create_order(order_data)
API Gateway Pattern
class APIGateway:
"""Central entry point for all client requests."""
async def call_order_service(self, path: str, method: str = "GET", **kwargs):
response = await self.http_client.request(
method,
f"{self.order_service_url}{path}",
**kwargs
)
return response.json()
async def create_order_aggregate(self, order_id: str) -> dict:
"""Aggregate data from multiple services."""
order, payment, inventory = await asyncio.gather(
self.call_order_service(f"/orders/{order_id}"),
self.call_payment_service(f"/payments/order/{order_id}"),
self.call_inventory_service(f"/reservations/order/{order_id}"),
return_exceptions=True
)
return {"order": order, "payment": payment, "inventory": inventory}
See detailed patterns: API Gateway
Service Decomposition Patterns
Break monoliths into microservices using business capabilities and DDD principles.
See detailed guide: Service Decomposition
Communication Patterns
Synchronous Communication
REST APIs with retry logic and timeouts.
from tenacity import retry, stop_after_attempt, wait_exponential
class ServiceClient:
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=2, max=10)
)
async def get(self, path: str, **kwargs):
response = await self.client.get(f"{self.base_url}{path}", **kwargs)
response.raise_for_status()
return response.json()
See detailed patterns: Communication Patterns
Asynchronous Event-Driven
Event bus with Kafka for decoupled communication.
async def publish_event(event: DomainEvent):
await event_bus.publish(event)
async def subscribe_to_events(topic: str, handler: callable):
await event_bus.subscribe(topic, handler)
See detailed implementation: Event-Driven Architecture
Data Management Patterns
Saga Pattern
Manage distributed transactions with compensating actions.
class OrderFulfillmentSaga:
"""Orchestrated saga for order fulfillment."""
async def execute(self, order_data: dict) -> SagaResult:
try:
for step in self.steps:
result = await step.action(context)
if not result.success:
await self.compensate(completed_steps, context)
return SagaResult(status=SagaStatus.FAILED)
completed_steps.append(step)
return SagaResult(status=SagaStatus.COMPLETED)
except Exception:
await self.compensate(completed_steps, context)
See detailed implementation: Saga Pattern
Resilience Patterns
Circuit Breaker
Prevent cascade failures by failing fast.
class CircuitBreaker:
async def call(self, func: Callable, *args, **kwargs) -> Any:
if self.state == CircuitState.OPEN:
raise CircuitBreakerOpenError("Circuit breaker is open")
try:
result = await func(*args, **kwargs)
self._on_success()
return result
except Exception:
self._on_failure()
raise
See detailed implementations: Resilience Patterns
Best Practices
- Service Boundaries: Align with business capabilities
- Database Per Service: No shared databases
- API Contracts: Versioned, backward compatible
- Async When Possible: Events over direct calls
- Circuit Breakers: Fail fast on service failures
- Distributed Tracing: Track requests across services
- Service Registry: Dynamic service discovery
- Health Checks: Liveness and readiness probes
See detailed guide: Best Practices
Common Pitfalls
- Distributed Monolith: Tightly coupled services
- Chatty Services: Too many inter-service calls
- Shared Databases: Tight coupling through data
- No Circuit Breakers: Cascade failures
- Synchronous Everything: Tight coupling, poor resilience
- Premature Microservices: Starting with microservices
- Ignoring Network Failures: Assuming reliable network
- No Compensation Logic: Can't undo failed transactions
See detailed solutions: Common Pitfalls
GitHub リポジトリ
関連スキル
content-collections
メタThis skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.
creating-opencode-plugins
メタThis skill provides the structure and API specifications for creating OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It offers implementation patterns for JavaScript/TypeScript modules that intercept and extend the AI assistant's lifecycle. Use it when you need to build event-driven plugins for monitoring, custom handling, or extending OpenCode's capabilities.
polymarket
メタThis skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.
cloudflare-turnstile
メタThis skill provides comprehensive guidance for implementing Cloudflare Turnstile as a CAPTCHA-alternative bot protection system. It covers integration for forms, login pages, API endpoints, and frameworks like React/Next.js/Hono, while handling invisible challenges that maintain user experience. Use it when migrating from reCAPTCHA, debugging error codes, or implementing token validation and E2E tests.
