Upgrade to Pro — share decks privately, control downloads, hide ads and more …

多数のWebサービスをECS/Fargate構成で効率よく構築・運用するなら copilot-cli

多数のWebサービスをECS/Fargate構成で効率よく構築・運用するなら copilot-cli

JAWS FESTA 2024 in 広島 にて登壇した際の資料です。

Avatar for interu (Teruo Adachi)

interu (Teruo Adachi)

October 12, 2024
Tweet

More Decks by interu (Teruo Adachi)

Other Decks in Technology

Transcript

  1. © SonicGarden 8 copilot-cliのサポート範囲 • ECS / EC2構成 • EKS

    / Fargate • EKS / EC2 未サポート • ECS / Fargate • AppRunner • Static Site サポート
  2. © SonicGarden 11 概念 Application Environment Service Service Job Pipeline

    Application Service、Environment、Pipeline といった概念を取りまとめたもの Environment ステージング環境や本番環境など必要になる環境を指す概念 VPC、Subnet、AZ、SecurityGroupなどの設定を含む Service AWS 上で実⾏したいコードとそれに必要なインフラストラクチャリソースを指す概念 サービスのタイプを選択可能(appRunner,webサービス,apiサービス,workerサービス) Pipeline Environment や Service の変更をデプロイするリリースパイプラインを指す概念 Job バッチ処理などイベントによって起動されるECS タスクを指す概念
  3. © SonicGarden 12 概念ごとにコマンド実⾏(例) $ copilot app init sample --resource-tags

    project-name=sample $ copilot env init --name production $ copilot env deploy --name production $ copilot svc init --name web --svc-type "Load Balanced Web Service" $ copilot svc deploy --name web --env production $ copilot pipeline init --name web-production --pipeline-type 'Workloads' $ copilot pipeline deploy --name web-production Application の作成 Environment の作成 Service の作成 Pipeline の作成
  4. © SonicGarden 25 効率的にできた? • copilot-cli がAWSリソース作成の煩雑さを吸収 ◦ 構築コスト⼤幅減 •

    githubでmain/stagingへのmergeでサービスのリリースだけ でなくインフラの更新もリリース ◦ 運⽤コスト⼤幅減 できました! 理由は他にも‧‧‧
  5. © SonicGarden 26 ① copilot-cliのYAMLのgenerator 左のような設定の値を決めるだけで、 Dockerfile や copilot-cli の

    manifest.yml を ⾃動作成するツールを社内開発 $ bundle exec sfgen $ bundle exec sfgen check RailsのWebサービスの新規構築もすぐにできる! → 新規構築コスト⼤幅減
  6. © SonicGarden 30 copilot-cliを利⽤することで 構築時間 6 時間 → 1 時間

    うち30分程度は CloudFormation の実⾏待ち時間
  7. © SonicGarden 32 恩恵 • AWSの進化に copilot-cli が追従してくれる • マルチ環境対応

    ◦ staging/productionでAWSアカウントの分離も容易 • 環境削除もコマンド⼀発 • 作成したリソースへの⾃動タグ付け ◦ Cost/ResourceExplorerで楽に分析できる $ copilot app delete