マイクロサービスアーキテクチャ
分散アーキテクチャを形成するアーキテクチャスタイル
スケーラビリティ、弾力性、進化性の点で評価されている
Martin Fowler と James Lewis による https://martinfowler.com/articles/microservices.html のブログエントリによってこの名前が一気に普及した
哲学的基礎
継続的デリバリーの開発プラクティス
境界づけられたコンテキスト (Bounded context) による論理的分割
ドメイン駆動設計 (DDD) の考え方に影響を受けている
物理的な境界づけられたコンテキストによるドメインの分離により、問題領域の理解に焦点を当てる
サイドカーパターンやサービスディスカバリが使われる
フロントエンドについて
理想的にはユーザーインターフェイス (UI) も分離したいが、web アプリケーションでは困難だった
2 つのフロントエンドのスタイル
モノリシックユーザーインターフェイス
マイクロフロントエンド
コレオグラフィとオーケストレーション
トランザクションとサーガ (トランザクションサーガ)
『マイクロサービスアーキテクチャ (Newman)』 に記された 7 つの原則に従う
ビジネスドメインに沿ったモデル化
実装詳細の隠蔽
自動化の文化 : デプロイメントパイプラインによる厳密なテストや継続的デリバリーの活用
高度な分散化 : できるだけ結合を減らすために無共有アーキテクチャを形成する
独立したデプロイ
障害の分離 : DevOps 向けのベストプラクティス (サーキットブレーカーや隔壁など) が一般的に使われる
リアクティブ宣言に準拠
2 種類の結合をもつ
統合 : 情報をやり取りするためにお互いを呼び合う
サービステンプレート
マイクロサービスの設計については、『マイクロサービスパターン 実践的システムデザインのためのコード解説』 がまとまっている
関連
マイクロサービス
マイクロサービスにおける課題
参考文献
ソフトウェアアーキテクチャの基礎 ―― エンジニアリングに基づく体系的アプローチ
進化的アーキテクチャ ―― 絶え間ない変化を支える
はじめての設計をやり抜くための本 第 2 版