java-microservices について
Spring Cloud と分散システムのパターンを扱う、Java マイクロサービス開発向けのスキルです。サービス間通信、耐障害性、メッセージング、可観測性の実装とトラブルシューティングを支援します。
主な機能
- 01Spring Cloud のサービス検出とゲートウェイ
- 02Resilience4j による耐障害性パターン
- 03Kafka とイベント駆動アーキテクチャ
- 04分散トレーシング、メトリクス、ログ相関
- 05実装例とトラブルシューティング
活用シーン
- 01Spring Cloud マイクロサービスの設計
- 02サービスへのサーキットブレーカーとリトライの追加
- 03Kafka を使ったイベント駆動フローの構築
- 04リクエスト追跡とサービス障害の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-java --skill java-microservicesインストール後、Claude Code で/java-microservicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/config.yamlmicroservices-checklist.yamlschema.jsonreferences/GUIDE.mdPATTERNS.mdscripts/validate.py詳細
Java マイクロサービススキル
Spring Cloud と分散システムのパターンを使用して、本番環境向けのマイクロサービスを構築します。
概要
このスキルでは、サービスディスカバリー、API ゲートウェイ、サーキットブレーカー、イベント駆動型通信、分散トレーシングなど、Spring Cloud を使用したマイクロサービスアーキテクチャを扱います。
このスキルを使用する場面
次のことが必要な場合に使用してください。
- マイクロサービスアーキテクチャを設計する
- サービス間通信を実装する
- レジリエンスパターンを設定する
- イベント駆動型メッセージングをセットアップする
- 分散トレーシングを追加する
対象トピック
Spring Cloud のコンポーネント
- Config Server(集中管理された設定)
- Service Discovery(Eureka、Consul)
- API Gateway(Spring Cloud Gateway)
- Load Balancing(Spring Cloud LoadBalancer)
レジリエンスパターン
- サーキットブレーカー(Resilience4j)
- バックオフ付きリトライ
- バルクヘッドによる分離
- レート制限
イベント駆動型アーキテクチャ
- Apache Kafka との統合
- Spring Cloud Stream
- Saga パターン
- イベントソーシングの基本
オブザーバビリティ
- 分散トレーシング(Micrometer)
- メトリクス(Prometheus)
- ログの相関付け
クイックリファレンス
// Saga with Choreography
@Component
public class OrderSagaListener {
@KafkaListener(topics = "order.created")
public void handleOrderCreated(OrderCreatedEvent event) {
inventoryService.reserve(event.getItems());
}
@KafkaListener(topics = "payment.failed")
public void handlePaymentFailed(PaymentFailedEvent event) {
// Compensating transaction
inventoryService.release(event.getOrderId());
orderService.cancel(event.getOrderId());
}
}
// Circuit Breaker Configuration
@Configuration
public class ResilienceConfig {
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> cbCustomizer() {
return factory -> factory.configureDefault(id ->
new Resilience4JConfigBuilder(id)
.circuitBreakerConfig(CircuitBreakerConfig.custom()
.failureRateThreshold(50)
.waitDurationInOpenState(Duration.ofSeconds(30))
.slidingWindowSize(10)
.build())
.build());
}
}
// API Gateway Routes
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("orders", r -> r
.path("/api/orders/**")
.filters(f -> f
.stripPrefix(1)
.circuitBreaker(c -> c.setName("order-cb"))
.retry(retry -> retry.setRetries(3)))
.uri("lb://order-service"))
.build();
}
}
オブザーバビリティの設定
management:
tracing:
sampling:
probability: 1.0
endpoints:
web:
exposure:
include: health,info,metrics,prometheus
logging:
pattern:
level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
よくあるパターン
Saga パターン
Order → Inventory → Payment → (Success | Compensate)
サーキットブレーカーの状態
CLOSED → (failures exceed threshold) → OPEN
OPEN → (wait duration) → HALF_OPEN
HALF_OPEN → (success) → CLOSED
HALF_OPEN → (failure) → OPEN
トラブルシューティング
よくある問題
| 問題 | 原因 | 解決策 |
|---|---|---|
| 連鎖障害 | サーキットブレーカーがない | Resilience4j を追加する |
| メッセージの消失 | ack がない | 手動 ack を有効にする |
| データの不整合 | 補償処理がない | Saga を実装する |
| サービスが見つからない | ディスカバリーの遅延 | ハートビートを調整する |
デバッグ用チェックリスト
□ Trace request (traceId)
□ Check circuit breaker state
□ Verify Kafka consumer lag
□ Review gateway routes
□ Monitor retry counts
使用方法
Skill("java-microservices")
関連スキル
java-spring-boot- Spring Cloudjava-docker- コンテナ化
コメント
Markdown 対応