Windows Azure で LL 言語系 Web アプリケーション開発 はてな  田中 慎司 stanaka @ hatena.ne.jp http://d.hatena.ne.jp/stanaka/ http://twitter.com/stanaka/
アジェンダ Azure とは GAE/AWS と比較 試してみた Hello World 級 PHP on Azure PHP & MySQL on Azure Mediawiki on Azure
スペック 基本的に Linux 系 いわゆる  LAMP スタック Linux, Apache, MySQL, Perl IDE は使わない Windows との接点 メインのノート PC は Windows VB, C# は知っている COM コンポーネントは一度書いたことがある VisualStudio
今日のテーマ LL 系言語エンジニアからの視点 クラウドサービスでの Azure の位置付け Azure – AWS – GAE Azure の勘所 とりあえず動かしてみる
Azure とは Microsoft によるクラウドサービス アプリケーションの動作サービス (Windows Azure) ネットワークサービス (.NET Services) クラウドの RDB(SQL Azure)
Windows Azure Windows Azure Compute Web Role Worker Role Windows Azure Storage  BLOB Table Queue Drive
Role Web Role ウェブアプリケーション向け IIS .NET Framework Worker Role バッチ処理向け 普通の TCP 通信もできる .NET Framework
Storage BLOB メディアイメージ HTTP REST でアクセス Table BigTable 的 DB Queue メッセージキュー Drive( 未リリース ?) NTFS ドライブ
Amazon Web Services EC2 IA サーバ環境を提供 時間貸しレンタルサーバ ストレージ S3 CloudFront サービス Elastic Block Storage Relational Database Service SimpleDB Simple Queue Service
Google Application Engine 自動的にスケールする 柔軟なデータストア (BigTable) サービス URL フェッチ メール Memcache 画像操作 cron XMPP 通信
Google Application Engine の制約 言語の制約 Python/Java のみ 処理機能の制約 サーブレットによる 30 秒以上を要するリクエスト処理 サーブレットによるレスポンス送出時のデータストリーミング ファイルシステムへの書き込み 外部サーバーへのソケット接続 VM 機能の制約 スレッド生成 ガベージコレクション実行やシステム停止 カスタムクラス・ローダの利用
Windows Azure の特性 EC2 と GAE の中間 インスタンスは意識する ただし各インスタンスの直接制御はできない .NET が基本だが、ネイティブアプリも動作 C/C++ のコードも動く 言語処理系を上げてしまえば、なんでも動く !! MySQL/memcached も動く
開発環境 VisualStudio Microsoft Visual Web Developer 2008 Express Edition Eclipse Azure SDK
Azure Platform Interoperability Windows Azure Tools for Eclipse PHP / Java などとの Interoperability にも注力 http://www.microsoft.com/windowsazure/interop/
Azure の開発フロー Visual Studio / Eclipse で開発 ビルドも ローカルテスト環境にデプロイ Azure にデプロイ Staging で確認 Prodution に展開
LL 言語系 Web 屋から観点 .NET の世界 C# という言語がある IIS ってなんだ Internet Information Services IDE に抵抗がある 統合開発環境 Eclipse / Visual Studio
Azure への期待 クラウドプレイヤーの増加 AWS vs GAE vs Azure 競争促進 ロックインの排除 アプリレイヤーとクラウドレイヤーの疎結合化 Azure は、 GAE ほど極端ではない
Azure の開発フロー (LL 言語向け ) Emacs / vi で開発 コマンドラインでビルド IDE だとよく分からない
簡単な Azure アプリ /ProjectRoot/ WebRole/ index.html simple.csdef .. クラウド・サービス定義ファイル simple.cscfg .. クラウド・サービス構成ファイル
簡単な Azure アプリ simple.csdef  クラウド・サービス定義ファイル <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <ServiceDefinition name=&quot;Simple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&quot;> <WebRole name=&quot;WebRole&quot;> <ConfigurationSettings>  </ConfigurationSettings> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name=&quot;HttpIn&quot; protocol=&quot;http&quot; port=&quot;80&quot; /> </InputEndpoints> </WebRole> </ServiceDefinition>
簡単な Azure アプリ simple.cscfg  クラウド・サービス構成ファイル <?xml version=&quot;1.0&quot;?> <ServiceConfiguration serviceName=&quot;Simple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration&quot;> <Role name=&quot;WebRole&quot;> <Instances count=&quot;1&quot;/> <ConfigurationSettings>  </ConfigurationSettings> </Role> </ServiceConfiguration>
簡単な Azure アプリ index.html <html> <head><title>Quick Sample</title></head> <body> This a quick sample. <br /> <img alt=&quot;Sample Photo&quot; src=&quot;photo.jpg&quot; /> </body> </html>
簡単な Azure アプリ ビルド デプロイ >cspack simple.csdef /copyonly Windows(R) Azure(TM) Packaging Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved.  >csrun simple.csx simple.cscfg Windows(R) Azure(TM) Desktop Execution Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved. Using session id 1 Created deployment(34) Started deployment(34) Deployment input endpoint HttpIn of role WebRole at http://127.0.0.1:82/
簡単な Azure アプリ 開発環境にデプロイ
簡単な Azure アプリ 動作 !
簡単な Azure アプリ 本番
PHP on Azure PHP の言語処理系 (php.exe) を Azure 上に送りこむ ネイティブコードサポート !
PHP on Azure /ProjectRoot/ WebRole/ index.php web.config simple.csdef .. クラウド・サービス定義ファイル simple.cscfg .. クラウド・サービス構成ファイル
PHP on Azure phpsimple.csdef  クラウド・サービス定義ファイル <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <ServiceDefinition name=&quot;phpsimple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&quot;> <WebRole name=&quot;WebRole&quot;  enableNativeCodeExecution=&quot;true“ > <ConfigurationSettings>  </ConfigurationSettings> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name=&quot;HttpIn&quot; protocol=&quot;http&quot; port=&quot;80&quot; /> </InputEndpoints> </WebRole> </ServiceDefinition>
PHP on Azure phpsimple.cscfg  クラウド・サービス構成ファイル <?xml version=&quot;1.0&quot;?> <ServiceConfiguration serviceName=&quot;phpsimple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration&quot;> <Role name=&quot;WebRole&quot;> <Instances count=&quot;1&quot;/> <ConfigurationSettings>  </ConfigurationSettings> </Role> </ServiceConfiguration>
PHP on Azure index.php <html> <head><title>Hello World PHP</title></head> <body> <?php echo 'Today is '. date('Y-m-d') .&quot;\n&quot;; ?>  </body> </html>
PHP on Azure web.config <?xml version=&quot;1.0&quot;?> <configuration> <system.webServer> <handlers> <add name=&quot;FastCGIHandler&quot; verb=&quot;*&quot; path=&quot;*.php&quot; scriptProcessor=&quot;%RoleRoot%\approot\PHP\php-cgi.exe&quot; modules=&quot;FastCgiModule&quot; resourceType=&quot;Unspecified&quot; /> </handlers> <defaultDocument> <files> <add value=&quot;index.php&quot;/> </files> </defaultDocument> </system.webServer> </configuration>
PHP on Azure web.roleconfig <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <system.webServer> <fastCgi> <application fullPath=&quot;%RoleRoot%\approot\PHP\php-cgi.exe&quot; /> </fastCgi> </system.webServer> </configuration>
PHP on Azure ビルド デプロイ >cspack phpsimple.csdef /copyonly Windows(R) Azure(TM) Packaging Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved.  >csrun phpsimple.csx phpsimple.cscfg Windows(R) Azure(TM) Desktop Execution Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved. Using session id 1 Created deployment(32) Started deployment(32) Deployment input endpoint HttpIn of role WebRole at http://127.0.0.1:82/
PHP on Azure 開発環境にデプロイ
PHP on Azure 動作 !
PHP & MySQL on Azure Windows Azure MySQL PHP Solution Accelerator http://code.msdn.microsoft.com/winazuremysqlphp MySQL php.exe に加え、 mysql.exe も送りこむ Worker Role で mysql のインスタンスを起動させる
PHP & MySQL on Azure Windows Azure MySQL PHP Solution Accelerator をダウンロード・展開 PHP, MySQL, PHPMyAdmin などを詰め込む ディレクトリ構成
MySQL を WorkerRole で動かす LocalStorage を定義  (ServiceDefinition.csdef) <LocalResources> <LocalStorage name=&quot;InstMgrLocalStorage&quot; sizeInMB=&quot;75&quot; cleanOnRoleRecycle=&quot;false&quot; /> <LocalStorage name=&quot;MySQL&quot; sizeInMB=&quot;75&quot; cleanOnRoleRecycle=&quot;false&quot; /> <LocalStorage name=&quot;MySQLDatastore&quot; sizeInMB=&quot;122880&quot; cleanOnRoleRecycle=&quot;false&quot; /> <LocalStorage name=&quot;BlobBackup&quot; sizeInMB=&quot;2&quot; cleanOnRoleRecycle=&quot;false&quot; /> </LocalResources>
MySQL を WorkerRole で動かす Wrapper で指定  (MySQLAccess.cs) public bool Start(int id) { try { string baseDir = RoleEnvironment.GetLocalResource(&quot;MySQL&quot;).RootPath.Replace('\\', '/'); string dataDir = RoleEnvironment.GetLocalResource(&quot;MySQLDatastore&quot;).RootPath.Replace('\\', '/'); string blobDir = RoleEnvironment.GetLocalResource(&quot;BlobBackup&quot;).RootPath.Replace('\\', '/'); … File.Copy(&quot;my.ini&quot;, iniFile, true); //update teh my.ini file with mysql server details UpdateMyIni(iniFile, baseDir, dataDir, port, id.ToString());
PHP & MySQL on Azure
PHP & MySQL on Azure
Mediawiki on Azure Windows Azure Mediawiki MySQL Solution Accelerator http://code.msdn.microsoft.com/winazuremediawiki 基本的には、  Windows Azure MySQL PHP Solution Accelerator と同等
Mediawiki on Azure memcached を動かす MySQL と同様に Worker Role + C# の Wrapper protected void RunMemcached() { IPEndPoint endpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[&quot;memcached&quot;].IPEndpoint; string cacheSize = RoleEnvironment.GetConfigurationSettingValue(&quot;CacheSizeInMB&quot;); string arguments = &quot;-m &quot; + cacheSize + &quot; -l &quot; + endpoint.Address + &quot; -p &quot; + endpoint.Port; ProcessStartInfo startInfo = new ProcessStartInfo(); … try { using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit();
Mediawiki on Azure
その他  Ruby on Rails on Azure FastCGI 対応のものは動かせる Ruby on Rails も http://rubyonrails.cloudapp.net
まとめ Azure を試してみた LL 系言語アプリも十分動かせる Amazon EC2 の対抗として十分なポテンシャルがありそう ただし、もうすこし UNIX-like な開発環境があると親和性が高くなる OSX な開発者もいるので ..

Using Windows Azure

  • 1.
    Windows Azure でLL 言語系 Web アプリケーション開発 はてな 田中 慎司 stanaka @ hatena.ne.jp http://d.hatena.ne.jp/stanaka/ http://twitter.com/stanaka/
  • 2.
    アジェンダ Azure とはGAE/AWS と比較 試してみた Hello World 級 PHP on Azure PHP & MySQL on Azure Mediawiki on Azure
  • 3.
    スペック 基本的に Linux系 いわゆる LAMP スタック Linux, Apache, MySQL, Perl IDE は使わない Windows との接点 メインのノート PC は Windows VB, C# は知っている COM コンポーネントは一度書いたことがある VisualStudio
  • 4.
    今日のテーマ LL 系言語エンジニアからの視点クラウドサービスでの Azure の位置付け Azure – AWS – GAE Azure の勘所 とりあえず動かしてみる
  • 5.
    Azure とは Microsoftによるクラウドサービス アプリケーションの動作サービス (Windows Azure) ネットワークサービス (.NET Services) クラウドの RDB(SQL Azure)
  • 6.
    Windows Azure WindowsAzure Compute Web Role Worker Role Windows Azure Storage BLOB Table Queue Drive
  • 7.
    Role Web Roleウェブアプリケーション向け IIS .NET Framework Worker Role バッチ処理向け 普通の TCP 通信もできる .NET Framework
  • 8.
    Storage BLOB メディアイメージHTTP REST でアクセス Table BigTable 的 DB Queue メッセージキュー Drive( 未リリース ?) NTFS ドライブ
  • 9.
    Amazon Web ServicesEC2 IA サーバ環境を提供 時間貸しレンタルサーバ ストレージ S3 CloudFront サービス Elastic Block Storage Relational Database Service SimpleDB Simple Queue Service
  • 10.
    Google Application Engine自動的にスケールする 柔軟なデータストア (BigTable) サービス URL フェッチ メール Memcache 画像操作 cron XMPP 通信
  • 11.
    Google Application Engineの制約 言語の制約 Python/Java のみ 処理機能の制約 サーブレットによる 30 秒以上を要するリクエスト処理 サーブレットによるレスポンス送出時のデータストリーミング ファイルシステムへの書き込み 外部サーバーへのソケット接続 VM 機能の制約 スレッド生成 ガベージコレクション実行やシステム停止 カスタムクラス・ローダの利用
  • 12.
    Windows Azure の特性EC2 と GAE の中間 インスタンスは意識する ただし各インスタンスの直接制御はできない .NET が基本だが、ネイティブアプリも動作 C/C++ のコードも動く 言語処理系を上げてしまえば、なんでも動く !! MySQL/memcached も動く
  • 13.
    開発環境 VisualStudio MicrosoftVisual Web Developer 2008 Express Edition Eclipse Azure SDK
  • 14.
    Azure Platform InteroperabilityWindows Azure Tools for Eclipse PHP / Java などとの Interoperability にも注力 http://www.microsoft.com/windowsazure/interop/
  • 15.
    Azure の開発フロー VisualStudio / Eclipse で開発 ビルドも ローカルテスト環境にデプロイ Azure にデプロイ Staging で確認 Prodution に展開
  • 16.
    LL 言語系 Web屋から観点 .NET の世界 C# という言語がある IIS ってなんだ Internet Information Services IDE に抵抗がある 統合開発環境 Eclipse / Visual Studio
  • 17.
    Azure への期待 クラウドプレイヤーの増加AWS vs GAE vs Azure 競争促進 ロックインの排除 アプリレイヤーとクラウドレイヤーの疎結合化 Azure は、 GAE ほど極端ではない
  • 18.
    Azure の開発フロー (LL言語向け ) Emacs / vi で開発 コマンドラインでビルド IDE だとよく分からない
  • 19.
    簡単な Azure アプリ/ProjectRoot/ WebRole/ index.html simple.csdef .. クラウド・サービス定義ファイル simple.cscfg .. クラウド・サービス構成ファイル
  • 20.
    簡単な Azure アプリsimple.csdef クラウド・サービス定義ファイル <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <ServiceDefinition name=&quot;Simple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&quot;> <WebRole name=&quot;WebRole&quot;> <ConfigurationSettings> </ConfigurationSettings> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name=&quot;HttpIn&quot; protocol=&quot;http&quot; port=&quot;80&quot; /> </InputEndpoints> </WebRole> </ServiceDefinition>
  • 21.
    簡単な Azure アプリsimple.cscfg クラウド・サービス構成ファイル <?xml version=&quot;1.0&quot;?> <ServiceConfiguration serviceName=&quot;Simple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration&quot;> <Role name=&quot;WebRole&quot;> <Instances count=&quot;1&quot;/> <ConfigurationSettings> </ConfigurationSettings> </Role> </ServiceConfiguration>
  • 22.
    簡単な Azure アプリindex.html <html> <head><title>Quick Sample</title></head> <body> This a quick sample. <br /> <img alt=&quot;Sample Photo&quot; src=&quot;photo.jpg&quot; /> </body> </html>
  • 23.
    簡単な Azure アプリビルド デプロイ >cspack simple.csdef /copyonly Windows(R) Azure(TM) Packaging Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved. >csrun simple.csx simple.cscfg Windows(R) Azure(TM) Desktop Execution Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved. Using session id 1 Created deployment(34) Started deployment(34) Deployment input endpoint HttpIn of role WebRole at http://127.0.0.1:82/
  • 24.
    簡単な Azure アプリ開発環境にデプロイ
  • 25.
  • 26.
  • 27.
    PHP on AzurePHP の言語処理系 (php.exe) を Azure 上に送りこむ ネイティブコードサポート !
  • 28.
    PHP on Azure/ProjectRoot/ WebRole/ index.php web.config simple.csdef .. クラウド・サービス定義ファイル simple.cscfg .. クラウド・サービス構成ファイル
  • 29.
    PHP on Azurephpsimple.csdef クラウド・サービス定義ファイル <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <ServiceDefinition name=&quot;phpsimple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&quot;> <WebRole name=&quot;WebRole&quot; enableNativeCodeExecution=&quot;true“ > <ConfigurationSettings> </ConfigurationSettings> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name=&quot;HttpIn&quot; protocol=&quot;http&quot; port=&quot;80&quot; /> </InputEndpoints> </WebRole> </ServiceDefinition>
  • 30.
    PHP on Azurephpsimple.cscfg クラウド・サービス構成ファイル <?xml version=&quot;1.0&quot;?> <ServiceConfiguration serviceName=&quot;phpsimple&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration&quot;> <Role name=&quot;WebRole&quot;> <Instances count=&quot;1&quot;/> <ConfigurationSettings> </ConfigurationSettings> </Role> </ServiceConfiguration>
  • 31.
    PHP on Azureindex.php <html> <head><title>Hello World PHP</title></head> <body> <?php echo 'Today is '. date('Y-m-d') .&quot;\n&quot;; ?> </body> </html>
  • 32.
    PHP on Azureweb.config <?xml version=&quot;1.0&quot;?> <configuration> <system.webServer> <handlers> <add name=&quot;FastCGIHandler&quot; verb=&quot;*&quot; path=&quot;*.php&quot; scriptProcessor=&quot;%RoleRoot%\approot\PHP\php-cgi.exe&quot; modules=&quot;FastCgiModule&quot; resourceType=&quot;Unspecified&quot; /> </handlers> <defaultDocument> <files> <add value=&quot;index.php&quot;/> </files> </defaultDocument> </system.webServer> </configuration>
  • 33.
    PHP on Azureweb.roleconfig <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <system.webServer> <fastCgi> <application fullPath=&quot;%RoleRoot%\approot\PHP\php-cgi.exe&quot; /> </fastCgi> </system.webServer> </configuration>
  • 34.
    PHP on Azureビルド デプロイ >cspack phpsimple.csdef /copyonly Windows(R) Azure(TM) Packaging Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved. >csrun phpsimple.csx phpsimple.cscfg Windows(R) Azure(TM) Desktop Execution Tool version 1.0.0.0 for Microsoft(R) .NET Framework 3.5 Copyright (c) Microsoft Corporation. All rights reserved. Using session id 1 Created deployment(32) Started deployment(32) Deployment input endpoint HttpIn of role WebRole at http://127.0.0.1:82/
  • 35.
    PHP on Azure開発環境にデプロイ
  • 36.
    PHP on Azure動作 !
  • 37.
    PHP & MySQLon Azure Windows Azure MySQL PHP Solution Accelerator http://code.msdn.microsoft.com/winazuremysqlphp MySQL php.exe に加え、 mysql.exe も送りこむ Worker Role で mysql のインスタンスを起動させる
  • 38.
    PHP & MySQLon Azure Windows Azure MySQL PHP Solution Accelerator をダウンロード・展開 PHP, MySQL, PHPMyAdmin などを詰め込む ディレクトリ構成
  • 39.
    MySQL を WorkerRoleで動かす LocalStorage を定義 (ServiceDefinition.csdef) <LocalResources> <LocalStorage name=&quot;InstMgrLocalStorage&quot; sizeInMB=&quot;75&quot; cleanOnRoleRecycle=&quot;false&quot; /> <LocalStorage name=&quot;MySQL&quot; sizeInMB=&quot;75&quot; cleanOnRoleRecycle=&quot;false&quot; /> <LocalStorage name=&quot;MySQLDatastore&quot; sizeInMB=&quot;122880&quot; cleanOnRoleRecycle=&quot;false&quot; /> <LocalStorage name=&quot;BlobBackup&quot; sizeInMB=&quot;2&quot; cleanOnRoleRecycle=&quot;false&quot; /> </LocalResources>
  • 40.
    MySQL を WorkerRoleで動かす Wrapper で指定 (MySQLAccess.cs) public bool Start(int id) { try { string baseDir = RoleEnvironment.GetLocalResource(&quot;MySQL&quot;).RootPath.Replace('\\', '/'); string dataDir = RoleEnvironment.GetLocalResource(&quot;MySQLDatastore&quot;).RootPath.Replace('\\', '/'); string blobDir = RoleEnvironment.GetLocalResource(&quot;BlobBackup&quot;).RootPath.Replace('\\', '/'); … File.Copy(&quot;my.ini&quot;, iniFile, true); //update teh my.ini file with mysql server details UpdateMyIni(iniFile, baseDir, dataDir, port, id.ToString());
  • 41.
    PHP & MySQLon Azure
  • 42.
    PHP & MySQLon Azure
  • 43.
    Mediawiki on AzureWindows Azure Mediawiki MySQL Solution Accelerator http://code.msdn.microsoft.com/winazuremediawiki 基本的には、 Windows Azure MySQL PHP Solution Accelerator と同等
  • 44.
    Mediawiki on Azurememcached を動かす MySQL と同様に Worker Role + C# の Wrapper protected void RunMemcached() { IPEndPoint endpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[&quot;memcached&quot;].IPEndpoint; string cacheSize = RoleEnvironment.GetConfigurationSettingValue(&quot;CacheSizeInMB&quot;); string arguments = &quot;-m &quot; + cacheSize + &quot; -l &quot; + endpoint.Address + &quot; -p &quot; + endpoint.Port; ProcessStartInfo startInfo = new ProcessStartInfo(); … try { using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit();
  • 45.
  • 46.
    その他 Rubyon Rails on Azure FastCGI 対応のものは動かせる Ruby on Rails も http://rubyonrails.cloudapp.net
  • 47.
    まとめ Azure を試してみたLL 系言語アプリも十分動かせる Amazon EC2 の対抗として十分なポテンシャルがありそう ただし、もうすこし UNIX-like な開発環境があると親和性が高くなる OSX な開発者もいるので ..