レイヤードアーキテクチャ
概要
- 最も一般的なアーキテクチャスタイル
- このアーキテクチャ内の各コンポーネントは、水平方向のレイヤーとして編成される
- 各レイヤーは、アプリケーション内で特定の役割を果たす
主な特徴
- コストが低くシンプルな構成で理解しやすい
- 小規模でシンプルなアプリケーションやWEBサイトに適する
- 大規模で複雑なアプリケーションには向かず、弾力性、スケーラビリティは低い
- 時間が限られているとき、要件が定まっていないとき等にはレイヤードアーキテクチャは優れた選択肢の一つとなる
パイプラインアーキテクチャ
概要
- パイプとフィルターから構成される
- パイプ:あるソースからの入力を他のソースに出力する
- フィルター:入力ソースを加工する。1のフィルターで1つのタスクのみ行う
主な特徴
- シンプルな一方通行の処理を進めることに向いている
- コストが低く、シンプルな構成
- 弾力性、スケーラビリティは低い
マイクロカーネルアーキテクチャ
概要
- コアシステムとプラグインの2つのコンポーネントで構成される
-コアシステム:システムを実行するのに必要な最低限の機能
-プラグイン:コアシステムを強化、拡張するための特殊な処理や追加機能
主な特徴
- コストが低く、シンプルな構成
- 弾力性、スケーラビリティは低い
- ドメインによる分割と技術による分割の両方が可能なアーキテクチャ
- プラグインコンポーネントの切り出しにより、通常よりテストが容易
- ユーザーによってカスタマイズされるツール等によく使用されるアーキテクチャ(VSCode, Chromeなど)
サービスベースアーキテクチャ
概要
- 最も実用的なアーキテクチャスタイルの一つ
- 分散型のレイヤード構造
- このアーキテクチャにおけるサービスとは、粗い粒度のアプリケーションの一部(ドメインサービス)である
- 各ドメインサービス内で、APIファザード層、ビジネス層、永続化層等で構成される、レイヤードアーキテクチャの形をとる
- 多くのトポロジーが存在し、最も柔軟性の高いアーキテクチャスタイルの一つとなっている
主な特徴
- ドメインによって分割されたアーキテクチャ
- 耐障害性、可用性、テスト容易性等、運用・保守の観点で高い評価
- コストが高すぎず、構成が複雑すぎず、全体的にバランスの良いアーキテクチャと言える
イベント駆動アーキテクチャ
概要
- 非同期でイベント(リクエスト)を受信して処理する
- 単体でも、他のアーキテクチャスタイルと組み合わせても使用できる
- メディエータートポロジとブローカートポロジの2タイプがある
ブローカートポロジ
- 軽量メッセージブローカーを介して、ブロードキャスト方式でイベント処理コンポーネントに分散させる
- イベントプロセッサーは非同期的に処理を行い、各プロセッサーが独立して動作する。これにより、高いスケーラビリティ、応答性、パフォーマンスを実現する
- 単純なイベント処理フローを持ち、複数イベントの調整を必要としない場合に便利
- エラー処理やワークフロー制御が難しいという問題点がある
メディエータートポロジ
- ブローカートポロジーの欠点を解消するためのアーキテクチャ
- イベントメディエーターで複数のイベントプロセッサーの調整を必要とするイベントのワークフローを管理・制御する
- パフォーマンスやスケーラビリティは、ブローカートポロジの方が優れている(悪くはない)
主な特徴
- パフォーマンス、スケーラビリティ、耐障害性に優れている
- 動的なイベントフローにより、テスト容易性が低く、また複雑になっている
マイクロサービスアーキテクチャ
概要
- 近年人気を集めるアーキテクチャスタイル
- このアーキテクチャでは、各サービスが単一目的に特化し、小さな独立した構成要素で構成される
- データベースや他の依存コンポーネントを含め、各サービスが完全に独立して動作可能
主な特徴
- スケーラビリティ、弾力性、進化性に優れている
- 分散アーキテクチャとしての課題(サービス間通信を多用すると、耐障害性や信頼性に影響が生じる)がある
- ただし、そういった問題の多くは、スケーリングや冗長性によって解決可能
- 使用するネットワークの量から、パフォーマンスについても問題が生じやすいため、工夫が必要となる





