AWSアーキテクチャビルダー

https://github.com/object-t/front-progate-aws-hackathon

GitHub

DynamoDB

Python

Vue

Terraform

お客さんの要望に応じたAWSのアーキテクチャを作るゲームです

thirdlf03

土居健太郎

Cookie777

Naoto Kido

くらず / kurazu

推しアイデア

直感的にUIでアーキテクチャ図を作れる。 "花火"を上げることができる!

作った背景

アーキテクチャを考える楽しさを色んな人に知ってもらいたい!

推し技術

・terraform ・code pipeline ・SVGベースの構成図表示

プロジェクト詳細

AWSアーキテクチャビルダー

アーキテクチャ図

image

インフラ担当のthirdlfです。 普段全くインフラを触っておらず、AWSやIaC(Terraform)に関する知識もほとんどなかったんですが、AWSの環境を無制限に使えるということで、こんな構成作れたらいいなって思いを形にしました。

IaC化したいなと思い、全てのリソースをTerraformで作成しています。 これにより、CodeConnectionsやGoogle OAuthの設定以外全て自動で準備されます。

インフラのリポジトリです(間違えてtfstateをコミットしてしまったせいで、mainブランチ一回消してます)

https://github.com/object-t/progate-aws-infra

また、このアーキテクチャ図はdrawioを使い、Claudeに協力してもらいながら書きました。

CI/CD

Code Pipelineを使い、GitHubの特定のブランチが更新されたら自動でBuild、Deployまで走るようになっています。

デプロイ戦略としては、Blue/Green Deploymentを採用しているためシームレスに旧環境と新環境を切り替えることができています。 もし、デプロイ中にエラーが出た場合は、自動で旧環境に戻るようになっているため安心・安全ですね。

この画面、大好き!!🫰
image

認証、認証

フロント側で、Amplifyを使いログインしてもらい、Cognitoから返ってきたJWTをAPI Gatewayで検証しています。 また、VPC Linkを使うことで内部にロードバランサーを置くことができるため、限りなくセキュアになるように頑張ってみました!

フロントエンド

S3にある静的ファイルをCloudFront から配信しています。 CloudFrontからS3へのアクセス制限として、OACを採用しています。

バックエンド

FastAPIを、ECS on Fargateで動かしています。CodeBuild時にECRへImageがPushされるので、そこから引っ張ってきています。

インフラ以外の話

技術スタック

  • バックエンド:
    • FastAPI
    • uv
  • フロントエンド:
    • Vuetify
    • Vue.jsのUIライブラリー
  • データベース:
    • DynamoDB
    • AWSが提供するフルマネージドのNoSQLデータベースサービス
  • インフラ:
    • AWS
      • 使い放題
    • IaC
      • インフラストラクチャの構築や設定をコードで定義し、自動化
    • Terraform
      • IaCを実現するツール

自慢したいこと

  • 普段PMしない人がPMをやったり、初心者がいるチーム構成で動くものを完成させて、デプロイまですることができた!
  • DynamoDBを活用できた!
  • ほぼ2徹で作業した!
  • フロントとバックを繋げることができた!
  • CI/CD、Terraform

苦労したこと

  • DynamoDBを初めて使用したため、NoSQLの設計に苦戦した。
  • Gitで頻繁にコンフリクトが発生し、その解消に時間がかかった。
  • ハッカソンハウスの人口密度が高くて大変だった、、、
  • 通信エラーの原因特定
  • .env関係のエラー
  • CORS、 CORS、 CORS、 CORS、 CORS

実装していきたい機能

  • 作った構成図をIaCのコードとして出力できる機能

没になったアーキテクチャ図

内部ALB使いたくて、どうしようかなと考えてた時にCloud Front VPC Originsを使っていました。

image

AI活用

  • アーキテクチャ図をClaudeに作成させた。
    • 現在のコードを分析→調査→計画→実装のフローで作成
  • Amazon Q Developer活用してうまく爆速開発できました。by 初心者枠くらず
  • アークテクチャをAIに評価
  • MCP
    • AWS Documentation MCP Server
    • Terraform MCP Server
    • Brave Search API やりたいタスクによって、複数のMCPを使い分けたり、組み合わせていました。

実装におけるAI活用例

まず、現在のコードを分析 分析後、brave searchで実装例を検索。 AWS Document MCP + Brave Searchを使い実装計画を立案 Terraform MCPで、Terraformの書き方を調べながら実装する

という流れで開発を進めていました。

実装計画を立案してもらうことで、AIと自分の認識の齟齬を減らすことができました。また、信用度が高い情報を渡すことでエラーやハルシネーションを減らすことができました!

使用AWSサービス

AWSサービス一覧

ネットワーク & コンテンツ配信

  • Amazon CloudFront
  • AWS Certificate Manager (ACM)
  • Amazon S3
  • Amazon VPC (Virtual Private Cloud)
  • NAT Gateway
  • Internet Gateway
  • Network Load Balancer (NLB)

コンピューティング & コンテナ

  • Amazon ECS (Elastic Container Service)
  • AWS Fargate

データベース

  • Amazon DynamoDB

セキュリティ & ID

  • Amazon Cognito
  • AWS Secrets Manager
  • VPC Endpoints

API

  • Amazon API Gateway

CI/CD (DevOps)

  • AWS CodePipeline
  • AWS CodeBuild
  • AWS CodeDeploy
  • Amazon ECR (Elastic Container Registry)

モニタリング

  • Amazon CloudWatch

thirdlf03

@thirdlf03