$30 off During Our Annual Pro Sale. View Details »
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
460
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
.NET 10の概要
tomokusaba
0
120
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
4
1.1k
日本Rubyの会: これまでとこれから
snoozer05
PRO
4
200
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
150
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
560
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
2
880
AIの長期記憶と短期記憶の違いについてAgentCoreを例に深掘ってみた
yakumo
4
460
【ServiceNow SNUG Meetup LT deck】WorkFlow Editorの廃止と Flow Designerへの移行戦略
niwato
0
110
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
300
【U/Day Tokyo 2025】Cygames流 最新スマートフォンゲームの技術設計 〜『Shadowverse: Worlds Beyond』におけるアーキテクチャ再設計の挑戦~
cygames
PRO
2
940
特別捜査官等研修会
nomizone
0
170
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
0
550
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
180
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.7k
Code Review Best Practice
trishagee
74
19k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
Facilitating Awesome Meetings
lara
57
6.7k
Thoughts on Productivity
jonyablonski
73
5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
250
GraphQLとの向き合い方2022年版
quramy
50
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の管理が不要になる ◦ インフラ運用・検討コストを開発のリソースにまわせる • 今後は社内の他プロジェクトでも利用を検討
ありがとうございました!