O’REILLY Learning「マイクロサービスアーキテクチャ 第2版」1〜2
https://learning.oreilly.com/library/view/maikurosabisuakitekutiya-di-2ban/9784814400010/
1章 マイクロサービスとは
MSA:マイクロサービスアーキテクチャ
「マイクロサービス」は、ビジネスドメインを中心にモデル化された、独立してリリース可能なサービス
SOA:サービス指向アーキテクチャ
ヘキサゴナルアーキテクチャ
https://alistair.cockburn.us/hexagonal-architecture/
独立デプロイ可能性
→単純な考え方ではありますが、実行するのは複雑
人々が最も苦労していると思われることの1つは、マイクロサービスでは共有データベースを避けるべきだ、という考え方。
単一プロセスモノリス
モジュラーモノリス
分散モノリス
→「分散モノリス」は、複数のサービスから構成されているものの、何らかの理由でシステム全体をまとめてデプロイする必要がある。
マイクロサービスの利点は多種多様
・技術の異種性
・堅牢性
・スケーリング
・デプロイの容易性
・組織との連携
・合成可能性
マイクロサービスの課題
・開発者体験
・技術の過負荷
・コスト
・レポート
・監視とトラブルシューティング
・セキュリティ
・テスト
・遅延
・データ一貫性
マイクロサービスはアーキテクチャアプローチの「1つ」であって、「唯一」のアプローチではない。
→これは何にでもいえること
2章 マイクロサービスのモデル化
本質的に、マイクロサービスは、モジュラー分解の別の形式
コンスタンチンの法則
凝集度が高く、結合度が低い場合に、構造は安定する。
凝集は、境界の「内側」での物事の間の関係
結合は、境界を「超えた」物事の間の関係
マイクロサービスベースのシステムは、処理を行うために、複数のマイクロサービスの連携に依存
しかしそれでも、それを最小限に抑えておきたい
結合
・ドメイン結合
・パススルー結合
→最も問題のある結合形式の1つ
・共通結合
・内容結合
→内容結合と共通結合の違いは、明確ではない。
DDD(Domain-Driven Design):ドメイン駆動設計
・ユビキタス言語
・アグリゲート(集約)
・境界づけられたコンテキスト(コンテキスト境界)