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
590
2
Share
多数のWebサービスをECS/Fargate構成で効率よく構築・運用するなら copilot-cli
JAWS FESTA 2024 in 広島 にて登壇した際の資料です。
interu (Teruo Adachi)
October 12, 2024
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
Tour of Agent Protocols: MCP, A2A, AG-UI, A2UI with ADK
meteatamel
1
210
ZOZOTOWNリプレイスでのSkills導入までの流れとこれから
zozotech
PRO
4
2.6k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
77k
Even G2 クイックスタートガイド(日本語版)
vrshinobi1
0
210
【関西電力KOI×VOLTMIND 生成AIハッカソン】空間AIブレイン ~⼤阪おばちゃんフィジカルAIに続く道~
tanakaseiya
0
160
AIドリブン開発の実践知 ― AI-DLC Unicorn Gym実施から見えた可能性と課題
mixi_engineers
PRO
0
110
第26回FA設備技術勉強会 - Claude/Claude_codeでデータ分析 -
happysamurai294
0
390
Webアクセシビリティは“もしも”に備える設計
tomokusaba
0
160
仕様通り動くの先へ。Claude Codeで「使える」を検証する
gotalab555
8
2.4k
ふりかえりを 「あそび」にしたら、 学習が勝手に進んだ / Playful Retros Drive Learning
katoaz
0
120
Kubernetes基盤における開発者体験 とセキュリティの両⽴ / Balancing developer experience and security in a Kubernetes-based environment
chmikata
0
170
Claude Teamプランの選定と、できること/できないこと
rfdnxbro
1
760
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
210
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
670
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
KATA
mclloyd
PRO
35
15k
Everyday Curiosity
cassininazir
0
190
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.6k
ラッコキーワード サービス紹介資料
rakko
1
2.9M
Raft: Consensus for Rubyists
vanstee
141
7.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
190
Ethics towards AI in product and experience design
skipperchong
2
250
Tell your own story through comics
letsgokoyo
1
880
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