インフラ - takaaki12353491/tecpark GitHub Wiki

インフラについて

  • Terraformを使う
    • ラッパーツールとしてTerragruntを使う
  • GitHub ActionsでCI/CDを行う

クラウド

主にAWSを使う

選定

AWS

  • web系においてシェアが1番高く使い慣れている

GCP

  • 何もわからない

Cloudflare

  • 何もわからない

Tips

IAM

  • IAMユーザーは作成せずにSSOを使うことでアクセスキー流出のリスクを下げる

ECS

  • private subnetに配置することで外部からの不正アクセスのリスクを下げる

RDS

  • private subnetに配置することで外部からの不正アクセスのリスクを下げる
  • Secrets Managerを使ってパスワード管理を行う。ローテートもできれば行う
  • ワンクリック接続をセットアップすることで簡単にEC2から接続できるようになる

Cloudfront

  • Cloudfront経由のみでしかアクセスできないようにすることでDos攻撃などの対策を行う
  • 適宜AWS Wafなどで設定を追加していく

SSM

  • 踏み台サーバーはSSH接続ではなく、SSM接続を行うことで外部からの不正アクセスのリスクを下げる

VPC Endpoint

  • S3とRedisは無料なので作っておいた方が良い
  • CloudWatchなどの通信が多いものだけに絞っておかないと逆に料金が高くなる

IaC

Terraform(Terragrunt)を使う

選定

Terraform

  • IaCツールとして1番人気で情報量が多い
  • AWS以外も構築に組み込める
  • 表現力は低い

Tips

  • 依存関係が複雑にならないようにリソース単位で分割せず、ライフサイクルが同じもので分割するようにする
  • tfstateは暗号化しておく
  • GitHubの設定も行う
  • backendの設定を変更する場合はterragrunt init -migrate-state

Terragrunt

  • providerなどのモジュール間の共通部分を定義できる
  • 依存関係を明示することで解決してくれる
  • ディレクトリを分けてもrun-allで同時にコマンドを実行できる

CI/CD

GitHub Actions一択

Tips

  • アクセスキーが流出しないようにIDプロバイダーで認証を行う

参考