Slide 1

Slide 1 text

多数のWebサービスをECS/Fargate 構成で効率よく構築‧運⽤するなら copilot-cli JAWS FESTA 2024 in 広島 安達 輝雄 株式会社ソニックガーデン 取締役 執⾏役員 2024.10.12

Slide 2

Slide 2 text

© SonicGarden 2

Slide 3

Slide 3 text

© SonicGarden 3 運⽤しているサービスの数 受託開発サービス + ⾃社サービス + 社内サービス 約 100 サイト staging環境も含めると約 200 サイト!?

Slide 4

Slide 4 text

© SonicGarden ⼿動で構築‧運⽤は無理 4

Slide 5

Slide 5 text

© SonicGarden 5 実現したいこと ● サービスを開発してユーザに早く価値を届ける ● 構築‧運⽤の⼈的コストを抑える ● 安定稼働しサービス成⻑に追従できる

Slide 6

Slide 6 text

© SonicGarden 6 効率的な構築⽅法の検討 CloudFormation aws-cdk copilot-cli ⼿軽さ ⾃由度 App Runner

Slide 7

Slide 7 text

© SonicGarden 7 何が嬉しいの? コンテナ化されたアプリケーションのインフラ構築、デプロイ、運⽤を簡素化 ↓ 開発者の⽣産性を向上

Slide 8

Slide 8 text

© SonicGarden 8 copilot-cliのサポート範囲 ● ECS / EC2構成 ● EKS / Fargate ● EKS / EC2 未サポート ● ECS / Fargate ● AppRunner ● Static Site サポート

Slide 9

Slide 9 text

© SonicGarden 9 様々なリソース作成に対応(⼀部抜粋) DynamoDB Aurora Serverless S3 EFS Cloudfront ALB/NLB AppRunner App Mesh X-Ray CodePipeline Fargate CodeBuild

Slide 10

Slide 10 text

© SonicGarden copilot-cli の概念‧設定 10

Slide 11

Slide 11 text

© 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 タスクを指す概念

Slide 12

Slide 12 text

© 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 の作成

Slide 13

Slide 13 text

© SonicGarden 設定ファイルは manifest.yml が基本 13

Slide 14

Slide 14 text

© SonicGarden 14 Environment の設定ファイル(例) 設定サンプルも豊富 https://aws.github.io/copilot-cli/j a/docs/manifest/lb-web-service/

Slide 15

Slide 15 text

© SonicGarden 15 Service の設定ファイル(例)

Slide 16

Slide 16 text

© SonicGarden 16 Environment Pipeline Service copilot-cli が概念毎に YAMLの設定ファイルを⽣成

Slide 17

Slide 17 text

© SonicGarden 17 copilot-cli の動作 ● YAMLの設定を元にCloudFormationが動作 ● システム構築やビルド‧デプロイを実⾏ ● CloudFormationのスタックも分離して管理

Slide 18

Slide 18 text

© SonicGarden システム構成図 18

Slide 19

Slide 19 text

© SonicGarden 19

Slide 20

Slide 20 text

© SonicGarden 20

Slide 21

Slide 21 text

© SonicGarden 21 アプリケーションのデプロイ ‧コンテナの⼊替え ‧DB Migration 各種リソース設定の更新 ‧SecurityGroupの設定 ‧ACMの設定 .. etc

Slide 22

Slide 22 text

© SonicGarden 意図的に copilot-cli で 構築しないリソースもある 22

Slide 23

Slide 23 text

© SonicGarden 23 受託開発サービス + ⾃社サービスデータが絶対に 消失しないように 判断条件:復元可能性 $ copilot app delete

Slide 24

Slide 24 text

© SonicGarden 多数のWebサービスを 効率よく構築‧運⽤できた? 24

Slide 25

Slide 25 text

© SonicGarden 25 効率的にできた? ● copilot-cli がAWSリソース作成の煩雑さを吸収 ○ 構築コスト⼤幅減 ● githubでmain/stagingへのmergeでサービスのリリースだけ でなくインフラの更新もリリース ○ 運⽤コスト⼤幅減 できました! 理由は他にも‧‧‧

Slide 26

Slide 26 text

© SonicGarden 26 ① copilot-cliのYAMLのgenerator 左のような設定の値を決めるだけで、 Dockerfile や copilot-cli の manifest.yml を ⾃動作成するツールを社内開発 $ bundle exec sfgen $ bundle exec sfgen check RailsのWebサービスの新規構築もすぐにできる! → 新規構築コスト⼤幅減

Slide 27

Slide 27 text

© SonicGarden 27 ② addon の仕組み活⽤ AWSリソースの追加構築も容易 (例) ‧IAMロールの作成 ‧SecurityGroupの作成 ‧EventBridgeScheduleGroupの作成 ‧...etc

Slide 28

Slide 28 text

© SonicGarden 28 ③ override の仕組み活⽤ ‧CloudFormationのデフォルト値の変更/設定追加も可能 ‧staging/productionでArn等を切り替え可能

Slide 29

Slide 29 text

© SonicGarden 効果は? 29

Slide 30

Slide 30 text

© SonicGarden 30 copilot-cliを利⽤することで 構築時間 6 時間 → 1 時間 うち30分程度は CloudFormation の実⾏待ち時間

Slide 31

Slide 31 text

© SonicGarden 他にも恩恵沢⼭ 31

Slide 32

Slide 32 text

© SonicGarden 32 恩恵 ● AWSの進化に copilot-cli が追従してくれる ● マルチ環境対応 ○ staging/productionでAWSアカウントの分離も容易 ● 環境削除もコマンド⼀発 ● 作成したリソースへの⾃動タグ付け ○ Cost/ResourceExplorerで楽に分析できる $ copilot app delete

Slide 33

Slide 33 text

© SonicGarden 結論 copilot-cli を利⽤すれば 効率的な構築‧運⽤ができる! 33

Slide 34

Slide 34 text

© SonicGarden ご清聴ありがとうございました 34