Kush's Wiki

マイクロサービスの9つの特徴

commited date: 2025-12-30

#Software Design

Microservicesのブログの中で説明されたマイクロサービスについての9つの特徴

9つの特徴

1. Componentization via Services(サービスによるコンポーネント化) - サービスを独立してデプロイ・置き換え可能なソフトウェアユニットとして扱う

2. Organized around Business Capabilities(ビジネス機能による組織化) - 技術層ではなくビジネス能力を中心にチームを編成し、UIからデータベースまで一つのチームが担当する

3. Products not Projects(プロジェクトではなくプロダクト志向) - “開発したものを自分たちで運用する“という哲学のもと、チームが長期的責任を持つ

4. Smart endpoints and dumb pipes(スマートエンドポイント、ダムパイプ) - 複雑なロジックはサービス内に置き、通信機構(HTTP、メッセージング)はシンプルに保つ

5. Decentralized Governance(分散ガバナンス) - 各チームが独立してプログラミング言語やデータベース技術を選択でき、中央集約的な標準化を避ける

6. Decentralized Data Management(分散データ管理) - 各サービスが独自のデータベースを管理し、結果整合性を活用する

7. Infrastructure Automation(インフラストラクチャ自動化) - 継続的デリバリーと自動デプロイメントを支援するツールやパイプラインへの投資を重視する

8. Design for failure(障害設計) - サービス障害に対応するため、回路ブレーカーパターンなどを使い、システムの耐障害性を確保する

9. Evolutionary Design(進化的設計) - サービス境界は変更時の複雑さに基づいて設定され、時間とともに柔軟に調整される想定で設計する