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
310
多数の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
950
Other Decks in Technology
See All in Technology
Oracle Database Technology Night #87-1 : Exadata Database Service on Exascale Infrastructure(ExaDB-XS)サービス詳細
oracle4engineer
PRO
1
170
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
19k
Aurora PostgreSQLがCloudWatch Logsに 出力するログの課金を削減してみる #jawsdays2025
non97
1
200
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
290
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
510
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
160
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
360
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
190
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.1k
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
240
偏光画像処理ライブラリを作った話
elerac
1
170
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
67
4.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Mobile First: as difficult as doing things right
swwweet
223
9.4k
Optimizing for Happiness
mojombo
376
70k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
BBQ
matthewcrist
87
9.5k
Agile that works and the tools we love
rasmusluckow
328
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
430
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
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