SlideShare une entreprise Scribd logo
1  sur  25
Ruby on Azureで
                             Game Server Service


株式会社グルーヴノーツ                       〒810-0021 福岡県福岡市中央区      〒153-0043 東京都目黒区東山1-6-5
Groovenauts, Inc.                 今泉1丁目20番2号 天神MENTビル 4F   中目黒杉田ビル 6F
info@groovenauts.jp               TEL:092-986-2701         TEL:03-5794-3747
http://www.groovenauts.jp/        FAX:092-986-2793         FAX:03-5794-3757
Summary
     • GameServer Service の紹介
     • システム構成
     • Ruby on Azure
         IaaS vs. PaaS
         能楽堂
         Azure 上でのデプロイ方式
     • Azure の機能活用
         Virtual Network
         Swap Deployment
         Load Balancer Probe




2012/11/5            Copyright Groovenauts, Inc.   2
Chapter1.

            GAME
            SERVER
            SERVICE


2012/11/5               Copyright Groovenauts, Inc.   3
GameServer Service
GameServer Service は、ゲームタイトルの利益最大化を最優先とし、
ゲームの企画〜運営までトータルでサポートいたします。




2012/11/5         Copyright Groovenauts, Inc.   4
Chapter2.

            SYSTEM
            ARCHITECTURE



2012/11/5               Copyright Groovenauts, Inc.   5
システム構成
                      能楽堂                                     非同期処理
                                 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
Chapter3.

            RUBY
            ON
            AZURE


2012/11/5               Copyright Groovenauts, Inc.   7
Azure上でのRuby on Rails
     • IaaS (Virtual Machine)
         • Linux
            • 慣れ
         • 自由度が高い
         • アプリケーションデプロイに時間がかかる
         • 一度に大量のインスタンスを起動できない
     • Paas(Cloud Services)
         • Windows Server
         • 管理が不要
         • インスタンスの増減が容易
         • 自由度が低い
         • Windows未対応のRubyライブラリの存在

2012/11/5         Copyright Groovenauts, Inc.   8
Azure SDKs
      .NET node.js java php python の開発SDKはオフィシャルに提供
                                Ruby は?




2012/11/5              Copyright Groovenauts, Inc.    9
能楽堂 on Azure
     • 能楽堂(NougakuDo)
         Windows 上で Rails アプリケーションを
          実行するための環境
               Ruby インタプリタ
               専用HTTPサーバ 演能(ennou)
               アプリケーションサーバ(ランチャ)
               ポピュラーなライブラリをプリインストール
         Ruby のコミッタ arton 氏が開発
     • NougakuDoCompanion
        • 能楽堂を Windows Azure 上へデプロイする
          Webアプリケーション



2012/11/5            Copyright Groovenauts, Inc.   10
能楽堂 on Azure
                            起動




                                               Application

            NougakuDo                       Ruby on Rails    能楽堂
            Companion                          Ruby

               IIS                                ennou
                              Http.sys
                     Windows Server 2008




2012/11/5               Copyright Groovenauts, Inc.                11
能楽堂 on Azure
                            起動


                            デプロイ
                                               Application

            NougakuDo                       Ruby on Rails    能楽堂
            Companion                          Ruby

               IIS                                ennou
                              Http.sys
                     Windows Server 2008




2012/11/5               Copyright Groovenauts, Inc.                12
問題点
     • Paas(Cloud Service)のインスタンスの起動自体は高速
       NougakuDoCompanion起動後Railsアプリケーションがサー
       ビス提供可能になるまでタイムラグがある
         起動が遅い(停止時間が長くなる)
         Load Balancer がサービス提供できないインスタンスに
          リクエストを振り分けてしまう



            NougakuDoCompanion       能楽堂/アプリ
                デプロイ                                           アプリ実行
                                      デプロイ


                                                                       時間



2012/11/5                        Copyright Groovenauts, Inc.                13
Chapter5.

            SWAP
            DEPLOYMENT



2012/11/5               Copyright Groovenauts, Inc.   14
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                       #3




2012/11/5                       Copyright Groovenauts, Inc.      15
Swap Deployment
     • シナリオ:アプリケーションのアップデート
        1. STAGINGへ新バージョンアプリケーションデプロイ
        2. SWAP
        3. STAGING(元PRODUCTION)のインスタンスを削除




無停止アップデートが可能 STAGING
    PRODUCTIO
               N
            Instance   Swap        Instance
               #1                     #1
            Instance               Instance
               #2                     #2
            Instance               Instance
               #3                     #3




2012/11/5                 Copyright Groovenauts, Inc.   16
Chapter6.

            LOAD
            BALANCER
            PROBE


