TAKAHIRO's Portfolio

Learning

自己学習アーカイブ

実務に転用できる設計パターンを意識し、狙い・構成・学びをセットで記録しています。

マルチAZ × ECS(Fargate) × GitHub Actions の実運用を想定した Web/API 基盤

本構成は、東京リージョン(ap-northeast-1)における Webフロント配信〜API実行基盤〜DB までを一通り揃えた、実運用を想定したアーキテクチャを実装。 フロントエンドは CloudFront を入口に S3(静的配信)/ Amplify(フロント)へルーティングし、バックエンドは ALB 配下で ECS on Fargate をマルチAZに分散して稼働。 非同期処理は EventBridge / SQSを介して疎結合化し、通知はAmazon SESを活用。 DBはプライベートサブネットにRDS(PostgreSQL)を配置し、Security Groupによる境界制御を行い、ECSなど必要なリソースからのみ到達可能な設計。 デプロイはGitHub ActionsからECRへビルドしたイメージをpushし、ecspressoでタスク定義更新・サービス反映・DBマイグレーションまでを自動化。 運用アクセスはSSM Session Managerを前提に、セキュアな運用を実現。

得た知見

  • CloudFront/WAF/ALB + ECS(Fargate) + RDS(PostgreSQL) の本番相当構成を Terraform で再現し、IaC の標準構成を整備
  • GitHub Actions と ecspresso を組み合わせ、ECR への push から DB マイグレーション/デプロイまでを自動化
  • NAT Gateway を EC2 NAT インスタンスへ置き換え、学習環境の通信コストを最小化
プラットフォームAWS
AWSサービスAWS Organizations / IAM Identity Center / IAM Role / IAM Policy / Route53 / VPC / Subnet / Route Table / Internet Gateway / NAT Gateway / Security Group / ALB / S3 / EC2 / ECS / ECR / RDS / Session Manager / Secrets Manager / Certificate Manager / CloudWatch Logs / CloudFront / Amplify / SES / SQS / EventBridge Scheduler
IaCTerraform
CI/CDGitHub Actions
Deploy Toolsecspresso

ローカル環境で学ぶKubernetes基礎

minikube上に、APIとPostgres DBを配置し、Kubernetesの基本リソースを一通り実装。 外部アクセスはホストマシンの/etc/hostsにて対象ドメインをノードIPに向け、Ingress →(NodePort)→ ClusterIP → Pod の流れで到達する構成を実現。 DBはStatefulSet + PVC/PV + Headless Serviceで「Podが入れ替わっても」安定して接続できる形とした。 運用系としてJob(DBマイグレーション)とCronJob(バッチ処理)も用意し、アプリ以外のワークロードも学習対象に含めた。 設定値はConfigMap/Secretで分離し、「アプリのコードと環境設定を切り離す」基本を押さえた。

得た知見

  • 継続学習中
プラットフォームKubernetes / Minikube
リソースNode / Pod / Deployment / ReplicaSet / Service(ClusterIP) / Service(Headless) / Service(NodePort) / Service(LoadBalancer) / Ingress / ConfigMap / Secret / Job / CronJob / tatefulSet / PersistentVolume / PersistentVolumeClaim / HorizontalPodAutoscaler