

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# での六角形アーキテクチャの構築 AWS
<a name="welcome"></a>

*Furkan Oruc、Dominik Goby、Darius Kunce、Michal Ploski、Amazon Web Services (AWS)*

2022 年 6 月 ([ドキュメント履歴](doc-history.md))

このガイドでは、ソフトウェアアーキテクチャを開発するためのメンタルモデルとパターンのコレクションについて説明します。これらのアーキテクチャは、製品の導入が進むにつれて、組織全体で簡単に維持、拡張、スケーリングできます。Amazon Web Services (AWS) などのクラウドハイパースケーラーは、中小企業や大企業が新しいソフトウェア製品を革新および作成するための構成要素を提供します。これらの新しいサービスと機能の導入の急速なペースにより、ビジネスステークホルダーは、開発チームが新しい最小実行可能製品 (MVPs) のプロトタイプを迅速に作成することを期待し、新しいアイデアをできるだけ早くテストして検証できます。多くの場合、これらの MVPsは採用され、エンタープライズソフトウェアエコシステムの一部になります。これらの MVPs、チームは [SOLID の原則](https://www.freecodecamp.org/news/solid-principles-explained-in-plain-english/)や単体テストなどのソフトウェア開発ルールやベストプラクティスを中止することがあります。このアプローチは開発を高速化し、市場投入までの時間を短縮することを前提としています。ただし、基盤モデルとソフトウェアアーキテクチャのフレームワークをすべてのレベルで作成できない場合、製品の新機能を開発することは困難または不可能です。確実性の欠如や要件の変化も、開発プロセス中にチームを遅らせる可能性があります。

このガイドでは、低レベルの六角形アーキテクチャから高レベルのアーキテクチャと組織の分解まで、ドメイン駆動型設計 (DDD) を使用してこれらの課題に対処する、提案されたソフトウェアアーキテクチャについて説明します。DDD は、ビジネスの複雑さを管理し、新機能の開発に応じてエンジニアリングチームを拡張するのに役立ちます。ユビキタス言語を使用することで、ビジネス関係者と技術関係者を*ドメイン*と呼ばれるビジネス上の問題に合わせます。六角形アーキテクチャは、*境界コンテキスト*と呼ばれる非常に特定のドメインにおけるこのアプローチの技術的なイネーブラーです。境界コンテキストは、ビジネス問題の非常にまとまりがあり、疎結合されたサブエリアです。複雑さに関係なく、すべてのエンタープライズソフトウェアプロジェクトに六角形アーキテクチャを採用することをお勧めします。

六角形アーキテクチャは、エンジニアリングチームが最初にビジネス上の問題を解決することを奨励しますが、従来のレイヤードアーキテクチャはエンジニアリングの焦点をドメインから遠ざけて、最初に技術的な問題を解決します。さらに、ソフトウェアが六角形アーキテクチャに従う場合、[テスト駆動型の開発アプローチ](http://www.jamesshore.com/v2/books/aoad1/test_driven_development)を採用する方が簡単です。これにより、デベロッパーがビジネス要件をテストするために必要なフィードバックループが短縮されます。最後に、[コマンドとコマンドハンドラー](https://www.cosmicpython.com/book/chapter_10_commands.html)を使用することは、SOLID から単一の責任とオープンクローズの原則を適用する方法です。これらの原則に従うことで、プロジェクトに取り組む開発者やアーキテクトが簡単にナビゲートして理解できるコードベースが生成され、既存の機能に重大な変更を加えるリスクが軽減されます。

このガイドは、ソフトウェア開発プロジェクトに六角形アーキテクチャと DDD を採用することの利点を理解したいソフトウェアアーキテクトやデベロッパーを対象としています。これには、六角形アーキテクチャをサポートする 上のアプリケーションのインフラストラクチャ AWS を設計する例が含まれています。実装例については、AWS 規範ガイダンスウェブサイト[の「 を使用して六角形アーキテクチャで Python プロジェクト AWS Lambda](https://docs.aws.amazon.com//prescriptive-guidance/latest/patterns/structure-a-python-project-in-hexagonal-architecture-using-aws-lambda.html)を構築する」を参照してください。