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