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
220
多数の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
920
Other Decks in Technology
See All in Technology
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
7
700
"とにかくやってみる"で始めるAWS Security Hub
maimyyym
2
100
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
310
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
430
The Rise of LLMOps
asei
9
1.8k
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
110
SDN の Hype Cycle を一通り経験してみて思うこと / Going through the Hype Cycle of SDN
mshindo
1
180
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
190
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
330
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
複雑なState管理からの脱却
sansantech
PRO
1
160
Featured
See All Featured
Building an army of robots
kneath
302
43k
The Cost Of JavaScript in 2023
addyosmani
45
6.8k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Site-Speed That Sticks
csswizardry
0
36
Visualization
eitanlees
145
15k
The Invisible Side of Design
smashingmag
298
50k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Designing for humans not robots
tammielis
250
25k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
How to Ace a Technical Interview
jacobian
276
23k
Scaling GitHub
holman
458
140k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
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