プロジェクト概要
広告配信プラットフォームとの連携を中心に据えた、Web アプリケーションと AWS サーバーレス基盤の構築案件。クライアント名は非公開ですが、本格的なクリーンアーキテクチャを採用したインフラ事例として匿名でご紹介します。
課題
外部広告 API、社内 CMS (Notion)、LINE Webhook といった複数のデータソースを束ねる必要があり、それぞれの責務を明確に分離した拡張性の高いアーキテクチャが求められました。LocalStack を用いたオフラインテストや、ユースケース単位の Lambda 切り出しなど、保守性を強く意識した設計です。
解決方針
Next.js + MUI で構築した管理画面と、AWS CDK で IaC 化したサーバーレスバックエンドを分離。バックエンドはクリーンアーキテクチャ (domains / applications / interfaces / infrastructures) に従い、機能 (api / mq / webhook / batch) ごとに Lambda を切り出しました。Notion API でコンテンツを取得し、マークダウン化して提供しています。
アーキテクチャ
- Frontend: Next.js + React + MUI + MUI X (Charts / DataGrid) + SWR + react-hook-form
- Backend: AWS Lambda (API / MQ / Webhook / Batch) + DynamoDB + SQS + EventBridge
- Infra-as-Code: AWS CDK (TypeScript) + LocalStack によるオフラインテスト
- Integrations: 広告配信プラットフォーム OpenAPI クライアント + Notion API + LINE Webhook
- Architecture: クリーンアーキテクチャ (domains / applications / interfaces / infrastructures)
成果・特徴
- AWS CDK によるインフラの IaC 化で、本番と検証を同じコードから再現可能に
- ユースケース単位の Lambda 分割により、機能追加・障害対応のスコープを限定
- Notion CMS 連携で、運営側のコンテンツ更新を非エンジニアでも完結できる構造に
ハイライト
AWS CDK で構築したサーバーレス
Lambda + DynamoDB + SQS + EventBridge を CDK でコードベース管理し、再現性のあるインフラに。
ユースケース単位の Lambda 分割
クリーンアーキテクチャに基づき、API / メッセージキュー / Webhook / バッチ用に Lambda を分離。
Notion を CMS として活用
Notion API を介してコンテンツをマークダウンに変換し、運営側の編集体験を確保。