9章基礎
アーキテクチャスタイルやアーキテクチャパターンの詳細を知りたい気持ちはわかるが、まずは基本的な定義について説明し、後の章を理解するための適切なコンテキストを設定する必要がある。
9.1 スタイルとパターン
最初に、混同されやすいアーキテクチャスタイルとアーキテクチャパターンの違いを整理しておこう。
アーキテクチャスタイルは、次に挙げるようなアーキテクチャのさまざまな特徴を記述する。
- コンポーネントトポロジー
- アーキテクチャスタイルは、コンポーネントとその依存物の編成方法を定義する。たとえば、レイヤードアーキテクチャは技術的役割によってコンポーネントをレイヤー化して編成するのに対し、モジュラーモノリスはドメインを中心にコンポーネントを編成する(この違いについては、「9.3 アーキテクチャの分割」で詳しく説明する)。
- 物理アーキテクチャ
- 多くの場合、アーキテクチャスタイルは、物理アーキテクチャのタイプをモノリシックまたは分散型に決定する。たとえば、モジュラーモノリスは通常、単一のデータベースを持つモノリシックアーキテクチャであるのに対し、イベント駆動アーキテクチャは常に分散型である。
- デプロイメント
- システムの粒度とデプロイ頻度は、アーキテクチャスタイルに関連付けられることが多い。チームは通常、モノリシックアーキテクチャを単一のリレーショナルデータベースと共にまとめてデプロイする。対照的に、マイクロサービスのような、自動インテグレーション、自動プロビジョニング、場合によっては自動デプロイメントを特徴とする、高度にアジャイルな分散アーキテクチャは、一般的に、より速いペースで、パーツごとにデプロイされる。
- 通信スタイル
- アーキテクチャスタイルは、コンポーネント間の通信方法も決定する。モノリシックアーキテクチャでは、モノリス内でメソッド呼び出しを行うことができるのに対し、分散アーキテクチャでは、RESTやメッセージキューなどのネットワークプロトコルを介して通信する。 ...