Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
EC2からFargate+ECSへの道のり/ EC2 to ECS And Fargate
Search
tsutsumitakahiro
May 11, 2021
Technology
480
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EC2からFargate+ECSへの道のり/ EC2 to ECS And Fargate
Amazon Game Tech Conference 2021
https://gamingtechnight.connpass.com/event/208653/
tsutsumitakahiro
May 11, 2021
Other Decks in Technology
See All in Technology
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.8k
おい、エージェントを使って終わらせろ
nwiizo
2
750
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
1
2.9k
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
220
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
290
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
550
Von-Neumann Machines, Dreams & The Futures of IT
ufried
0
110
Minecraft JavaのMODをSwiftで作る
1mash0
0
180
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
680
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
160
絵ではじめるKubernetesセキュリティ
aoi1
4
690
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
130
Featured
See All Featured
Done Done
chrislema
186
16k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Building Applications with DynamoDB
mza
96
7.2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Claude Code のすすめ
schroneko
67
230k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Building AI with AI
inesmontani
PRO
1
1.2k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
500
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Transcript
EC2からECS+Fargate 構成への道のり Amazon Game Tech Conference 2021 ワンダープラネット株式会社 堤
孝広
自己紹介 ワンダープラネット株式会社 タノシムスタジオ 開発グループ長 堤 孝広 (つつみ たかひろ)
• 2009年からゲームサーバーの開発とインフラ(AWS)運用を担当 • 国内・海外のゲームアプリのサーバーリードを複数経験
楽しいね!を、世界中の日常へ。 ワンダープラネット株式会社 会 社 紹 介 Company Material
(C)WonderPlanet Inc. All Rights Reserved. (C)WonderPlanet Inc. All Rights Reserved.
会社概要 名 称 ワンダープラネット株式会社 / WonderPlanet Inc. [名古屋本社] 愛知県名古屋市中区錦3-23-18 ニューサカエビル5F [東京オフィス] 東京都品川区東五反田5-23-7 五反田不二越ビル5F 楽しいね!を、世界中の日常へ。 事業 エンターテインメントサービス事業 設 立 2012年9月3日(10月1日創業) 代表者 代表取締役社長CEO 常川 友樹 従業員 198名(2021年2月末時点) 名称 所在地 ミッション 事業内容 設立 代表者 従業員数
(C)WonderPlanet Inc. All Rights Reserved. ミッション 楽しいね!を、 世界中の
日常へ。 私たちの使命は、世界中の一人でも多くの人々の日常に、家族や友達と「楽しいね!」と笑いあえるひとときを届け ることです。 国・言語・文化・年齢・性別などあらゆる壁を越えて誰もが楽しめるプロダクト・サービスを創り、コミュニケーションを 通じた「笑顔」を世界の隅々まで広げていきます。
コーポレートサイト https://wonderpla.net/
今回の発表について この発表では、これまでEC2をメインに運用してきた弊社が、 • ECS+Fargateの導入に至った経緯 • ECS+Fargate導入のポイント • ECS+Fargate運用の実情 •
ECS+Fargateを導入・運用してみた所感 を紹介します
ECS+Fargateの導入に至った経緯
背景 - 弊社のインフラ運用 • 長期にわたるEC2での運用実績 ◦ AutoScalingを利用した需要に応じたスケール ◦ リザーブドインスタンスやスポットインスタンスを使ったコスト削減
• サーバーアプリ開発担当者とインフラ担当者が同一 ◦ ひとくくりにサーバーチームの責務の分担になっている
課題1. インフラ運用にあたって考えることが沢山ある • リクエスト増加に対応するスケーリングの手動実行 ◦ push通知や運営施策によって急激にリクエスト数が変動する • AMIの管理
◦ デプロイ時のAMIのスナップショット管理 ◦ 使わなくなったAMIのメンテナンス • EC2インスタンスタイプの検討 ◦ 台数xスペックx料金のパラメータ ◦ 新規インスタンスタイプの利用検討
課題2. ミドルウェアのバージョン管理が大変 • 本番環境のMWバージョンを変えるのはコストがかかる ◦ 動作検証をステップにしたがってしっかりと行う必要がある • 環境間でMWバージョン差異が発生してしまうケースも
◦ 例:検証環境と本番環境でRubyのバージョンが異なる ◦ 検証環境で動作するが本番環境で動作しないなどの事故が発生するリスクあり
つまるところ...
インフラ管理の工数を削減して 開発・運用に集中したい!
コンテナ運用の導入を検討 • なぜコンテナ? ◦ AMIの管理が不要になりそう ◦ 環境間のMWバージョン差異を無くせそう
コンテナ運用にあたってのAWSでの選択肢 • Amazon ECS + Amazon EC2 ◦ ECSでコンテナをデプロイし、コンテナ実行環境はEC2で構築
• Amazon ECS + AWS Fargate ◦ ECSでコンテナをデプロイし、コンテナ実行環境はFargateが管理 • Amazon EKS ◦ Kubernetesでコンテナをデプロイする
コンテナ運用にあたってのAWSでの選択肢 • Amazon ECS + Amazon EC2 ◦ ECSでコンテナをデプロイし、コンテナ実行環境はEC2で構築
• Amazon ECS + AWS Fargate → 採用 ◦ ECSでコンテナをデプロイし、コンテナ実行環境はFargateが管理 • Amazon EKS ◦ Kubernetesでコンテナをデプロイする
ECS+Fargateを選んだ理由 • EKSは学習コストが高いと感じた ◦ リリースまで6ヶ月 ◦ Kubernetesに詳しいメンバーがいなかった •
ECS+Fargateは管理が簡単そう!! ◦ インスタンスのリソ ースを意識せずにスケーリングができる ◦ コンテナのデプロイはECSに任せる
つまりECS+Fargateの導入でいろいろ解決できる 課題1. インフラ運用にあたって考えることが沢山ある → FargateでEC2インスタンスやスケールの検討時間を排除 課題2. ミドルウェアのバージョン管理が大変
→ ミドルウェアの管理をコンテナにまかせる
ECS+Fargate導入のポイント
ポイント1/5: Dockerfileの作成 • まずはアプリケーションのコンテナ化に集中して取り組む ◦ つまりDockerfileを作成する ◦ まずは動かすことを目標に標準的なベースイメージを選ぶと良い →チューニングはあとでも大丈夫
• 1つのコンテナで1つのプロセスにする ◦ コンテナを別にすることで、プロセスごとにスケールすることが可能に ◦ ログをプロセスごとに分離することができる
ポイント2/5: イメージサイズのチューニング • イメージサイズがデプロイ時間・コスト・スケールの速度に影響する → サイズが小さい方がうれしい • Docker Docsのベストプラクティスに則って「不要なパッケージの削除」「レイ
ヤの数を最小に」を実施 ◦ Dockerfile のベストプラクティス • 弊社の場合は1309MB→450MBまで減少
ポイント3/5: ログの保存方法 • コンテナを動かす場合、ログの扱 いを工夫の必要あり • ログ出力先をローカルファイルか ら標準出力へ変更
• ECSのログドライバーに awslogs を設定してCloudWatchLogsに転 送
ポイント4/5: イメージリポジトリにECRを利用 • Amazon ECRはコンテナイメージを 登録・管理できるリポジトリ ◦ プライベート管理もできる •
ECRのコンソールページに表示さ れる「プッシュコマンドの表示」を 参考に登録
ポイント5/5: ビルドパイプラインの自動化 • AWS CodeBuildを使ってGitHubからコードを取得してコンテナイメージをビ ルド • さらにビルドしたコンテナイメージをECRへ登録
ポイント5/5: ビルドパイプラインの自動化 • AWS CodeBuildを使ってGitHubからコードを取得してコンテナイメージをビ ルド • さらにビルドしたコンテナイメージをECRへ登録 イメージのタグをGitHubのコミットハッシュに
することで、どのコミット時点のイメージかがわ かるように工夫
導入に当たって上記のようなポイントがある • 未経験の現場でも本当に導入できるのか? • 弊社も同じく不安がありました
安心してください!〜コンテナハンズオンの開催 • コンテナ化を検討し始めた初期にAWSさんにコンテナハンズオンを開催し てもらえた • コンテナとは何か〜コンテナサービスの入門、まで一通りどういったものか を学習できた
ECS+Fargate運用の実情
スケールをさくさく変更する • リリース直後はアクセスのスパイクに備えて十分なタスクを用意 • リリース当日中に負荷を見ながらスケールをリアルタイムに変更
スケール変更の実際の方法 • コンソールのECSで「必要なタスクの数」を更新するだけ!
ログの性質に応じて収集・確認方法を分けた • 緊急度の高いエラーログはAuroraに保存 ◦ CloudWatchLogsの分析になれていなかった ◦ 管理ページからAuroraに接続しており、すぐにエラー詳細を調べられるため
インスタンスタイプを検討する行為がなくなった • アプリに適しているファミリータイプの検討 • 新しいインスタンスタイプへの乗り換えの検討 • ただしvCPUとMemoryの組み合わせの検討は必要
コンテナへミドルウェア追加が発生・スムーズに対応 • ファイルタイプを判別するミドルウェアが必要になった • Dockerfileにミドルウェアをインストールするコードを追加 • 検証環境でデプロイして確認→本番環境でデプロイ ◦
問題なく本番で動かすことができた! ◦ ミドルウェアのアップデートもアプリのデプロイと同じ感覚でできる!
ECS+Fargateを 導入・運用してみた所感
インフラであれこれ考えるコスト(運用工数)が少なくなった • AMIの管理やインスタンスタイプを検討することから開放 • 管理や検討していた時間を開発に使えるようになった!
コスト(料金)に関しての比較と考察 • コスト比較(2vCPU, 4GB) ◦ EC2(c5.large): 0.107$/時間 ◦ Fargate: 0.12324$/時間
• 考察 ◦ 単純な比較ではコスト増だが、かわりに管理コストが減る ◦ 開発に集中することでプロダクトの品質向上に繋がる ◦ FargateはvCPUとMemoryの組み合わせが柔軟なためコスト削減の余地がある *リージョンはアジアパシフィック(東京)を参照(2021/04時点)
環境間のMWバージョンが自然と統一されるようになった • 差分がなくなることで、検証環境では動くのに本番環境では動かない、と いったリスクから開放 • ばっちり差分がなくなるので安心できるようになった
実際に6ヶ月で導入・運用してみてどうだったか? • 導入期間中はEC2と運用の感覚が異なる点で苦労 ◦ sshができないことでログの調査がCloudWatchLogsに変わった ◦ デプロイのたびにビルドしなおすため、デプロイ時間自体は長くなった
• 運用をはじめてEC2を管理しなくなり楽になったことを実感
今後考えていること • さらなる自動化 ◦ AWSコンソールからのデプロイ作業 →AWS CodeDeployを利用してデプロイの自動化 ◦
負荷ベースのオートスケール →AutoScalingを設定 ◦ ログをフィルタリングしてコストを削減するためにFireLensを導入 • ECS+Fargate構成は社内他プロジェクトでの利用を検討 ◦ PHPベースのプロジェクトでも大部分の知見を流用できる
まとめ
まとめ • ECS+Fargateの導入事例を紹介 ◦ 弊社の事情と導入に至った経緯 (サーバーアプリ/インフラエンジニアが同一) ◦ 導入あたってのポイント5つ
• Fargateを使ってみた実情 ◦ 運用がとてもシンプルになる ◦ EC2インスタンスタイプやAMIの管理が不要になる ◦ インフラ運用・検討コストを開発のリソースにまわせる • 今後は社内の他プロジェクトでも利用を検討
ありがとうございました!