2012/11/5               Copyright Groovenauts, Inc.   17
Load Balancer Probe
     • Windows Azure ロードバランサの
       デフォルト設定
            • 単純なラウンドロビンアルゴリズム




     • Load Balancer Probe
             ロードバランサのアルゴリズムをヘルスチェックを用いるよ
              う設定可能
             Cloud Service + 能楽堂を用いた時のインスタンス起動から
              サービス提供可能になるまでのタイムラグの間リクエストが
              割り振られないようように




2012/11/5               Copyright Groovenauts, Inc.   18
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
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
Chapter4.

            VIRTUAL
            NETWORK



2012/11/5               Copyright Groovenauts, Inc.   21
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
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
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
Ruby on Azure
     • Windows Azure で PaaS を利用して
       Ruby on Rails アプリケーション
       サービス構築可能
     • Azure の機能を駆使する必要がある
     • Windows Server 上で対応できなければ
       慣れたLinux VM も利用可能




2012/11/5         Copyright Groovenauts, Inc.   25

Contenu connexe

Tendances

CIデモ環境 構築手順書
CIデモ環境 構築手順書CIデモ環境 構築手順書
CIデモ環境 構築手順書
VirtualTech Japan Inc.
 
Azure reliability v0.1.21.0422
Azure reliability v0.1.21.0422Azure reliability v0.1.21.0422
Azure reliability v0.1.21.0422
Ayumu Inaba
 
Microsoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondockerMicrosoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondocker
Tsukasa Kato
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
maruyama097
 
オンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたオンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみた
Masayuki Ozawa
 

Tendances (20)

Openstack mitaka のセキュリティ - OpenStack最新情報セミナー 2016年5月
Openstack mitaka のセキュリティ - OpenStack最新情報セミナー 2016年5月Openstack mitaka のセキュリティ - OpenStack最新情報セミナー 2016年5月
Openstack mitaka のセキュリティ - OpenStack最新情報セミナー 2016年5月
 
CIデモ環境 構築手順書
CIデモ環境 構築手順書CIデモ環境 構築手順書
CIデモ環境 構築手順書
 
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
 
【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)
【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)
【さくらのクラウド】クラウドマスター認定試験終了者向け講習と、上級者への道(Terraform)
 
Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary Microsoft Azure build & ignight update summary
Microsoft Azure build & ignight update summary
 
Azure reliability v0.1.21.0422
Azure reliability v0.1.21.0422Azure reliability v0.1.21.0422
Azure reliability v0.1.21.0422
 
Microsoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondockerMicrosoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondocker
 
Real World Azure RBAC
Real World Azure RBACReal World Azure RBAC
Real World Azure RBAC
 
Azure Service Fabric Cluster の作成
Azure  Service Fabric Cluster の作成Azure  Service Fabric Cluster の作成
Azure Service Fabric Cluster の作成
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
 
CloudStackとNetScalerの連携
CloudStackとNetScalerの連携CloudStackとNetScalerの連携
CloudStackとNetScalerの連携
 
PostgreSQL9.1でつくる高可用性にまつわるエトセトラ
PostgreSQL9.1でつくる高可用性にまつわるエトセトラPostgreSQL9.1でつくる高可用性にまつわるエトセトラ
PostgreSQL9.1でつくる高可用性にまつわるエトセトラ
 
オンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみたオンプレのDbaがazureのデータベースを使ってみた
オンプレのDbaがazureのデータベースを使ってみた
 
INF-012_デスクトップ仮想化の実践 ~powered by Windows Server 2016 & Azure~
INF-012_デスクトップ仮想化の実践 ~powered by Windows Server 2016 & Azure~INF-012_デスクトップ仮想化の実践 ~powered by Windows Server 2016 & Azure~
INF-012_デスクトップ仮想化の実践 ~powered by Windows Server 2016 & Azure~
 
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
AWS Black Belt Techシリーズ  AWS  Elastic  BeanstalkAWS Black Belt Techシリーズ  AWS  Elastic  Beanstalk
AWS Black Belt Techシリーズ AWS Elastic Beanstalk
 
Hyper-V 仮想マシンをAzure ARMへV2C移行...のメモ
Hyper-V 仮想マシンをAzure ARMへV2C移行...のメモHyper-V 仮想マシンをAzure ARMへV2C移行...のメモ
Hyper-V 仮想マシンをAzure ARMへV2C移行...のメモ
 
goo基盤を支えるOpenstack
goo基盤を支えるOpenstackgoo基盤を支えるOpenstack
goo基盤を支えるOpenstack
 
99999999 azure iaas_newportal版
99999999 azure iaas_newportal版99999999 azure iaas_newportal版
99999999 azure iaas_newportal版
 
