ヘキサゴナルアーキテクチャとは?
ヘキサゴナルアーキテクチャは、業務のコアを中心にアプリケーションを構成し、ユーザーインターフェース、データベース、外部サービスなどの詳細からコアを切り離します。コアはポートとアダプターを介してそれらとつながるため、ポート&アダプター(Ports & Adapters)とも呼ばれます。
目的は、外部の技術が変わっても業務ルールを安定させることです。六角形はアプリケーションの境界を表しており、構成要素が六つ必要という意味ではありません。
ヘキサゴナルアーキテクチャは、業務のコアを中心にアプリケーションを構成し、ユーザーインターフェース、データベース、外部サービスなどの詳細からコアを切り離します。コアはポートとアダプターを介してそれらとつながるため、ポート&アダプター(Ports & Adapters)とも呼ばれます。
目的は、外部の技術が変わっても業務ルールを安定させることです。六角形はアプリケーションの境界を表しており、構成要素が六つ必要という意味ではありません。
コアは何を行う必要があるかを把握し、アダプターは通信に使う技術を扱います。アプリケーションの起動コードが、適切なアダプターをコアに接続します。
顧客が注文すると、HTTPアダプターは受信データを注文作成操作への呼び出しに変換します。コアは注文を検証し、合計を計算して、永続化ポートを通じて保存を要求します。設定されたデータベースアダプターがクエリを実行し、結果を返します。
計算ルールはコア内にあり、HTTP処理のコードもSQLも含みません。このルールをテストする際は、開発者がデータをメモリに保存するアダプターを渡すことで、実際のデータベースに接続せずにテストを実行できます。
コマンドラインの注文ツールを追加する場合、別の入力アダプターを通じて同じ注文作成操作を呼び出せます。開発者は、新しいツールのために計算ルールを書き直す必要はありません。
ヘキサゴナルアーキテクチャは、業務ルールを十分にテストする必要があるアプリケーション、複数の入口を持つアプリケーション、外部連携が頻繁に変わるアプリケーションに適しています。モノリス内でも、個々のマイクロサービス内でもコードの整理に使えます。アプリケーションをサービスに分割することは必須ではありません。
ジュニアからシニアまで、詳細な回答付きのIT面接質問ライブラリ。
寄付する