アーキテクチャ設計

クラウド※ 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(LLM)の選定理由

※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>

構成図(アーキテクチャー図)

2026-09-23 18.57の画像.png

<aside> 💡

【補足】Availability Zone 1c と DBサブネットグループを作成した理由

・RDS を VPC 内に作成する際は「DBサブネットグループ」の指定が必須となっており、AWS の仕様上、2つ以上の AZ のサブネットを含める必要があります

(シングルAZ構成の場合も同様です)。

・そのため、AZ 1c にも DB 用のプライベートサブネットを作成し、1a のサブネットと合わせて DBサブネットグループに登録しています。

・RDS インスタンスは 1a のみに配置し、1c のサブネットにはリソースを配置しません。サブネット自体には料金が発生しないため、コストへの影響はありません。

</aside>

これまでの内容

アプリ案

機能一覧