Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模ゲームタイトルのIaaSコストマネジメントへの技術アプローチについて / A technical approach to IaaS cost management for large-scale game titles

大規模ゲームタイトルのIaaSコストマネジメントへの技術アプローチについて / A technical approach to IaaS cost management for large-scale game titles

■イベント 

【EngineeringTeamPresentation】各社の事業を支えるインフラストラクチャ―
https://sansan.connpass.com/event/214765/

■登壇概要
タイトル:大規模ゲームタイトルのIaaSコストマネジメントへの技術アプローチについて
発表者:株式会社ディー・エヌ・エー システム本部 IT統括部 IT基盤部 第四グループ グループリーダー 天野 知樹

▼Builders Box

https://buildersbox-online.com/

Builders Box

August 13, 2021
Tweet

More Decks by Builders Box

Other Decks in Technology

Transcript

  1.                        © DeNA Co., Ltd. スポットインスタンスの活用 5 南場「まず、ステートレスサーバーとしてスポットインスタ ンスを徹底的に活用するということです。このステートレ スとステートフルを分けてスポットインスタンスを使うとい

    うのは他の会社でもやっているかもしれませんが、当社 の場合はエグいほどそれを徹底しました。
 
  もちろんオンデマンド注文が入ると2分前の告知で落ち てしまうわけで、だからこそ安いのですが「2分あれば対 応できるよ」という我々の技術陣、エンジニアのオンプレ 時代から培ってきた高い技術力、対応力と相まってそれ が実現できたということです。」
 
 弊社フルスイング記事より抜粋
 https://fullswing.dena.com/archives/7425

  2.                        © DeNA Co., Ltd. スポット技術の中身 6 「2分あれば対応できるよ」
 
 とは言ったものの、実際に2分で対応するのは無理です。


    
 サーバが立ち上がってサービス可能な状態にするには約3〜5分かかる
 (インスタンス起動 > ssh 可能確認 > chef > 設定ファイルのrsync > Rails の bundle install > サービスの正常性確認 > サービスに入れる)
 
 つまり、
 2分前のスポット中断通知を受け取ってから、オンデマンドを立ち上げ始めたの では、間に合わない
 
 

  3.                        © DeNA Co., Ltd. スポット技術の中身(理論) 7 解決のポイントは以下3つ
 
 スポットプールを多数使用して、落ちるタイミングを分散


    ◦ プールは AZ とインスタンスタイプの組み合わせ
 ◦ たくさんプールを使えば、それが落ちたときの影響は極小化
 ◦ 多数のプールが同時に落ちなければサービスは維持される
 
 プールのインスタンスの性能は揃える
 ◦ CPU使用率は常に均一にする (c5 と c4 を混ぜるのはNG)
 ◦ 性能が低いインスタンスが混じると、それがボトルネックになる
 
 スポットが立たないプールはオンデマンドを立てる
 ◦ プールの細分化を維持
 
 その結果、サイバーマンデーやニューイヤーセール等のスポットが全滅するよ うなときでも、サービスは正常に維持
 平常時のステートレスサーバのスポット率は、ほぼ 100% 

  4.                        © DeNA Co., Ltd. スポット技術の中身(実装) 8 AZ 数 IP

    数 c5.2xlarge 5 1 c5.4xlarge 5 2 c5.9xlarge 5 4 c5d.9xlarge 5 4 合計 20 - Proxy c5.2xlarge c5.4xlarge c5.9xlarge • ファミリー統一、タイプをバラバラに
 ◦ セカンダリ IP を活用し、コア数に応じた負荷分散
 
 4xlarge と 9xlarge ではコア数は 2 倍ではないが、性能比は 2 倍になった

  5.                        © DeNA Co., Ltd. 独自実装の AutoScale 9 南場「サービス単位で何時がピークとかそういうことに加えて、 各サービスいろんな施策を打つわけなんですね。たとえば

    ゲームの施策やイベント。ゲームのイベントを開始する時は相 当なトラフィックが集中します。そしてイベントにおいてもゲーム の中にいくつもヤマ場をつくっていくわけです。かつイベントの 終盤では、ものすごい駆け込みのトラフィックが集中するわけ です。
 
  そういったことをきめ細かく把握して、なるべく正確に予測を して、絶対にピークは落とさない。落とさないけれどもきめ細か くスケーリングするということで相当なコスト削減を実現しまし た。」
 
 弊社フルスイング記事より抜粋
 https://fullswing.dena.com/archives/7425

  6.                        © DeNA Co., Ltd. 独自 AutoScaling 技術の中身 10 •

    1秒単位でCPU使用率を取得し、DBに記録、autosacler は常にその DBを 参照して、急激な負荷増加に対しては即座に autoscale を発動させる
 
 • 増加させるサーバは先ほどのスポットインスタンスと統合しており、リソース 不足のプールではオンデマンドを立てるし、リソースがあればスポットを立 てる
 
 • 各種サーバを自動的にs-in させるまでの、ワークフローやエラーハンドリン グ(Step Function的な機能をEC2の中で実行)
 
 • 時間指定による増設、タイミングはプロダクトチームと連携
 
 • 台数増設失敗時の監視

  7.                        © DeNA Co., Ltd. 南場「シャーディングではもちろんデータを分割して対応す るわけですけれども、サービスをローンチした時にはユー ザーが殺到します。サービスの種類にもよりますけれど、 多くのサービスにおいて最初に入ったユーザーがすべて ずっとアクティブで居続けることはなく、一部のユーザーは

    アクティブでなくなります。そのため、少し時間が経過して 落ち着いたときに分割したデータを統合していくということ を行いました。
 
  サービスを全く止めずにデータを統合するというのは極 めて高い技術力を要することで、サービスをローンチして から3ヶ月後に落ち着いた時、半年後、1年後という単位で かなりきめ細かく調整をし、台数にして75%も削減できた ということです。」
 
 弊社フルスイング記事より抜粋
 https://fullswing.dena.com/archives/7425
 
 Sharding の調整で、データベース台数を削減 11
  8.                        © DeNA Co., Ltd. Sharding 調整の中身 12 • ゲームをメンテナンスに入れずに

    shard 統合を実施
 
 • i3/i3en インスタンスの圧倒的なIOPS性能を生かして、高い集約率を達成
 
 
 
 
 
 
 
 NVMe の IOPS はAWS の公称値を掲載 
 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/storage-optimized-instances.html 
 vCPUs Memory NVMe IOPS r/w Cost i3.2xlarge 8 61GiB 1.9TB 41万/18万 $456/月 r5.2xlarge 8 64GiB - - $368/月
  9.                        © DeNA Co., Ltd. Sharding 調整の中身 13 • 統合集約のためのスクリプトを準備


    ◦ MHA を利用
 ◦ 故障時の自動フェイルオーバー/高速手動フェイルオーバー
 ◦ 代替機の自動構築
 
 • 1台のインスタンス内に複数の MySQLを動かし、セカンダリIPに対応させる
 
 

  10.                        © DeNA Co., Ltd. まとめ 14 IaaS は柔軟性とコストマネジメントに優れる
 


    AWS Summit 南場登壇 動画(Amazon Web Service Japan 公式 Youtubeチャネルより) https://youtu.be/AIoItC51iac?t=25m16s
 
 スポットインスタンスでサービス中断を起こさないための方法 https://engineer.dena.com/posts/2020.01/spot-instances-availability/ 停止メンテ無しに MySQL を Shard 統合をする方法 https://engineer.dena.com/posts/2019.12/multi-instance/
  11.                        © DeNA Co., Ltd. 最後に少しだけ宣伝 15 本日紹介した仕組み(プログラム)を自動で運用できるようにするのが、DeNA の IaaS

    インフラエンジニアの SRE的な働き方
 DeNA のインフラエンジニア・SRE への中途採用エントリー https://career.dena.jp/job.phtml?job_code=1575