Azure IaaS 解説
Azure IaaS 解説Azure IaaS 解説
Azure IaaS 解説
 

En vedette (8)

怠惰なRubyistへの道
怠惰なRubyistへの道怠惰なRubyistへの道
怠惰なRubyistへの道
 
怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01怠惰なRubyistへの道 fukuoka rubykaigi01
怠惰なRubyistへの道 fukuoka rubykaigi01
 
CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013
 
Ruby Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案
 
Magellan on Google Cloud Platform
Magellan on Google Cloud PlatformMagellan on Google Cloud Platform
Magellan on Google Cloud Platform
 
CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 
Functional Music Composition
Functional Music CompositionFunctional Music Composition
Functional Music Composition
 

Similaire à Ruby on azure で game server service

20111026 switch on福岡(クラウドコンピューティング)
20111026 switch on福岡(クラウドコンピューティング)20111026 switch on福岡(クラウドコンピューティング)
20111026 switch on福岡(クラウドコンピューティング)
dekakin
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
Kazuki Aranami
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
maruyama097
 
クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~
クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~
クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~
Akira Inoue
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
Abe Junichiro
 
今明かす、Windows Azure の全貌 - Virtualization Summit
今明かす、Windows Azure の全貌 - Virtualization Summit今明かす、Windows Azure の全貌 - Virtualization Summit
今明かす、Windows Azure の全貌 - Virtualization Summit
fumios
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
SORACOM, INC
 
Mashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in FukuokaMashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in Fukuoka
Kazumi Hirose
 

Similaire à Ruby on azure で game server service (20)

Solaris11で深化するクラウド
Solaris11で深化するクラウドSolaris11で深化するクラウド
Solaris11で深化するクラウド
 
cross2012a fujya
cross2012a fujyacross2012a fujya
cross2012a fujya
 
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
 
20111026 switch on福岡(クラウドコンピューティング)
20111026 switch on福岡(クラウドコンピューティング)20111026 switch on福岡(クラウドコンピューティング)
20111026 switch on福岡(クラウドコンピューティング)
 
Go azure keynote-クラウド利用のあらゆるニーズに応える windows azure の進化
Go azure keynote-クラウド利用のあらゆるニーズに応える windows azure の進化Go azure keynote-クラウド利用のあらゆるニーズに応える windows azure の進化
Go azure keynote-クラウド利用のあらゆるニーズに応える windows azure の進化
 
クラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloudクラウドカンファレンスIn静岡 r cloud
クラウドカンファレンスIn静岡 r cloud
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
XDev2010 WindowsAzure
XDev2010 WindowsAzureXDev2010 WindowsAzure
XDev2010 WindowsAzure
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
20140605_じどうかの窓口_CloudBees_Jenkins
20140605_じどうかの窓口_CloudBees_Jenkins20140605_じどうかの窓口_CloudBees_Jenkins
20140605_じどうかの窓口_CloudBees_Jenkins
 
クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~
クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~
クラウド時代の Web サイト構築 ~ Windows Azure Web サイト概要 ~
 
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
[AWS Summit 2012] ソリューションセッション#2 リーンクラウドでいこう! クラウドで実現するリーンスタートアップ
 
10th jan 2013_miyazaki
10th jan 2013_miyazaki10th jan 2013_miyazaki
10th jan 2013_miyazaki
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
 
20110406aws accenture
20110406aws accenture20110406aws accenture
20110406aws accenture
 
今明かす、Windows Azure の全貌 - Virtualization Summit
今明かす、Windows Azure の全貌 - Virtualization Summit今明かす、Windows Azure の全貌 - Virtualization Summit
今明かす、Windows Azure の全貌 - Virtualization Summit
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 
Mashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in FukuokaMashup Award 7 Caravan in Fukuoka
Mashup Award 7 Caravan in Fukuoka
 

Plus de nagachika t (6)

Make Ruby Differentiable
Make Ruby DifferentiableMake Ruby Differentiable
Make Ruby Differentiable
 
All bugfixes are incompatibilities
All bugfixes are incompatibilitiesAll bugfixes are incompatibilities
All bugfixes are incompatibilities
 
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter TuningInspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
 
Ruby trunk changes 統計版
Ruby trunk changes 統計版Ruby trunk changes 統計版
Ruby trunk changes 統計版
 
Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Process
 
Pd Kai#2 Object Model
Pd Kai#2 Object ModelPd Kai#2 Object Model
Pd Kai#2 Object Model
 

