Ruby on azure で game server service

1,826 views

Published on

10月16日に開催されたWindows Azure セミナーで発表した「Ruby on Azure で GameServer Service」の発表資料。
ダウンロードで PowerPoint ファイルをスライドショー表示するとアニメーションも再生できます。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,826
On SlideShare
0
From Embeds
0
Number of Embeds
31
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Ruby on azure で game server service

  1. 1. Ruby on Azureで Game Server Service株式会社グルーヴノーツ 〒810-0021 福岡県福岡市中央区 〒153-0043 東京都目黒区東山1-6-5Groovenauts, Inc. 今泉1丁目20番2号 天神MENTビル 4F 中目黒杉田ビル 6Finfo@groovenauts.jp TEL:092-986-2701 TEL:03-5794-3747http://www.groovenauts.jp/ FAX:092-986-2793 FAX:03-5794-3757
  2. 2. Summary • GameServer Service の紹介 • システム構成 • Ruby on Azure  IaaS vs. PaaS  能楽堂  Azure 上でのデプロイ方式 • Azure の機能活用  Virtual Network  Swap Deployment  Load Balancer Probe2012/11/5 Copyright Groovenauts, Inc. 2
  3. 3. Chapter1. GAME SERVER SERVICE2012/11/5 Copyright Groovenauts, Inc. 3
  4. 4. GameServer ServiceGameServer Service は、ゲームタイトルの利益最大化を最優先とし、ゲームの企画〜運営までトータルでサポートいたします。2012/11/5 Copyright Groovenauts, Inc. 4
  5. 5. Chapter2. SYSTEM ARCHITECTURE2012/11/5 Copyright Groovenauts, Inc. 5
  6. 6. システム構成 能楽堂 非同期処理 Virtual Machine(Linux) + mongo DB Railsアプリ tengine Windows Azure データ集計標準のロードバランサによるリクエスト分散 データ解析 Virtual Network SQL Server 2012 ↓ ↓ Windows Azure シャード追加による Cloud Service の スケールアウト インスタンス追加による 動的なスケールアウト Virtual Network 2012/11/5 Copyright Groovenauts, Inc. 6
  7. 7. Chapter3. RUBY ON AZURE2012/11/5 Copyright Groovenauts, Inc. 7
  8. 8. Azure上でのRuby on Rails • IaaS (Virtual Machine) • Linux • 慣れ • 自由度が高い • アプリケーションデプロイに時間がかかる • 一度に大量のインスタンスを起動できない • Paas(Cloud Services) • Windows Server • 管理が不要 • インスタンスの増減が容易 • 自由度が低い • Windows未対応のRubyライブラリの存在2012/11/5 Copyright Groovenauts, Inc. 8
  9. 9. Azure SDKs .NET node.js java php python の開発SDKはオフィシャルに提供 Ruby は?2012/11/5 Copyright Groovenauts, Inc. 9
  10. 10. 能楽堂 on Azure • 能楽堂(NougakuDo)  Windows 上で Rails アプリケーションを 実行するための環境  Ruby インタプリタ  専用HTTPサーバ 演能(ennou)  アプリケーションサーバ(ランチャ)  ポピュラーなライブラリをプリインストール  Ruby のコミッタ arton 氏が開発 • NougakuDoCompanion • 能楽堂を Windows Azure 上へデプロイする Webアプリケーション2012/11/5 Copyright Groovenauts, Inc. 10
  11. 11. 能楽堂 on Azure 起動 Application NougakuDo Ruby on Rails 能楽堂 Companion Ruby IIS ennou Http.sys Windows Server 20082012/11/5 Copyright Groovenauts, Inc. 11
  12. 12. 能楽堂 on Azure 起動 デプロイ Application NougakuDo Ruby on Rails 能楽堂 Companion Ruby IIS ennou Http.sys Windows Server 20082012/11/5 Copyright Groovenauts, Inc. 12
  13. 13. 問題点 • Paas(Cloud Service)のインスタンスの起動自体は高速 NougakuDoCompanion起動後Railsアプリケーションがサー ビス提供可能になるまでタイムラグがある  起動が遅い(停止時間が長くなる)  Load Balancer がサービス提供できないインスタンスに リクエストを振り分けてしまう NougakuDoCompanion 能楽堂/アプリ デプロイ アプリ実行 デプロイ 時間2012/11/5 Copyright Groovenauts, Inc. 13
  14. 14. Chapter5. SWAP DEPLOYMENT2012/11/5 Copyright Groovenauts, Inc. 14
  15. 15. Swap Deployment • Windows Azure の Cloud Service の機能 • 1つの Cloud Service に Production と Staging という2種類の環境 • 公開アドレスのVIP(Virtual IP) が Production に割り振られる • Swap で VIP の割り当てを交換 PRODUCTIO STAGING N Instance Swap Instance #1 #1 Instance Instance #2 #2 Instance Instance #3 #32012/11/5 Copyright Groovenauts, Inc. 15
  16. 16. Swap Deployment • シナリオ:アプリケーションのアップデート 1. STAGINGへ新バージョンアプリケーションデプロイ 2. SWAP 3. STAGING(元PRODUCTION)のインスタンスを削除無停止アップデートが可能 STAGING PRODUCTIO N Instance Swap Instance #1 #1 Instance Instance #2 #2 Instance Instance #3 #32012/11/5 Copyright Groovenauts, Inc. 16
  17. 17. Chapter6. LOAD BALANCER PROBE2012/11/5 Copyright Groovenauts, Inc. 17
  18. 18. Load Balancer Probe • Windows Azure ロードバランサの デフォルト設定 • 単純なラウンドロビンアルゴリズム • Load Balancer Probe  ロードバランサのアルゴリズムをヘルスチェックを用いるよ う設定可能  Cloud Service + 能楽堂を用いた時のインスタンス起動から サービス提供可能になるまでのタイムラグの間リクエストが 割り振られないようように2012/11/5 Copyright Groovenauts, Inc. 18
  19. 19. ServiceDefinition.csdef <LoadBalancerProbes>要素は <ServerDefinition>の開きタグ直下に • ServiceDefinition.csdef に設定を追加 置かないとスキーマエラーに<ServiceDefinition> <LoadBalancerProbes> http(サービス監視 レイヤ7) <LoadBalancerProbe or name=”Probe名“ tcp(ポート監視 レイヤ 4) protocol=“http” path=“エンドポイントPath” ライフチェックに利用する Path と Port番号の指定 port=”80” intervalInSeconds=”15” ライフチェック間隔とタイ timeoutInSeconds=”31” /> ムアウト時間の指定 </LoadBalancerProbes>2012/11/5 Copyright Groovenauts, Inc. 19
  20. 20. ServiceDefinition.csdef • さらに Endpoint の設定にProbe名を指定 <WebRole> <Endpoints> <InputEndpoint name="NougakuDo" protocol="http" port="80" loadBalancerProbe="Probe名" /> <LoadBalancerProbe> の name </Endpoints> 属性に指定したProbe名を指定 </WebRole>2012/11/5 Copyright Groovenauts, Inc. 20
  21. 21. Chapter4. VIRTUAL NETWORK2012/11/5 Copyright Groovenauts, Inc. 21
  22. 22. Virtual Network Windows Azure の Cloud 能楽堂 + Virtual Machine(Linux) Service/Virtual Machine mongo DB Railsアプリ のインスタンス間の内部 IPでの通信はできない データ集計Public IP による アクセス Virtual Network ただし同一の Virtual Network に配置すること で内部 IP アドレスでの 通信が可能になる 内部IPによるアクセス Virtual Network 2012/11/5 Copyright Groovenauts, Inc. 22
  23. 23. Virtual Network • Virtual Machine  Windows Azure Command-line Tools を利用し てインスタンス生成 $ azure vm create <host名> -w <ネットワーク名> -s <サブネット名> • Cloud Service  デプロイ時に指定する ServiceConfiguration.Cloud.cscfg に設定を追加2012/11/5 Copyright Groovenauts, Inc. 23
  24. 24. ServiceConfiguration.Cloud.cscfg <NetworkConfiguration> <VirtualNetworkSite name=”VirtualNetworkA" /> <AddressAssignments> <InstanceAddress roleName=""AdminWeb""> <Subnets> <Subnet name=“SubnetA" /> </Subnets> </InstanceAddress> </AddressAssignments> </NetworkConfiguration>2012/11/5 Copyright Groovenauts, Inc. 24
  25. 25. Ruby on Azure • Windows Azure で PaaS を利用して Ruby on Rails アプリケーション サービス構築可能 • Azure の機能を駆使する必要がある • Windows Server 上で対応できなければ 慣れたLinux VM も利用可能2012/11/5 Copyright Groovenauts, Inc. 25

×