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
気軽に始めるGraviton2マネージドサービスによるコスト最適化 / Amazon Game...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
FUJIWARA Shunichiro
November 25, 2021
Technology
2.5k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
気軽に始めるGraviton2マネージドサービスによるコスト最適化 / Amazon Game Tech Night #23
https://gamingtechnight.connpass.com/event/230933/
FUJIWARA Shunichiro
November 25, 2021
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
530
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
2.2k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
6.1k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
400
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
14k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.9k
alecthomas/kong はいいぞ
fujiwara3
7
2.6k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.8k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
5.6k
Other Decks in Technology
See All in Technology
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
0
100
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
510
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
2
470
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
110
Claude Code本って、 読む必要あるの?
oikon48
2
470
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
380
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.1k
Minecraft JavaのMODをSwiftで作る
1mash0
0
180
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.8k
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.1k
データ_AIの事業の勝敗をわけるもの
nek0128
1
450
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
230
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
Technical Leadership for Architectural Decision Making
baasie
3
570
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Code Review Best Practice
trishagee
74
20k
Chasing Engaging Ingredients in Design
codingconduct
0
310
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
We Have a Design System, Now What?
morganepeng
55
8.3k
Transcript
気軽に始める Graviton2 マネージドサービスによるコスト最適化 2021.11.25 Amazon Game Tech Night #23 ゲームワークロードにおけるコスト最適化
面白法人カヤック 藤原俊一郎 @fujiwara
@fujiwara SREチーム - 自社サービスを主に担当 ISUCON 11優勝 github.com/kayac/ecspresso Amazon ECS デプロイツール
github.com/fujiwara/lambroll AWS Lambda デプロイツール
Game & Community
Graviton2 AWS により 64-bit の Arm Neoverse コアを使用してカスタム構成されたプロセッサ Arm CPU
は Intel(AMD64)CPUとはバイナリ互換性がない 当然、OSもアプリケーションもArm用にビルドされたものでないと動かない 正直、全然気軽ではない でも速くて安いらしい! 比較し得る現行世代の x86 ベースインスタンスより最大で 40% 向上したコストパフォ ーマンスを発揮します。 aws.amazon.com/jp/ec2/graviton/
マネージドサービスで『気軽に始める』Graviton2 自分でOSやアプリケーションを動かすのはArm用のビルドが必要でちょっと大変 OSやアプリケーションを自分で動かさなければ気軽に使えるのでは? → AWSのマネージドサービスで Graviton2 気軽に「速くて安い」恩恵を受けられる!? 今日は ElastiCache, Aurora,
Lambda, Fargate について話します
Graviton2 ElastiCache Redis 2020/11 リリース 2020/11 とあるサービスで R5.large → R6g.large
に切り替え 動機「使ってみたかったから」
Graviton2 ElastiCache Redis の移行方法 同一 Replication Group 内に異なるインスタンスを混在できない ReaderとしてGraviton2インスタンスを追加→Failoverで切り替え、などは不可 サービスをメンテナンスに
snapshot を作成 snapshot からレストア ダウンタイムがそれなりに大きくなる(数十分程度)ので無停止移行は難しい
Graviton2 ElastiCache Redis 移行した結果 コマンドのレイテンシが明らかに下がっている = 速い! (CPU使用率も微減) r5.large 0.259USD/hour
→ r6g.large 0.247USD/hour = 安い! (5%ですが)
Graviton2 ElastiCache Redis まとめ 速い、安い、使い勝手は何も変わらない 新規で使わない理由はない ただし移行はダウンタイムが発生するので面倒 Readerに混ぜてfailoverとかできるようになってほしい 検証環境などはT系にGraviton2が来ないのでt3のまま。t4gも欲しい 2021/11/21
T4g インスタンスが来ました! aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-elasticache-supports-t4g- graviton2-based-instances/
Graviton2 Aurora MySQL 2021/03 リリース 弊社の構成において、Aurora(RDS)のコスト比率は高い(全体の約25%) ここを削減できると効果が高い
Graviton2 Aurora MySQL Aurora MySQL 5.6系は非対応 MySQL 5.7系(Aurora MySQL 2.x)以降のみ対応
順番に移行していく必要があった 1. MySQL 5.6 → 5.7 アプリケーションの対応 2. Aurora MySQL 1 → Aurora MySQL 2 3. R5 インスタンス → R6g インスタンス
MySQL 5.6 → 5.7 アプリケーションの対応 5.7 にしてとりあえずCIを回す 落ちたテストを直す GROUP BY
で ORDER BY していないクエリで返却順が変わったとか テストがカバーし切れてないところは別途QAで Perlで10万行以上のアプリケーション(ぼくらの甲子園!ポケット, Lobi) どちらも数カ所の修正でいけた 実際のDBをテストに使っている場合、そこまで大変ではないはず
Aurora MySQL 1 → Aurora MySQL 2 移行方法はいくつかあるので、要件に応じて選択 1. in
place upgrade - 既存のクラスタをそのままアップグレード お手軽 (マネコンポチー) ダウンタイムが大きい 何かあった場合に戻すのが面倒 2. snapshot からのレストア - 別クラスタに復元→切り替え 元のクラスタはそのまま残っているので切り戻しが楽 Graviton2 移行も同時にできる snapshot取得 → 起動までのダウンタイムはやはり大きい 3. snapshot からレストア + binlogレプリケーション ダウンタイムが一番短い (レプリケーション停止→アクセス先変更だけ) Graviton2 移行も同時にできる 面倒くさい
Aurora MySQL 1 → Aurora MySQL 2 であったこと Auroraクラスタが本番系に3個あるプロダクト 安全性と手間のバランスを考えて、2.
snapshotから別クラスタ復元を選択 事前に複製したクラスタでsnapshotからの復元時間を検証(3個同時) 1時間程度ですべて終わることを確認 実際にサービスをメンテナンスに入れてアップグレードすることに メンテナンス時間は余裕を見て設定 3クラスタ同時に復元開始 なぜか2クラスタしか進まない (事前検証と違う!?) 2クラスタの復元が終わった途端に残りの1クラスタが進行開始 ここでメンテ時間を突き抜けたので切り戻し…(後日binlogレプリでやり直しました)
None
Aurora R5 インスタンス → R6g インスタンス 移行 同一クラスタ内に異種インスタンスを混在できる いきなりインスタンスタイプを変更してもいいが、慎重にするなら… 1.
Reader として R6g インスタンスを追加 2. Reader Endpoint を使ってクエリを振り分けて様子見 3. 問題なければ順次 Reader のインスタンスタイプ変更 4. 最後に failover 注意: カスタムエンドポイントのメンバーを「変更」すると 変更中に名前が引けないダウンタイムが発生してつらい目に遭います 必ず別のカスタムエンドポイントを作って切り替えること
None
Graviton2 Aurora R6g が起動できないAZ インスタンスを 3AZ に分散していた とある AZ で
R6g.8xlarge が起動できな かった 毎朝起動チャレンジ → 失敗 一週間繰り返したが無理だったの で諦めて一時的に 2AZ 運用
Graviton2 Aurora であったこと Aurora 2.10.0 → 2.10.1 へのバージョンアップが R6g/T4g 混在クラスタで失敗
R6g のみにしたらできた → サポートで本来はできるはずだができない問題と確認 (修正されました) T4g の RI(Reserved Instance) が買えない (2021/11/24時点) まだ出たばかりなのでいろいろありそう サポートを積極的に使っていきましょう
Graviton2 Aurora まとめ クラスタ内にインスンタンスタイプ混在ができる → 本番ワークロードで少しずつ試せる (速いかは微妙だったが) 安い (約10%Off) Auroraは高額になりがちなので移行メリットが大きい
R5.8xlarge 5.60USD/h → R6.8xlarge 5.012USD/h MySQL5.6互換はそろそろ EoL なのでまだの人は頑張って移行しましょう MySQL8.0互換も出ています(2021/11/18リリース)
Graviton2 Lambda 2021/09 リリース Amazon2 LinuxベースのRuntimeでGravion2が利用可能に カヤックの自社プロダクトの場合 Lambda では主にGoを使っている Goを使える人が多い
言語ランタイムでは頻繁なアップデートが必要になりがち Goはビルド済みバイナリをzipに入れるだけなのでランタイムに依存しない (まったくしないわけではないが影響は受けづらい) go1.x ランタイム は Amazon Linux 1 ベース Graviton2 を使う場合は provided.al2 ランタイムで
Graviton2 Lambda with Go Build github.com/aws/aws-lamda-go 1.18 以降を使う go1.x /
provided.al2 どちらにも対応できる GOOS=linux GOARCH=arm64 でビルドする できたバイナリを bootstrap というファイル名で zip に入れる (Lambda カスタムランタイムの仕様)
Graviton2 Lambda with Go Deploy github.com/fujiwara/lambroll はGraviton2リリース後、即対応済み(v0.12〜) 設定ファイル(function.json)に Architectures 要素を追加
Runtime: provided.al2 を指定 // function.json { "Architectures": [ "arm64" ], "Runtime": "provided.al2", // ... } これだけで Graviton2 対応 Lambda に!
Graviton2 Lambda まとめ 安い (GB-秒単価 25% off) 性能差は観測できていない (CPU boundな処理をしないので)
Go ならビルド時の環境変数の設定変更のみ 既存関数もArchitecturesを設定変更できる。気軽に移行可能
Graviton2 Fargate まだ Graviton2 対応は来ていない 2021/11/24 にリリース!! タスク定義の runtimePlatform を指定すると
Graviton2 で動く { // ... "runtimePlatform": { "cpuArchitecture": "ARM64", // X86_64 "operatingSystemFamily": "LINUX" }, } 当然ですが Image を Arm 用にビルドする必要あり $ docker buildx build --platform=linux/arm64,linux/amd64 .
Graviton2 Fargate Deploy github.com/kayac/ecspresso では v1.7.0(2021-10-30リリース)で対応済み 2021-10-30リリース ← 一ヶ月前? 実は
Windows Containers サポート時点で SDK に対応が入っていた
Graviton2 Fargate まとめ 安い (CPUもメモリも20%Off) vCPU/hour $0.05056 → $0.04045 GB/hour
$0.00553 → $0.00442 (性能評価はまだ) 数タスク起動したら… (2021/11/25時点、ap-northeast-1) Capacity is unavailable at this time. Please try again later or in a different availability zone イメージのビルドとテストを ARM64 で回す必要がある とはいえ、もはやハードルはそこだけ?
まとめ Graviton2 はマネージドサービスで気軽に始められます ElastiCache, Aurora は使う側としては何も変わらない 確実に安い (5%〜20%) 速い…かどうかは要検証 リソースの潤沢さは…(使う人が多くなれば増えるはず)
Lambda, Fargate も Graviton2 対応 アプリケーションの Arm 化も今後は気軽に進められそう