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
EC2からFargate+ECSへの道のり/ EC2 to ECS And Fargate
Search
tsutsumitakahiro
May 11, 2021
Technology
0
320
EC2からFargate+ECSへの道のり/ EC2 to ECS And Fargate
Amazon Game Tech Conference 2021
https://gamingtechnight.connpass.com/event/208653/
tsutsumitakahiro
May 11, 2021
Tweet
Share
Other Decks in Technology
See All in Technology
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
190
社内勉強会運営のコツ
senoo
6
1.1k
アプリがつくるNOT A HOTELブランド
hokuts
1
450
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
1
190
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
3
2.1k
0→1開発における技術選定において一番大切なこと
bicstone
1
320
Garoon 開発チーム / Garoon development team
cybozuinsideout
PRO
2
2.9k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs (QCon London)
inesmontani
PRO
1
150
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
210
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM and Prompt Engineering and Building Tutors
ks91
PRO
0
220
普段有償でサポート業務をしているCSAが技術知見を無料で公開する理由
07jp27
1
630
最近たまに見かけるTiDBってなんだ? - Findy
pingcap0315
2
570
Featured
See All Featured
The Invisible Customer
myddelton
114
12k
Designing for Performance
lara
602
67k
Adopting Sorbet at Scale
ufuk
67
8.6k
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
How GitHub (no longer) Works
holman
304
140k
Documentation Writing (for coders)
carmenintech
59
3.9k
We Have a Design System, Now What?
morganepeng
42
6.7k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
154
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
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の管理が不要になる ◦ インフラ運用・検討コストを開発のリソースにまわせる • 今後は社内の他プロジェクトでも利用を検討
ありがとうございました!