Advertisement

【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?

Software Developer at MONOBIT Inc
Apr. 2, 2019
Advertisement

More Related Content

Slideshows for you(20)

Similar to 【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?(20)

Advertisement

More from モノビット エンジン(11)

Recently uploaded(20)

Advertisement

【GCC2019】モノビットエンジンがついにクラウド化!しかし、インフラでまさかのAzureを利用!?本当に大丈夫なの?

  1. #gcconf2019 #GameStackJP モノビットエンジン がついにクラウド化! しかし、インフラでまさかのAzureを利用?! 本当に大丈夫なの? 日本マイクロソフト株式会社 GBB 増渕大輔 モノビットエンジン株式会社 代表取締役社長 安田京人
  2. #gcconf2019 #GameStackJP 本日は男二人でお話させていただきます 日本マイクロソフト株式会社 グローバルブラックベルト 増渕大輔 モノビットエンジン株式会社 代表取締役社長 安田京人 ハッシュタグ #GameStackJP でお願いします!
  3. #gcconf2019 #GameStackJP Game Stack
  4. #gcconf2019 #GameStackJP 「Microsoft Game Stack」を発表
  5. #gcconf2019 #GameStackJP Microsoft Azure Xbox Adaptive Controller マイクロソフトの ゲーム事業いろいろ xCloud Project
  6. #gcconf2019 #GameStackJP Microsoft クラウド サービス① | PlayFab • マネージドゲームサーバー • グッズ管理、課金管理 • アカウント管理 • トーナメント • マルチユーザー • マルチプラットフォーム
  7. #gcconf2019 #GameStackJP • Choice for How and When You Play • すでにクインシーのデータセンターにはXboxが搭載 • 近日中に、54データセンターに拡大予定 Microsoft クラウド サービス② | xCloud
  8. #gcconf2019 #GameStackJP Microsoft クラウド サービス③ | Azure • 常時接続 常時稼働 • 無制限のリソース • フレキシビリティ • オープン • 豊富なサポート 2 regions in Japan 140 available in 140 countries 54 regions worldwide
  9. #gcconf2019 #GameStackJP Azure は デベロッパー向けのクラウド AI と アナリティクス コグニティブ サービス マシンラーニ ング Bot サービス HD イン サイト コンピューティング VMs と ス ケールセット コンテナ サーフィス ファブリック ファンクション データベースと ストレージ Azure SQL Cosmos DB Redis キャッシュ Blob スト レージ アプリと コンテンツ Mobile アプリWeb アプリ CDN ノーティフィ ケーションハブ 開発と デプロイメント Azure DevOps VS アプリ センター Azure バッチ ハイブリッドと ネットワーキング バーチャル ネットワーク ロード・バ ランサー セキュリティ センター ExpressRoute
  10. #gcconf2019 #GameStackJP 54REGIONS WORLDWIDE Computational performance Memory Disk storage Networking データセンターは世界最大規模
  11. #gcconf2019 #GameStackJP マイクロソフト海底に潜る 太平洋80Tbps 大西洋160Tbps データセンター間NW 1.4 million miles 敷設 海底DC United States United States Canada Mexico Venezuela Colombia Peru Bolivia Brazil Argenti na Atlanta Ocean Algeria MaliNiger Nigeria Cha d Liby a Egy pt Sud an Ethi opia Dr Cong oAngol a Zambi a Namb ia South Africa Greenla nd Svalbar d Sweden NorwayUnited Kingdo m France PolandUkraine Turkey Saudi Arabia Iran Kazakist an India Russia China Myanm ar (Burma) Indian Ocean Indonesi a Australi a Pacific Ocean Pacific Ocean
  12. #gcconf2019 #GameStackJP 何がいいの? 海底データセンター http://natick.research.microsoft.com/
  13. #gcconf2019 #GameStackJP PC・xBox 方面でよく使われてきました
  14. #gcconf2019 #GameStackJP Pearl Abbys : 黒い砂漠 •5 million registrations in one month •3 million downloads at launch https://blogs.msdn.microsoft.com/sqlserverstorageengine/2018/07/23/pearl-abyss-massive-scale-using-azure-sql-database/ On February 28, 2018, Pearl Abyss launched Black Desert Mobile on Microsoft Azure virtual machines utilizing 7,500 cores and 46 instances of Azure SQL Database in Korea Central.
  15. #gcconf2019 #GameStackJP 日本でもご利用いただいています
  16. #gcconf2019 #GameStackJP APIサーバーメ ンテナンス サーバー マスタ ーレ プリ ケーショ ン 運用自動化、 障害通知など Unityアセッ ト CDN Traffic Manager • APIサーバー、 SQL DBはそれぞれ東日本、 西日本に分けて配置 • APIサーバーはASEを 、 それ以外のサー バーはAppServiceを利用 • メ ンテナンス中のみメ ンテナンスサーバー にト ラ フ ィ ッ ク を送る 管理ツール サーバー • チャ ッ ト • 電話 • メ ール WebSocket用 サーバー 仮想マシンを1台も使わない PaaS事例 ①
  17. #gcconf2019 #GameStackJP 仮想マシンを1台も使わない PaaS事例 ② Supported by CLOUD CREATIVE STUDIOS, INC,
  18. #gcconf2019 #GameStackJP ゲーム業界特化 Azure CSP! Game Platform for Azure™ を提供開始 パートナー | (株)クラウドクリエイティブスタジオ
  19. #gcconf2019 #GameStackJP パートナー | モノビットエンジン株式会社 http://jp.gamesindustry.biz/article/1903/19032501/
  20. #gcconf2019 #GameStackJP モノビットエンジンさんとのきっかけ •最近はゲーム開発事例も増えてきた‼ •もっと経験と実績数を増やしたい • 特に Linux !!! •ゲーム業界は製品だけでなく、人・経験値が大事 •経験豊富な会社とガチでやってみたかった! 通信エンジンを提供して いるので物理環境から、 パブリッククラウドまで 様々な環境での知見
  21. #gcconf2019 #GameStackJP 自己紹介 安田 京人 モノビットエンジン株式会社 1980年横浜生まれ。 システムエンジニアを経て、コンシューマゲーム開発にプログラマーとして6年間従事。 携帯ゲーム機から据え置き機まで、アクションを中心に格闘ゲームやスポーツゲーム等 様々なタイトル開発に関わる。 その後、ネットワークゲーム時代の到来を予見し、その分野で展開を試みる株式会社モ ノビットへ入社モノビットではプログラマー責任者兼ミドルウェア事業部長として、リ アルタイム通信の研究開発に従事し、統合サーバパッケージ「モノビットエンジン」の 開発ディレクションとエヴァンジェリストとしても活動。 2018年7月「モノビットエンジン株式会社」代表取締役に就任。 CEDEC、GTMF、Unite等講演多数。 21
  22. #gcconf2019 #GameStackJP アジェンダ •モノビットエンジンのご紹介 •モノビットエンジンクラウドのご説明 •Azureを使ったモノビットエンジンクラウド開発 の実際 →Azureをなぜ採用しようとしたのか? →Azure構築の実際
  23. #gcconf2019 #GameStackJP モノビットエンジンVer2.0シリーズ 23 スマホ/家庭用ゲームやVRコンテンツで、マルチプレイを簡単に実現できる、リアルタイム通信ミドルウェアです。 主に3つの製品ラインナップで展開しています。2017年にVer2.0に進化しました! 1,Monobit Revolution Server (略称:MRS) MMORPGや、多人数MOアクションゲームにも対応出来 る処理速度とレスポンスを追求した、高速ゲームサーバ です。シンプルなAPIで超高速通信かつ大規模同時接 続を実現します。 2,Monobit Unity Networking 2.0 (略称:MUN) Unityに特化した通信ミドルウェアです。マッチング、ルー ム、通信リレーの機能が標準で用意されており、ネット ワークの知識がなくてもマルチプレイを実装可能。MRSと 連携して、サーバにもC++/C#でコードが書けるように進 化しました。 3,VR Voice Chat VRコンテンツに「ボイスチャット機能」を手軽に実装できる Unity専用の無料アセットです。MUNを搭載し、正確な物 理同期・音声同期の実現が可能です。xRデバイスへの 搭載実績もあり、様々な業態にて利用されています。 本日の メインテーマは こちら!
  24. #gcconf2019 #GameStackJP モノビットエンジン採用実績 24
  25. #gcconf2019 #GameStackJP MUN (MonobitUnityNetworking) のご紹介
  26. #gcconf2019 #GameStackJP ■MUN(Monobit Unity Networking)とは 26 クライアントのみでも実装できる、Unity特化型の通信エンジン Unity5.x、Unity2017.x Unity2018.3
  27. #gcconf2019 #GameStackJP ■ MUN(Monobit Unity Networking)の特徴 27 ●多彩な機能が多様なプラットフォームで利用可能 MUN で実装できる機能の一部 - サーバ接続/切断、オフラインモード - ロビーやルームに対する入室/退室制御、ロビーとルームの状態取得 - プレイヤー情報の取得(サーバ内検索, プレイヤーパラメータの設定と取得) - RPCによる、任意のクライアントに対する情報送信および受信 - シーン内オブジェクトの位置・姿勢・アニメーション等の同期 - 各種条件に応じた、マッチメイキング制御 - ノンプログラミング通信制御 etc... ※すべて単一のコンポーネントやAPIで実装可能 利用可能なプラットフォーム
  28. #gcconf2019 #GameStackJP ■ MUN(Monobit Unity Networking)の特徴 ●すべての通信ロジックを、クライアント側オンリーで実装可能 - 『サーバサイドの構築なしでリアルタイム通信を実現したい』というご要望に対応 - 通信ロジックも含め、オンラインゲームのすべての制御をクライアント側でコーディング可能! ※MUNサーバはbroadcastでリレー配信する役割を果たします - クライアントコードをそのままサーバに移植して、簡単にチート対策! - MUN標準機能のサーバのソースコードを公開中。VisualStudioでカスタマイズ可能。 ●必要に応じて、サーバにコードを書くことも可能! サーバとクライアントでコードを自在に配置可能 MUN リリース当初からの設計思想を実現 MUN2.0より、MRSと連携してC++/C#言語でサーバ開発が可能になりました!
  29. #gcconf2019 #GameStackJP ■ MUN(Monobit Unity Networking)の特徴 - MUNサーバ側は、TCP/UDPの通信ポート双方で待ち受けしている - 同一認証のMUNクライアントであれば、TCPの接続クライアントとUDPの接続クライアントを 同一ルームに接続させることも可能 ●TCP, UDPの通信プロトコルの利用 - MUNの内部処理で行われる送受信(ロビー/ルームの入退室など)の通信をUDPで行なう場合、 すべて RUDP で伝送される - RPC(リモートプロシージャコール)、およびオブジェクト同期通信のみUDP/RUDP の個別設定が可能 速度を重視するか信頼性を重視するか、 場面によって最適な通信プロトコルを選択可能 MRSに基づき、TCP/UDPの通信プロトコルをサポート MUNにおける UDP/RUDP接続プロトコルについて
  30. #gcconf2019 #GameStackJP UnityのWebGL出力にも対応! ●ブラウザゲーム開発でMUNが使用可能 Unityで開発したスマホタイトルのブラウザへの移植や新規開発においても、 MUNが利用可能となっておりマルチプレイ機能の組み込みが非常に容易に行えます!
  31. #gcconf2019 #GameStackJP 新製品モノビットエンジン クラウド
  32. #gcconf2019 #GameStackJP 新製品モノビットエンジンクラウド モノビットエンジンクラウドとは、 バックエンドにMUN(Monobit Unity Networking)を搭載し たクラウドサービスでいわゆるSaaSです。 サーバを自分で用意せずともUnityだけでマルチプレイが実装出 来る製品です。
  33. #gcconf2019 #GameStackJP 新製品モノビットエンジンクラウド バックエンドがMUNなので、 勿論ボイスチャットも使えます!
  34. #gcconf2019 #GameStackJP 新製品モノビットエンジンクラウド • サーバプログラミング不要 モノビットエンジンクラウドを使用することで、 クライアントプログラムの開発に集中。 • MRSによる高速通信 通信パフォーマンスの劇的な向上で、 低遅延の快適なマルチプレイをご提供。 • 高速なスケーラビリティ 開発規模に合わせた柔軟な拡張性を素早くご提供。 • インフラコストの削減 サーバ構築や運用に必要だったコストの削減。
  35. #gcconf2019 #GameStackJP 新製品モノビットエンジンクラウド • サイトだけで完結 導入から運用まで、サイト内だけで完結できます。 • 専用アセット 専用Unityアセット使用でカンタンに実装。 • 通信量・CCU 当月の通信量や、CCUなどサイト内で確認。 • アプリ追加 いつでもアプリの作成・追加・メンテナンス・削除が可能。 • プラン変更 サービス運用中でもプランを自由に変更可能。
  36. #gcconf2019 #GameStackJP 利用料金
  37. #gcconf2019 #GameStackJP モノビットエンジン クラウドのつかいかた
  38. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた • モノビットエンジンクラウド https://web.cloud.monobitengine.com/top にアクセスし新規登録をクリックします
  39. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた • 規約に同意し、メールで認証を行い パスワードを登録します。
  40. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた •これで、新規にアプリが作られます (枠線のアプリケーションIDとエンドポイントは後ほど使用します。)
  41. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた •モノビットエンジン公式HPから Unityクライアントアセットをダウンロードします
  42. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた •Unityを開いて、ダウンロードしたパッケージを インポートします
  43. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた • window->MonobitUnityNetworkin->PickUpSettings を実行します • MonobitServerSettingsの HostTypeを 「MBECloud」に変更します。
  44. #gcconf2019 #GameStackJP モノビットエンジンクラウドのつかいかた •先程のアプリケーションIDとエンドポイントを ServerSettingsに設定すれば、準備完了です
  45. #gcconf2019 #GameStackJP Azureを使ったモノビットエ ンジンクラウド開発の実際
  46. #gcconf2019 #GameStackJP Azureをなぜ採用しようとしたのか? •当初のAzureに対するイメージ ホストマシンがWindowsマシンでメンテナンスが 入り勝手に再起動されてしまうからゲームには使い にくい。 →正直イメージが悪い…。
  47. #gcconf2019 #GameStackJP Azureをなぜ採用しようとしたのか? •増渕さんとの出会い →昨年のGCC2018の講演を聞いてくれたMicrosoft増渕さんに声をかけられ る。 安田さん、モノビットエ ンジンをAzureでデプロイ するスクリプトをネット で公開しませんか?簡単 ですよ!
  48. #gcconf2019 #GameStackJP Azureをなぜ採用しようとしたのか? • とりあえずBasicなデプロイスクリプトを見てみる。 →なるほど。簡単かも。 →最新のAzureに 興味がわいてくる。
  49. #gcconf2019 #GameStackJP Azureの再起動問題 • ホストマシンのメンテナンスで勝手に再起動する問題 に対する懸念 →自分のAzureの知識は2015年とかで止まっていた。 →早速増渕さんに問い合わせた所、 計画的メンテナンスという、 事前にユーザーがメンテナンスタイミングを知る事 が出来る仕組みがあり、メンテナンス時刻をある程度制 御する事が可能。
  50. #gcconf2019 #GameStackJP Azureの再起動問題 つまり、事前にメンテナンスのタイミングを知る事 が出来るのであれば、対策はいくらでも立てられそ う。(実際どんな対策をしているのかは後述) →再起動問題についての懸念は払拭出来た。
  51. #gcconf2019 #GameStackJP Azureの性能 今回のクラウドサービスはコンテナで構築されており、コン テナでの挙動確認が必須。 Azure Virtual Machine上に複数コンテナを設置した状態で数 万単位のコネクションを貼って負荷試験を行った所、 4vCPUを使ったマシンでは、CPU使用率が60%程度で、 Virtual Machineを増やしてスケールアウトする事で負荷分散 が確認出来た。 →性能要件的には問題なさそう。
  52. #gcconf2019 #GameStackJP サポート体制 •ちょっとした質問等でもサポートを通さずとも、 質問できる環境があった。 •増渕さんのフットワークが軽いので困った時のパ ワーサポートも期待できる。 →検証時にはAzurePortalの操作をハンズオンして くれたりとめっちゃ熱心
  53. #gcconf2019 #GameStackJP 結論 •いくつかの懸念点は払拭できて、 今回作ろうとしているサービスの要件も満たせた。 →本番サービスをAzureでチャレンジしてみよ う!
  54. #gcconf2019 #GameStackJP Azure構築の実際
  55. #gcconf2019 #GameStackJP 実際の構築 Azure Portalからインスタンスタイプを選択するだ け。 日本語のUIも整っているので、直感的に操作できる のは凄く良い。
  56. #gcconf2019 #GameStackJP 構成図 Docker コンテナ mun_master mun_resolver mun_proxy mun_room mun_proxy mun_room Docker コンテナ mun_resolverの エンドポイント取得用 サーバ データベース Amazon SES WEBフロントサーバ [ゲームサーバ (Azure VirtualMachine)] FsV2 x N WEBフロント ゲームサーバ (Azure VirtualMachine) [WEBフロントサーバ(Azure VirtualMachine)] WebApps
  57. #gcconf2019 #GameStackJP 再起動を伴うメンテナンス周りの運用手順 AzurePortalからこ んな感じで計画さ れているメンテナ ンスが視認出来る
  58. #gcconf2019 #GameStackJP 再起動を伴うメンテナンス周りの運用手順
  59. #gcconf2019 #GameStackJP 再起動を伴うメンテナンス周りの運用手順
  60. #gcconf2019 #GameStackJP 再起動を伴うメンテナンス周りの運用手順
  61. #gcconf2019 #GameStackJP 結論 今回のサービスで利用するための要件的には意外と 大丈夫でした!
  62. #gcconf2019 #GameStackJP 今後の野望
  63. #gcconf2019 #GameStackJP モノビットエンジンとAzureの取り組みの今後 Microsoft Azureと一緒に世界展開を目指します! →世界54のリージョン、 140ヵ国でサービスを提供しており、 拠点数が圧倒的!
  64. #gcconf2019 #GameStackJP Microsoft IaaS について
  65. #gcconf2019 #GameStackJP 後発だが、頑張っている Azure IaaS Below the MQ for IaaS on August 2013 Below the MQ for May 2014. GARTNER MAGIC QUADRANT FOR INFRASTRUCTURE AS A SERVICE (IAAS) 2018
  66. #gcconf2019 #GameStackJP Azure は デベロッパー向けのクラウド AI と アナリティクス コグニティブ サービス マシンラーニ ング Bot サービス HD イン サイト コンピューティング VMs と ス ケールセット コンテナ サーフィス ファブリック ファンクション データベースと ストレージ Azure SQL Cosmos DB Redis キャッシュ Blob スト レージ アプリと コンテンツ Mobile アプリWeb アプリ CDN ノーティフィ ケーションハブ 開発と デプロイメント Azure DevOps VS アプリ センター Azure バッチ ハイブリッドと ネットワーキング バーチャル ネットワーク ロード・バ ランサー セキュリティ センター ExpressRoute 振り返り
  67. #gcconf2019 #GameStackJP 仮想マシンと仮想マシンスケールセット • スケールセットは 負荷分散が行われ る同一の VM のグ ループ • VM インスタンスの 数を自動的に増減 • インスタンス数は 最大 1,000 個 https://tsmatz.wordpress.com/2016/03/30/usage-of-azure-vm-scale-sets/
  68. #gcconf2019 #GameStackJP Gen 2 12 Cores 32 GiB Gen 3 16 Cores 128 GiB HPC 24 Cores 128 GiB Gen 4 24 Cores 192 GiB Godzilla 32 Cores 512 GiB Gen 5.1 40 Cores 256 GiB GPU Gen 5 16 Cores + GPU 256 GiB Beast 72 Cores 4096 GiB Gen 6 48 Cores 192GiB サーバーは第六世代に
  69. #gcconf2019 #GameStackJP Dv3 Fv2 • Intel Xeon E7-8890 v3 (Haswell) • Largest VMs in Azure • Up to 128 vCPUs, 4TB RAM • Intel Broadwell E5-2673 v4 • Hyper-Threaded CPUs • Up to 64 vCPU’s, 256GB RAM バランス型 • Intel Xeon E5-2673 v4 (Broadwell) • Hyper-Threaded CPUs • Up to 64 vCPUs, 432GB RAM • Intel® Xeon® Platinum 8168 processor (Skylake) 基本的はDv2/Dv3。マルチプレイはFv2。DBは、Ev3がおすすめ。 大規模システムは、M, Hv2, Lv2なども検討。GPUが必要なときはNx 最新のDv3, Ev3, Fv2などは、ハイパースレッディング がOn
  70. #gcconf2019 #GameStackJP それぞれのマシンの比較方法 • ACU = Azure SKU 間で計算 (CPU) パフォー マンスを比較するための標準ベンチマーク • Aシリーズ=100がベース vCPU - Azure Compute Unit (ACU) シリーズ ACU / vCPU vCore : コア Aシリーズ 100 1:1 Dv3シリーズ 160-190 2:1 Dv2シリーズ 210-250 1:1 Ev3シリーズ 160-190 2:1 Fv2シリーズ 195-210 2:1 Fシリーズ 210-250 1:1 Gシリーズ 180-240 1:1 Hシリーズ 290-300 1:1 Lシリーズ 180-240 1:1 Mシリーズ 160-180 2:1 SPECInt ベンチマーク スコアも公開 https://docs.microsoft.com/ja-jp/azure/virtual- machines/windows/compute-benchmark-scores
  71. #gcconf2019 #GameStackJP 最近は NIC 性能が格段に速くなっている Host SmartNIC FPGA Top of Rack Switch NIC ASIC SmartNIC CPU FPGAを活用したNIC 様々なネットワーク処理をFPGAへオフロード (ACL、カプセル化、NAT、etc) CPU負荷の軽減 性能と安定性の向上 2015年後半以降に導入されたサーバーに搭載 Accelerated Networking SmartNIC + SR-IOV 4vCPU or 8vCPU(HT)以上のVMで有効化可能 (無償) 最大30Gbps
  72. #gcconf2019 #GameStackJP Azure Cloud Shell Demo
  73. #gcconf2019 #GameStackJP Demo の環境 Fv2 Fv2 Cent OS 7.5 Ubuntu 18 LTS F4_s V2 2台 Accelerated Networking
  74. #gcconf2019 #GameStackJP 業界最速ストレージの登場
  75. #gcconf2019 #GameStackJP Ultra SSD の構成
  76. #gcconf2019 #GameStackJP Ultra SSD の構成(メディア) NVMe Ruler SSD https://edsffspec.org
  77. #gcconf2019 #GameStackJP Ultra SSD の構成( OCP: Olympus, FX- 16) NVMe SSDs (M.2 or Ruler) Hot swappable SSD Reduced Replica Rebuilds Supports future tech roadmaps OCP: Project Olympus, FX-16 https://www.opencompute.org/wiki/Server/ProjectOlympus
  78. #gcconf2019 #GameStackJP 1200 2400 4800 9600 19200 38400 76800 153600 160000 160000 160000 0 20000 40000 60000 80000 100000 120000 140000 160000 4 8 16 32 64 128 256 512 1024 2048 4096 IOPS DISK CAPACITY IN GIB Input / Output Operations Per Second (IOPS)
  79. #gcconf2019 #GameStackJP up to 64 TiB per disk up to 2000 MB/s per disk up to 160000 IOPS per disk < 1 ms Sub-millisecond クラウド業界最速のディスク
  80. #gcconf2019 #GameStackJP Premium Blob Storage Preview! SSD を備えた Azure object storage 高性能と低レイテンシを実現するオブジェクトストレージ ・プレビュー中の機能 ブロック blob と 追加 blob に対応 LRSで利用可能 Archive Cool Hot Premium
  81. #gcconf2019 #GameStackJP Azure Blobs Today High Throughput Blobs Premium Blobs Limited Public Preview htbbfeedback@microsoft.com Central US, East US 2, West US, North Europe (October), East US (October) http://aka.ms/premiumblob 40X 200X Massive Azure Blob Scalability
  82. #gcconf2019 #GameStackJP 昨年さらに進化した冗長構成の選択肢 • データセンターをまたがる「可用性ゾーン」という考え方が登場 Azure Site Recovery / Region PairsAvailability ZonesAvailability SetsPremium Storage Zone 2 Zone 3 Zone1 Region 1 Zone 1 Zone 2 Zone 3 Region 2 Data center 1 Data center 2 Hardware failure Rack level failure Datacenter outage Infrastructure (applicationsanddata) Single VM Rack 1 Rack 2 Consult SLAs based on business needs Select regions based on available services Acknowledge shared responsibilities Educate HA, DR and Backup for independent reliability needs Natural Disaster
  83. #gcconf2019 #GameStackJP リスク、信頼性、安定性
  84. #gcconf2019 #GameStackJP クラウドも壊れる
  85. #gcconf2019 #GameStackJP Availability 99.995% *AIR: 3 Availability 99.999% *AIR: 75 *AIR: 15 Availability 99.99% Nov Storage outage Downtime *AIR = Annual Interruption Rate (incl. Planned Maintenance) Full reboot for every host update Memory preserving updates introduction (<30sec) Self-maintenance for low impact in-place updates Planned Maintenance for decom Update Using Live Migration Kernel Soft Reboot Updates Reliability investments Platform capability, Customer controllability Project Tardigrade: VMs survive on most underlying HW or SW failures Batched updates for ultra-sensitive VMs Live Migration support extended Dedicated Hosts Gest OS update for VMSS VMs Self-maintenance for rebooting updates Scheduled Events GA Live Migration for healing Project Rainier: Azure Wide effort to reduce reboot count Live migration from degraded hardware Impact reduction for OS memory preserving update Control healing from degraded hardware Scheduled Events for Live Migration サーバー性能と同じくらい大事な信頼性
  86. #gcconf2019 #GameStackJP 可用性セット・障害ドメイン・更新ドメイン • 障害がおこりやすいハードウェアのあつまり(たとえばラック)を 「障害ドメイン (fault domain)」と呼びます。 • 障害ドメインは、電源やネットワーク装置が冗長化されています。 • ハードウェア障害が他のドメインに 影響しないように設計されています。 • 仮想マシンは「可用性セット」でくくる ことができます。 • 可用性セットのサーバー群の配置は、 障害ドメインをまたがって行われます。 • 「更新ドメイン」とはメンテナンス時 に再起動が行われる単位です。 障害ドメイン 障害ドメイン障害ドメイン ラック FC ・ ・ ・ ・ ・ ・ ルー タ ラック FC ・ ・ ・ ・ ・ ・ ルー タ ラック FC ・ ・ ・ ・ ・ ・ ルー タ 可用性セット
  87. #gcconf2019 #GameStackJP 昨年に大幅に改善された安定性 サーバー ラックに近い概念(電源と ネットワークを共有する サーバーのグループ)
  88. #gcconf2019 #GameStackJP 別なDC間の冗長構成でも安心のNW設計 Zone 2Zone 1 Zone x Load Balancer Standard Zone-redundant data path (regional anycast, public & internal, inbound & out) • AZ Ready Services
  89. #gcconf2019 #GameStackJP 都市適応型(ゲームサーバーに重要) 少なくとも3つのゾーンを持つ ゾーンは1つ以上のDCで構成 数10Km離れたゾーンもあるが、ゾーン 間の遅延目標は2ms以内 リージョンのネットワークを束ねる ゲートウェイ(RNG)がいずれかのゾー ンに配備 10s of Km Zone 1 Zone 2 Zone 3 Rng 1 Rng 2
  90. #gcconf2019 #GameStackJP 故障予知と、メンテナンス • 2つのダウンタイム • 1. 予期しないダウンタイム (主に故障) • 2. メンテナンス • メンテナンスはさらに2つに分けられる • 1. 計画外 (故障や不具合を予測できた場合) • 2. 計画的 (主にパッチ適用) 形あるものは壊れるので、冗 長化する メンテナンスの頻度を下げる ために、ライブマイグレー ションなどの工夫をしている じつはここがゲーム開発者に とって良くないことも!!
  91. #gcconf2019 #GameStackJP 実は Azure の高機能が悪影響することも 故障予測 (再起動無し) 再起動を伴うメンテナンス 通 知 https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/maintenance-and-updates
  92. #gcconf2019 #GameStackJP Azure Monitor – メンテナンスのシグナル Azure Monitor インスタンスメタデータサービス Azure の管理者の好きなメールア ドレス・電話番号などに事前通知 メンテナンス対象の仮想マシンの内部か ら、Rest APIでメンテナンス直前に再起 動やフリーズの情報を取得
  93. #gcconf2019 #GameStackJP Live Migration によるメンテナンス回避 • 事前に故障、不具合が予測できた場合 • 別の物理サーバーへ、再起動を伴わず仮想マシンを移動する • 移行元、先のサーバーが連動して動くため、突発的な障害では使えない • 計画メンテナンスに必要なサーバーリソースの「デフラグ」用途でも使われる • ユーザーからは不可視 • ユーザーがマイグレーションを指示できるわけではない • じつはこれがゲームの運営に影響が大きいのではないか? • ライブマイグレーション中、数秒の性能低下 • Microsoft は HW が壊れるよりはましと思っているが・・・ (故障を予防して他に移動)
  94. #gcconf2019 #GameStackJP 強いクラウドをご提供するための経験値 ゲーム開発会社様との活動を通じて学んだこと • 求められるクラウドの内部設計・利用法の違い 企業の社内システム・・・メンテナンス回数最小化の設計 マルチプレイ用通信・・・1秒の停止も許されない設計 • 仮想マシン(IaaS/Linux)のチューニングの違い 企業の社内システム・・・コンテナによる運用負荷軽減 マルチプレイ用通信・・・スループット! CCU最大化
  95. #gcconf2019 #GameStackJP Microsoft Azure IaaS まとめ! •性能! • CPU!! 豊富なラインナップ • Network !!! 高速ネットワーク+Infiniband • ディスク !!!! Ultra SSD 16万 IOPS •リスク、安定性、連続稼働性 • メンテナンス最小化する様々な努力をしています! • 最新の Azure の安定性をぜひ実感してください
  96. #gcconf2019 #GameStackJP ブースでもお待ちしてます!!
  97. #gcconf2019 #GameStackJP ご清聴ありがとうございました
Advertisement