| クラウド※ | AWS |
|---|---|
| なぜそのクラウドサービスなのか? | レビューでいただいたご意見を踏まえ、クラウド構成を再検討した結果、AWSを採用することにしました。 |
| アプリに必要なインフラをAWS上に集約することで、構成・権限・コストを一元管理しやすいと考えたためです。 | |
| また、AWSにはアプリの構築に必要なサービスが揃っており、複数のクラウドサービスに分散させる必要性が低いと判断しました。コスト面についても、レビューでいただいたご意見を参考に、AWS自体を避けるのではなく、事前の料金見積もりや予算設定、アラートなどを活用して管理する方針としました。 | |
| バックエンド | ・フレームワーク:Hono※ |
| ・言語:TypeScript | |
| フロントエンド | ・フレームワーク:Next.js |
| ・言語:TypeScript | |
| ・CSSフレームワーク:Tailwind CSS | |
| 生成AI(LLM)※ | ・サービス:Amazon Bedrock |
| ・モデル:Claude Haiku 4.5 | |
| ・呼び出し方法:Converse API | |
| データベースエンジン | 本番環境 |
| サービス:Amazon RDS | |
| DBエンジン:PostgreSQL | |
| ローカル環境 | |
| 実行環境:Docker Compose | |
| DBエンジン:PostgreSQL | |
| ORM(共通) | |
| Drizzle ORM | |
| マイグレーション(共通) | |
| Drizzle Kit | |
| なぜそのDBエンジンなのか? | AWS上でデータベースを含めたインフラを一元管理したいと考え、Amazon RDS for PostgreSQLを採用しました。 |
| Amazon RDSを利用することで、PostgreSQLの環境構築やバックアップなどの運用負荷を抑えながら、マネージドサービスとしてデータベースを利用できるためです。 | |
| また、今回のアプリではユーザー情報や分析履歴などの関連性のあるデータを扱うため、リレーショナルデータベースであるPostgreSQLが適していると判断しました。 | |
| 構成図 | 下記の構成図(アーキテクチャー図)参照 |
※Honoを選定した理由
生成AIには、Amazon Bedrockで提供されているClaude Haiku 4.5を採用しました。
AWSを利用する方針としたため、生成AIについてもAmazon Bedrockを利用することで AWS上で構成やコストを一元管理しやすいと考えました。
今回のアプリでは、ユーザーが入力した文章の分析・分類とフィードバックの生成が主な用途となるため、処理速度・コスト・性能のバランスを考慮してClaude Haiku 4.5を選定しました。
呼び出し方法にはConverse APIを使用します。共通のインターフェースでBedrock上の対応モデルを利用できるため、将来的にモデルを変更する場合にも対応しやすいと考えています。
※AWSサービス構成
| 役割 | AWSサービス | 用途 |
|---|---|---|
| フロントエンド | AWS Amplify Hosting | Next.jsのホスティング・デプロイ |
| API | Amazon API Gateway | Next.jsからHonoへのAPIリクエスト受付 |
| バックエンド | AWS Lambda | Hono / TypeScriptを実行 |
| ネットワーク | Amazon VPC | LambdaやRDSを配置する |
| ネットワーク環境を構築 | ||
| プライベート接続 | VPC Endpoint | LambdaからBedrockや |
| Secrets Managerへ | ||
| プライベートに接続 | ||
| データベース | Amazon RDS for PostgreSQL | ユーザー情報・分析履歴などを |
| 保存 | ||
| 生成AI | Amazon Bedrock | Claude Haiku 4.5を利用 |
| 認証 | Amazon Cognito | ログイン・ユーザー認証 |
| DNS・ドメイン管理 | Amazon Route 53 | 独自ドメインのDNS管理・アプリへのルーティング |
| 監視・ログ | Amazon CloudWatch | Lambda等のログ・エラー監視 |
| 機密情報 | AWS Secrets Manager | DB接続情報などの機密情報を管理 |
| コスト管理 | AWS Budgets | 予算設定・コスト超過の通知 |
| 権限管理 | AWS IAM | 各AWSサービスへのアクセス権限を管理 |
<aside> ⚠️
予算の目安 20〜30名程度の利用を想定し、月額数千円程度のコストを見込んでいます。 想定外のコストを防ぐため、AWS Budgetsによる予算管理を行います。
</aside>

<aside> 💡
【補足】Availability Zone 1c と DBサブネットグループを作成した理由
・RDS を VPC 内に作成する際は「DBサブネットグループ」の指定が必須となっており、AWS の仕様上、2つ以上の AZ のサブネットを含める必要があります
(シングルAZ構成の場合も同様です)。
・そのため、AZ 1c にも DB 用のプライベートサブネットを作成し、1a のサブネットと合わせて DBサブネットグループに登録しています。
・RDS インスタンスは 1a のみに配置し、1c のサブネットにはリソースを配置しません。サブネット自体には料金が発生しないため、コストへの影響はありません。
</aside>