25
株株株株株株株株株株株 Groovenauts, Inc. [email protected] http://www.groovenauts.jp/ 株 153-0043 株株株株株株株株 1-6-5 株株株株株株株 6F TEL 03-5794-3747 FAX 03-5794-3757 株 810-0021 株株株株株株株株株 株株 1 株株 20 株 2 株 株株 MENT 株株 4F TEL 092-986-2701 FAX 092-986-2793 Ruby on Azure Game Server Service

Ruby on azure で game server service

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Ruby on azure で game server service

株式会社グルーヴノーツ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

Page 2: 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

Page 3: Ruby on azure で game server service

GAMESERVERSERVICE

Chapter1.

04/12/2023 Copyright Groovenauts, Inc. 3

Page 4: Ruby on azure で game server service

Copyright Groovenauts, Inc.

GameServer Service

04/12/2023 4

GameServer Service は、ゲームタイトルの利益最大化を最優先とし、ゲームの企画〜運営までトータルでサポートいたします。

Page 5: Ruby on azure で game server service

SYSTEMARCHITECTURE

Chapter2.

04/12/2023 Copyright Groovenauts, Inc. 5

Page 6: Ruby on azure で game server service

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

データ集計

Page 7: Ruby on azure で game server service

RUBYONAZURE

Chapter3.

04/12/2023 Copyright Groovenauts, Inc. 7

Page 8: Ruby on azure で game server service

Copyright Groovenauts, Inc.

Azure 上での Ruby on Rails

04/12/2023 8

• IaaS (Virtual Machine) • Linux

• 慣れ• 自由度が高い• アプリケーションデプロイに時間がかかる• 一度に大量のインスタンスを起動できない

• Paas(Cloud Services)• Windows Server• 管理が不要• インスタンスの増減が容易• 自由度が低い• Windows 未対応の Ruby ライブラリの存在

Page 9: Ruby on azure で game server service

Copyright Groovenauts, Inc.

Azure SDKs

04/12/2023 9

.NET node.js java php python の開発 SDK はオフィシャルに提供Ruby は ?

Page 10: Ruby on azure で game server service

Copyright Groovenauts, Inc.

能楽堂 on Azure

04/12/2023 10

• 能楽堂 (NougakuDo)Windows 上で Rails アプリケーションを

実行するための環境 Ruby インタプリタ 専用 HTTP サーバ 演能 (ennou) アプリケーションサーバ ( ランチャ ) ポピュラーなライブラリをプリインストール

Ruby のコミッタ arton 氏が開発• NougakuDoCompanion

• 能楽堂を Windows Azure 上へデプロイするWeb アプリケーション

Page 11: Ruby on azure で game server service

Copyright Groovenauts, Inc.

能楽堂 on Azure

04/12/2023 11

Windows Server 2008

IIS ennou

Http.sys

NougakuDoCompanion Ruby

Ruby on Rails

Application

能楽堂

起動

Page 12: Ruby on azure で game server service

Copyright Groovenauts, Inc.

能楽堂 on Azure

04/12/2023 12

Windows Server 2008

IIS ennou

Http.sys

NougakuDoCompanion Ruby

Ruby on Rails

Application

能楽堂

起動

デプロイ

Page 13: Ruby on azure で game server service

Copyright Groovenauts, Inc.

問題点

04/12/2023 13

• Paas(Cloud Service) のインスタンスの起動自体は高速NougakuDoCompanion 起動後 Rails アプリケーションがサービス提供可能になるまでタイムラグがある 起動が遅い ( 停止時間が長くなる ) Load Balancer がサービス提供できないインスタン

スにリクエストを振り分けてしまう

時間

NougakuDoCompanion

デプロイ

能楽堂 / アプリ

デプロイアプリ実行

Page 14: Ruby on azure で game server service

SWAPDEPLOYMENT

Chapter5.

04/12/2023 Copyright Groovenauts, Inc. 14

Page 15: Ruby on azure で game server service

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

Page 16: Ruby on azure で game server service

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

無停止アップデートが可能

Page 17: Ruby on azure で game server service

LOADBALANCERPROBE

Chapter6.

04/12/2023 Copyright Groovenauts, Inc. 17

Page 18: Ruby on azure で game server service

Copyright Groovenauts, Inc.

Load Balancer Probe

04/12/2023 18

• Windows Azure ロードバランサのデフォルト設定

• 単純なラウンドロビンアルゴリズム

• Load Balancer Probe ロードバランサのアルゴリズムをヘルスチェックを用いるよ

う設定可能 Cloud Service + 能楽堂を用いた時のインスタンス起動か

らサービス提供可能になるまでのタイムラグの間リクエストが割り振られないようように

Page 19: Ruby on azure で game server 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> の開きタグ直下

に置かないとスキーマエラーに

Page 20: Ruby on azure で game server service

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 名

を指定

Page 21: Ruby on azure で game server service

VIRTUALNETWORK

Chapter4.

04/12/2023 Copyright Groovenauts, Inc. 21

Page 22: Ruby on azure で game server service

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 アドレスで

の通信が可能になる

Page 23: Ruby on azure で game server service

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 に設定を追加

Page 24: Ruby on azure で game server service

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>

Page 25: Ruby on azure で game server service

Copyright Groovenauts, Inc.

Ruby on Azure

04/12/2023 25

• Windows Azure で PaaS を利用してRuby on Rails アプリケーションサービス構築可能

• Azure の機能を駆使する必要がある• Windows Server 上で対応できなければ

慣れた Linux VM も利用可能