SlideShare a Scribd company logo
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;&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%pprootHPhp-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%pprootHPhp-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 な開発者もいるので ..

More Related Content

What's hot

Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加するAwsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
聡 大久保
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03
oranie Narut
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
勲 國府田
 
ECS for Docker Meetup #4
ECS for Docker Meetup #4ECS for Docker Meetup #4
ECS for Docker Meetup #4
Shinpei Ohtani
 
Apacheチューニング
ApacheチューニングApacheチューニング
Apacheチューニング
ii012014
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
Masahiro Nagano
 
Embulk 20150411
Embulk 20150411Embulk 20150411
Embulk 20150411
Hiroshi Nakamura
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
聡 大久保
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
Masahiro Nagano
 
ansible 社内お勉強会資料
ansible 社内お勉強会資料ansible 社内お勉強会資料
ansible 社内お勉強会資料
Makoto Uehara
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
 
Ansible入門...?
Ansible入門...?Ansible入門...?
Ansible入門...?
shirou wakayama
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
Masahiro Nagano
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
Masahiro NAKAYAMA
 

What's hot (20)

Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加するAwsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング中小規模サービスのApacheチューニング
中小規模サービスのApacheチューニング
 
ECS for Docker Meetup #4
ECS for Docker Meetup #4ECS for Docker Meetup #4
ECS for Docker Meetup #4
 
Apacheチューニング
ApacheチューニングApacheチューニング
Apacheチューニング
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
Embulk 20150411
Embulk 20150411Embulk 20150411
Embulk 20150411
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
ansible 社内お勉強会資料
ansible 社内お勉強会資料ansible 社内お勉強会資料
ansible 社内お勉強会資料
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
 
Ansible入門...?
Ansible入門...?Ansible入門...?
Ansible入門...?
 
Webアプリケーションの パフォーマンス向上のコツ 実践編
 Webアプリケーションの パフォーマンス向上のコツ 実践編 Webアプリケーションの パフォーマンス向上のコツ 実践編
Webアプリケーションの パフォーマンス向上のコツ 実践編
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Apache Module
Apache ModuleApache Module
Apache Module
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 

Viewers also liked

Performance and Scalability of Web Service
Performance and Scalability of Web ServicePerformance and Scalability of Web Service
Performance and Scalability of Web Service
Shinji Tanaka
 
Introduction to Accumulo
Introduction to AccumuloIntroduction to Accumulo
Introduction to Accumulo
Mario Pastorelli
 
Building an API layer for C* at Coursera
Building an API layer for C* at CourseraBuilding an API layer for C* at Coursera
Building an API layer for C* at Coursera
Daniel Jin Hao Chia
 
Scala and Hadoop @ eBay
Scala and Hadoop @ eBayScala and Hadoop @ eBay
Scala and Hadoop @ eBay
ebaynyc
 
Original Server Conference
Original Server ConferenceOriginal Server Conference
Original Server Conference
Shinji Tanaka
 

Viewers also liked (6)

Performance and Scalability of Web Service
Performance and Scalability of Web ServicePerformance and Scalability of Web Service
Performance and Scalability of Web Service
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
Introduction to Accumulo
Introduction to AccumuloIntroduction to Accumulo
Introduction to Accumulo
 
Building an API layer for C* at Coursera
Building an API layer for C* at CourseraBuilding an API layer for C* at Coursera
Building an API layer for C* at Coursera
 
Scala and Hadoop @ eBay
Scala and Hadoop @ eBayScala and Hadoop @ eBay
Scala and Hadoop @ eBay
 
Original Server Conference
Original Server ConferenceOriginal Server Conference
Original Server Conference
 

Similar to Using Windows Azure

Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
Yasuhiro Horiuchi
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
Kuniteru Asami
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
日本マイクロソフト株式会社
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
de:code 2017
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
Hiroshi Okunushi
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
Akira Inoue
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
Takenori Nakagawa
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
Amazon Web Services Japan
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Shotaro Suzuki
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
真吾 吉田
 
PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -
Masaki Takeda
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Akira Inoue
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
Akira Inoue
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション
de:code 2017
 

Similar to Using Windows Azure (20)

Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
densan2014-late01
densan2014-late01densan2014-late01
densan2014-late01
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
 
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
本格化するクラウド ネイティブに向けて進化する開発プラットフォームと .NET
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション
 

Recently uploaded

MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Takuya Minagawa
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 

Recently uploaded (10)

MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 

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 Windows Azure 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 Services EC2 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 Microsoft Visual Web Developer 2008 Express Edition Eclipse Azure SDK
  • 14. Azure Platform Interoperability Windows Azure Tools for Eclipse PHP / Java などとの Interoperability にも注力 http://www.microsoft.com/windowsazure/interop/
  • 15. Azure の開発フロー Visual Studio / 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 アプリ 開発環境にデプロイ
  • 27. PHP on Azure PHP の言語処理系 (php.exe) を Azure 上に送りこむ ネイティブコードサポート !
  • 28. PHP on Azure /ProjectRoot/ WebRole/ index.php web.config simple.csdef .. クラウド・サービス定義ファイル simple.cscfg .. クラウド・サービス構成ファイル
  • 29. 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>
  • 30. 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>
  • 31. PHP on Azure index.php <html> <head><title>Hello World PHP</title></head> <body> <?php echo 'Today is '. date('Y-m-d') .&quot;&quot;; ?> </body> </html>
  • 32. 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%pprootHPhp-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 Azure web.roleconfig <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <system.webServer> <fastCgi> <application fullPath=&quot;%RoleRoot%pprootHPhp-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 & MySQL on Azure Windows Azure MySQL PHP Solution Accelerator http://code.msdn.microsoft.com/winazuremysqlphp MySQL php.exe に加え、 mysql.exe も送りこむ Worker Role で mysql のインスタンスを起動させる
  • 38. PHP & MySQL on 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 & MySQL on Azure
  • 42. PHP & MySQL on Azure
  • 43. Mediawiki on Azure Windows Azure Mediawiki MySQL Solution Accelerator http://code.msdn.microsoft.com/winazuremediawiki 基本的には、 Windows Azure MySQL PHP Solution Accelerator と同等
  • 44. 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();
  • 46. その他 Ruby on Rails on Azure FastCGI 対応のものは動かせる Ruby on Rails も http://rubyonrails.cloudapp.net
  • 47. まとめ Azure を試してみた LL 系言語アプリも十分動かせる Amazon EC2 の対抗として十分なポテンシャルがありそう ただし、もうすこし UNIX-like な開発環境があると親和性が高くなる OSX な開発者もいるので ..