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