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
490
多数の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
1k
Other Decks in Technology
See All in Technology
AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド
zozotech
PRO
2
380
ピープルウエア x スタートアップ
operando
3
3.8k
ググるより、AIに聞こう - Don’t Google it, ask AI
oikon48
0
180
Pythonで構築する全国市町村ナレッジグラフ: GraphRAGを用いた意味的地域検索への応用
negi111111
8
3.2k
Snowflakeとdbtで加速する 「TVCMデータで価値を生む組織」への進化論 / Evolving TVCM Data Value in TELECY with Snowflake and dbt
carta_engineering
2
220
從裝潢設計圖到 Home Assistant:打造智慧家庭的實戰與踩坑筆記
kewang
0
150
今日から使える AWS Step Functions 小技集 / AWS Step Functions Tips
kinunori
5
620
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
180
メタプログラミングRuby問題集の活用
willnet
2
600
よくわからない人向けの IAM Identity Center とちょっとした落とし穴
kazzpapa3
2
620
なぜ新機能リリース翌日にモニタリング可能なのか? 〜リードタイム短縮とリソース問題を「自走」で改善した話〜 / data_summit_findy_Session_2
sansan_randd
1
150
Beyond Prompts: Building Intelligent Applications with Genkit and the Model Context Protocol
peterfriese
0
110
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Gamification - CAS2011
davidbonilla
81
5.5k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
The Cult of Friendly URLs
andyhume
79
6.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Practical Orchestrator
shlominoach
190
11k
For a Future-Friendly Web
brad_frost
180
10k
Git: the NoSQL Database
bkeepers
PRO
431
66k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
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