Ruby on azure で game server service

  • 1. Ruby on Azureで Game Server Service 株式会社グルーヴノーツ 〒810-0021 福岡県福岡市中央区 〒153-0043 東京都目黒区東山1-6-5 Groovenauts, Inc. 今泉1丁目20番2号 天神MENTビル 4F 中目黒杉田ビル 6F info@groovenauts.jp TEL:092-986-2701 TEL:03-5794-3747 http://www.groovenauts.jp/ FAX:092-986-2793 FAX:03-5794-3757
  • 2. Summary • GameServer Service の紹介 • システム構成 • Ruby on Azure  IaaS vs. PaaS  能楽堂  Azure 上でのデプロイ方式 • Azure の機能活用  Virtual Network  Swap Deployment  Load Balancer Probe 2012/11/5 Copyright Groovenauts, Inc. 2
  • 3. Chapter1. GAME SERVER SERVICE 2012/11/5 Copyright Groovenauts, Inc. 3
  • 4. GameServer Service GameServer Service は、ゲームタイトルの利益最大化を最優先とし、 ゲームの企画〜運営までトータルでサポートいたします。 2012/11/5 Copyright Groovenauts, Inc. 4
  • 5. Chapter2. SYSTEM ARCHITECTURE 2012/11/5 Copyright Groovenauts, Inc. 5
  • 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. Chapter3. RUBY ON AZURE 2012/11/5 Copyright Groovenauts, Inc. 7
  • 8. Azure上でのRuby on Rails • IaaS (Virtual Machine) • Linux • 慣れ • 自由度が高い • アプリケーションデプロイに時間がかかる • 一度に大量のインスタンスを起動できない • Paas(Cloud Services) • Windows Server • 管理が不要 • インスタンスの増減が容易 • 自由度が低い • Windows未対応のRubyライブラリの存在 2012/11/5 Copyright Groovenauts, Inc. 8
  • 9. Azure SDKs .NET node.js java php python の開発SDKはオフィシャルに提供 Ruby は? 2012/11/5 Copyright Groovenauts, Inc. 9
  • 10. 能楽堂 on Azure • 能楽堂(NougakuDo)  Windows 上で Rails アプリケーションを 実行するための環境  Ruby インタプリタ  専用HTTPサーバ 演能(ennou)  アプリケーションサーバ(ランチャ)  ポピュラーなライブラリをプリインストール  Ruby のコミッタ arton 氏が開発 • NougakuDoCompanion • 能楽堂を Windows Azure 上へデプロイする Webアプリケーション 2012/11/5 Copyright Groovenauts, Inc. 10
  • 11. 能楽堂 on Azure 起動 Application NougakuDo Ruby on Rails 能楽堂 Companion Ruby IIS ennou Http.sys Windows Server 2008 2012/11/5 Copyright Groovenauts, Inc. 11
  • 12. 能楽堂 on Azure 起動 デプロイ Application NougakuDo Ruby on Rails 能楽堂 Companion Ruby IIS ennou Http.sys Windows Server 2008 2012/11/5 Copyright Groovenauts, Inc. 12
  • 13. 問題点 • Paas(Cloud Service)のインスタンスの起動自体は高速 NougakuDoCompanion起動後Railsアプリケーションがサー ビス提供可能になるまでタイムラグがある  起動が遅い(停止時間が長くなる)  Load Balancer がサービス提供できないインスタンスに リクエストを振り分けてしまう NougakuDoCompanion 能楽堂/アプリ デプロイ アプリ実行 デプロイ 時間 2012/11/5 Copyright Groovenauts, Inc. 13
  • 14. Chapter5. SWAP DEPLOYMENT 2012/11/5 Copyright Groovenauts, Inc. 14
  • 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 #3 2012/11/5 Copyright Groovenauts, Inc. 15
  • 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 #3 2012/11/5 Copyright Groovenauts, Inc. 16
  • 17. Chapter6. LOAD BALANCER PROBE 2012/11/5 Copyright Groovenauts, Inc. 17
  • 18. Load Balancer Probe • Windows Azure ロードバランサの デフォルト設定 • 単純なラウンドロビンアルゴリズム • Load Balancer Probe  ロードバランサのアルゴリズムをヘルスチェックを用いるよ う設定可能  Cloud Service + 能楽堂を用いた時のインスタンス起動から サービス提供可能になるまでのタイムラグの間リクエストが 割り振られないようように 2012/11/5 Copyright Groovenauts, Inc. 18
  • 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. 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. Chapter4. VIRTUAL NETWORK 2012/11/5 Copyright Groovenauts, Inc. 21
  • 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. 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. 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. Ruby on Azure • Windows Azure で PaaS を利用して Ruby on Rails アプリケーション サービス構築可能 • Azure の機能を駆使する必要がある • Windows Server 上で対応できなければ 慣れたLinux VM も利用可能 2012/11/5 Copyright Groovenauts, Inc. 25