Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
多数のWebサービスをECS/Fargate構成で効率よく構築・運用するなら copilot-cli
Search
interu (Teruo Adachi)
October 12, 2024
Technology
2
420
多数のWebサービスをECS/Fargate構成で効率よく構築・運用するなら copilot-cli
JAWS FESTA 2024 in 広島 にて登壇した際の資料です。
interu (Teruo Adachi)
October 12, 2024
Tweet
Share
More Decks by interu (Teruo Adachi)
See All by interu (Teruo Adachi)
copilot-cli(Fargate)でRailsを運用するためのTips / JAWS-UG Okayama 2023
interu
1
990
Other Decks in Technology
See All in Technology
Microsoft Fabric ガバナンス設計の一歩目を考える
ryomaru0825
1
260
Semantic Machine Intelligence for Vision, Language, and Actions
keio_smilab
PRO
2
390
An introduction to Claude Code SDK
choplin
3
3.3k
SRE with AI:実践から学ぶ、運用課題解決と未来への展望
yoshiiryo1
1
680
低レイヤソフトウェア技術者が YouTuberとして食っていこうとした話
sat
PRO
7
5.8k
Recoil脱却の現状と挑戦
kirik
2
340
QuickBooks®️ Customer®️ USA Contact Numbers: Complete 2025 Support Guide
qbsupportinfo
0
110
ObsidianをLLM時代のナレッジベースに! クリッピング→Markdown→CLI連携の実践
srvhat09
7
9k
20250718_ITSurf_“Bet AI”を支える文化とコストマネジメント
helosshi
1
210
Bliki (ja), and the Cathedral, and the Bazaar
koic
8
1.3k
AI駆動開発 with MixLeap Study【大阪支部 #3】
lycorptech_jp
PRO
0
200
claude codeでPrompt Engineering
iori0311
0
440
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
A designer walks into a library…
pauljervisheath
207
24k
Documentation Writing (for coders)
carmenintech
72
4.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
BBQ
matthewcrist
89
9.7k
Code Reviewing Like a Champion
maltzj
524
40k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
710
Statistics for Hackers
jakevdp
799
220k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Become a Pro
speakerdeck
PRO
29
5.4k
Docker and Python
trallard
45
3.5k
Transcript
多数のWebサービスをECS/Fargate 構成で効率よく構築‧運⽤するなら copilot-cli JAWS FESTA 2024 in 広島 安達 輝雄
株式会社ソニックガーデン 取締役 執⾏役員 2024.10.12
© SonicGarden 2
© SonicGarden 3 運⽤しているサービスの数 受託開発サービス + ⾃社サービス + 社内サービス 約
100 サイト staging環境も含めると約 200 サイト!?
© SonicGarden ⼿動で構築‧運⽤は無理 4
© SonicGarden 5 実現したいこと • サービスを開発してユーザに早く価値を届ける • 構築‧運⽤の⼈的コストを抑える • 安定稼働しサービス成⻑に追従できる
© SonicGarden 6 効率的な構築⽅法の検討 CloudFormation aws-cdk copilot-cli ⼿軽さ ⾃由度 App
Runner
© SonicGarden 7 何が嬉しいの? コンテナ化されたアプリケーションのインフラ構築、デプロイ、運⽤を簡素化 ↓ 開発者の⽣産性を向上
© SonicGarden 8 copilot-cliのサポート範囲 • ECS / EC2構成 • EKS
/ Fargate • EKS / EC2 未サポート • ECS / Fargate • AppRunner • Static Site サポート
© SonicGarden 9 様々なリソース作成に対応(⼀部抜粋) DynamoDB Aurora Serverless S3 EFS Cloudfront
ALB/NLB AppRunner App Mesh X-Ray CodePipeline Fargate CodeBuild
© SonicGarden copilot-cli の概念‧設定 10
© 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 タスクを指す概念
© 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 の作成
© SonicGarden 設定ファイルは manifest.yml が基本 13
© SonicGarden 14 Environment の設定ファイル(例) 設定サンプルも豊富 https://aws.github.io/copilot-cli/j a/docs/manifest/lb-web-service/
© SonicGarden 15 Service の設定ファイル(例)
© SonicGarden 16 Environment Pipeline Service copilot-cli が概念毎に YAMLの設定ファイルを⽣成
© SonicGarden 17 copilot-cli の動作 • YAMLの設定を元にCloudFormationが動作 • システム構築やビルド‧デプロイを実⾏ •
CloudFormationのスタックも分離して管理
© SonicGarden システム構成図 18
© SonicGarden 19
© SonicGarden 20
© SonicGarden 21 アプリケーションのデプロイ ‧コンテナの⼊替え ‧DB Migration 各種リソース設定の更新 ‧SecurityGroupの設定 ‧ACMの設定
.. etc
© SonicGarden 意図的に copilot-cli で 構築しないリソースもある 22
© SonicGarden 23 受託開発サービス + ⾃社サービスデータが絶対に 消失しないように 判断条件:復元可能性 $ copilot
app delete
© SonicGarden 多数のWebサービスを 効率よく構築‧運⽤できた? 24
© SonicGarden 25 効率的にできた? • copilot-cli がAWSリソース作成の煩雑さを吸収 ◦ 構築コスト⼤幅減 •
githubでmain/stagingへのmergeでサービスのリリースだけ でなくインフラの更新もリリース ◦ 運⽤コスト⼤幅減 できました! 理由は他にも‧‧‧
© SonicGarden 26 ① copilot-cliのYAMLのgenerator 左のような設定の値を決めるだけで、 Dockerfile や copilot-cli の
manifest.yml を ⾃動作成するツールを社内開発 $ bundle exec sfgen $ bundle exec sfgen check RailsのWebサービスの新規構築もすぐにできる! → 新規構築コスト⼤幅減
© SonicGarden 27 ② addon の仕組み活⽤ AWSリソースの追加構築も容易 (例) ‧IAMロールの作成 ‧SecurityGroupの作成
‧EventBridgeScheduleGroupの作成 ‧...etc
© SonicGarden 28 ③ override の仕組み活⽤ ‧CloudFormationのデフォルト値の変更/設定追加も可能 ‧staging/productionでArn等を切り替え可能
© SonicGarden 効果は? 29
© SonicGarden 30 copilot-cliを利⽤することで 構築時間 6 時間 → 1 時間
うち30分程度は CloudFormation の実⾏待ち時間
© SonicGarden 他にも恩恵沢⼭ 31
© SonicGarden 32 恩恵 • AWSの進化に copilot-cli が追従してくれる • マルチ環境対応
◦ staging/productionでAWSアカウントの分離も容易 • 環境削除もコマンド⼀発 • 作成したリソースへの⾃動タグ付け ◦ Cost/ResourceExplorerで楽に分析できる $ copilot app delete
© SonicGarden 結論 copilot-cli を利⽤すれば 効率的な構築‧運⽤ができる! 33
© SonicGarden ご清聴ありがとうございました 34