AWSインフラ設計のベストプラクティスを完全に理解した
自己紹介
東京在住。フリーランスで7年目、主にウェブアプリケーション開発をしてきました。
Nest.js, Ruby on Rails, Goでバックエンド開発をメインにしています。
業務でのインフラ系の経験は、SREチームのレビューを受けながらバッチ処理用に複数のAWSサービスを疎通させたことくらいでした。
きっかけ、動機、モチベ
直近で3件ほど、内製化・リプレイス系の案件に携わってきました。
SREチームのレビューを受けながらバッチ処理用に複数のAWSサービスを疎通させる経験もでき、インフラへの解像度が少しずつ上がってきました。
その経験が面白くなってきたこともあり、ちゃんとインフラを体系的に学びたいと思ったのがきっかけです。
バックエンドエンジニアとして経験年数が増えるにつれて「インフラもできる?」という相談が来ることも増えてきました。せっかくなら、ベストプラクティスをきちんと押さえた上で自信を持って設計・構築できるようになりたい、というのがモチベーションです。
学んだこと
AWS 基礎
まず、AWSアカウントをゼロから作成します。マルチアカウント構成を前提とし、環境ごとにアカウントを分離。すべてをAWS Organizations配下に整理していきます。
次に、AWS IAM Identity Centerでシングルサインオン構成を設計します。IAMスイッチロールの仕組みも学び、困った時にメンターがアカウントへアクセスする動線も整えます。
その後はネットワーク構築です。VPC、サブネット、インターネットゲートウェイ、NATゲートウェイを順番に作ります。最終的にはECS+RDS構成でヘルスチェックが通る状態を目指します。
これらの構築を通じて、下記の点を理解できました。
- AWSリソースの命名規則
- ECSをプライベートサブネットで動かすセキュアな構成
- セキュリティグループの配置戦略
- IAMの最小権限設計
- ECSタスク実行ロールとECSタスクロールの役割分担
- 環境変数の管理(S3とSecrets Managerの使い分け)
- ECRへのDockerイメージのpush基盤の構築(Makefileによる自動化)
- ALBの構成とECSサービスの紐づけ
- ACM(証明書)によるHTTPS対応
- DNS委任設定を使ったマルチアカウントでのドメイン管理の分離
- NATゲートウェイからNATインスタンスへのリプレースによるコスト削減
いろんな現場でよくあるアンチパターンを理解しつつ、ゼロベースで綺麗に設計し、その設計にした根拠を説明できる構成力を身につけました。
初めてのインフラ構築、アプリケーション開発とのギャップで頭が痛かったです。ミスると動かないから神経使うのに、疎通できても達成感(実際にモノが動いている感)がなくてモチベーションとの戦いでした。

AWS 基礎コース 構成図
AWS 実践
AWS基礎で構築した内容をさらに発展させ、より現場に近いサービス構成でインフラを構築して動かしていきました。
こちらは実際に動かしてる感があって、スムーズに進むことができました!
- 踏み台サーバーとポートフォワーディング
- ECSタスク単発実行・DBマイグレーション
- EventBridge Schedulerによるバッチ処理
- SES・SQS
- Amplify・S3・CloudFront
- オートスケーリング・負荷試験・Fargate Spot
- Session Managerを使った踏み台サーバーへのセキュアなアクセス設計
- SQSのデッドレターキューを使ったメッセージ信頼性の確保
- グレースフルシャットダウンの実装によるSQSポーリングの安全な終了
- ECS Execを使ったコンテナ内でのデバッグ手法
- OAC(Origin Access Control)によるCloudFront経由でのS3アクセス制御
- Lambda@EdgeとCloudFront Functionsの違いと使い分け
- CloudFrontのキャッシュポリシーとキャッシュ無効化(Invalidation)の設計
- CloudFrontのビヘイビアを使ったリバースプロキシ構成
- DKIM・SPF・DMARCによるメール認証の設計(SES構築時)
- IAMのPassRoleの概念と適切な権限設計
- CloudFrontのネットワーク転送コスト削減の手法
- イケてる構成図のアウトプット
特に、グレースフルシャットダウンの実装と動作確認(実際にログを見る)、オートスケーリングの実装と動作確認(実際に負荷をかける)まで行うので、しっかり身についているなと実感しました。

AWS 実践コース 構成図
まとめ
ちょっとしたエラー対応ならAIでなんとかできる時代になったからこそ、AIを使いつつ自分の基礎力を高めていきたいと思います。
Discussion