[章番号]: アーキテクチャ設計書
このテンプレートの使い方
このファイルは、プロジェクト全体の技術的なアーキテクチャを定義するためのテンプレートです。 通常、このドキュメントはプロジェクトの初期段階で作成されます。 詳しい使い方は「設計仕様の書き方ガイド」を参照してください。
1. はじめに
1.1. 目的
1.2. 対象範囲
2. 設計方針と原則
- [例: レイヤー化アーキテクチャ]: 関心の分離を徹底し、各レイヤーは明確な責務を持つ。
- [例: SOLID原則の適用]: 保守性と拡張性の高いコードベースを目指す。
- [例: ドメイン駆動設計の概念適用]: ビジネスロジックを中心としたモデルを構築する。
- [例: セキュリティバイデザイン]: 設計段階からセキュリティを組み込む。
3. 全体構成(アーキテクチャ図)
3.1. ハイレベルアーキテクチャ
graph TD
subgraph "ユーザー"
A[Webブラウザ / モバイルアプリ]
end
subgraph "本システム (Backend Services)"
B["API Gateway (Nginx/Envoy)"] --> C{User Service}
B --> D{Product Service}
B --> E{Order Service}
C --> F["Database (PostgreSQL)"]
D --> F
E --> F
C --> G["Cache (Redis)"]
D --> G
E --> G
C --> H["Message Broker (Kafka)"]
D --> H
E --> H
end
subgraph "外部システム"
H --> I[Payment Gateway]
H --> J[Notification Service]
end
A --> B
3.2. レイヤー構成
- UI層: ユーザーとのインターフェースを担当。Webブラウザやモバイルアプリなど、クライアントサイドの表示と操作を担う。
- API Gateway層: 外部からのリクエストを受け付け、適切なバックエンドサービスにルーティングする。認証・認可、レートリミット、SSL終端などの機能を提供する。
- アプリケーション層 (サービス層): ユースケースを実現し、ドメイン層とインフラ層を調整する。トランザクション管理や複数のドメインエンティティにまたがるビジネスロジックを調整する。
- ドメイン層: ビジネスルールとロジックの核心部分。ドメインエンティティ、値オブジェクト、ドメインサービス、リポジトリインターフェースなどが含まれる。ビジネスロジックの整合性を保証する。
- インフラストラクチャ層: データベースアクセス、外部API連携、メッセージング、キャッシュなど、技術的な詳細を実装する。ドメイン層で定義されたリポジトリインターフェースの実装などが含まれる。
4. 技術スタック
| 分類 | 技術名 | バージョン | 採用理由 |
|---|---|---|---|
| 言語 | C# | 12.0 | 非同期処理に優れ、静的型付けによる堅牢な開発が可能。 |
| フレームワーク | .NET | 8.0 | 高性能かつクロスプラットフォームで動作するため。 |
| データベース | PostgreSQL | 16 | 信頼性が高く、豊富な機能(JSONBなど)を持つため。 |
| クラウド | AWS | - | スケーラビリティと豊富なマネージドサービスのため。 |
| テスト | xUnit | 2.7 | .NETにおけるデファクトスタンダードであり、シンプルなため。 |