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(進化的設計) - サービス境界は変更時の複雑さに基づいて設定され、時間とともに柔軟に調整される想定で設計する