WindowsAzure でのアプリ開発 2009.10.18 けんちゃん
目次 WindowsAzureの概要 試作アプリ紹介 開発の流れ DataStore(DataStorageServiceとSQL Azure) 開発TIPS集
1.WindowsAzureの概要
1-1.WindowsAzureの概要1 Azureは、MSのサーバ上で動作する「パブリッククラウド」 SQL Azure アプリケーション SQL Azure .NET Services (今回の対象外) 非クラウドのアプリケーション WindowsXP WindowsMobile WindowsServer ちなみに、Azureとは「青空、碧空、蒼穹」の意味 「青空にポッカリ浮かんだ白い雲」のイメージか? 参考にしたWebの記事 ■WindowsAzurePlatformデベロッパーセンター http://msdn.microsoft.com/ja-jp/azure/default.aspx
1-2.WindowsAzureの概要2 WebロールとWorkerロールの2つのロール構成 HTTP(S) VM ロード バランサー HTTP(S) VM IIS Webロール VM Workerロール(バッチジョブ) Windows Azure ファブリックレイヤー WebロールとWorkerロールは、直接アクセスはできない。 アクセスは、QUEUEサービス(後述)を利用 参考にしたWebの記事 ■WindowsAzurePlatformデベロッパーセンター http://msdn.microsoft.com/ja-jp/azure/default.aspx
1-3. Azureの料金体系 WindowsAzureの料金について VM使用:$0.12/Hour (月額8000円ほど) Azureの使用料金は、以下のように発表されている。(2009年9月時点) 他社のサービスによって、さらに変更になる可能性も。 WindowsAzureの料金について VM使用:$0.12/Hour (月額8000円ほど) ストレージ:$0.15/GB/Month(月額1GBあたり約15円) ストレージ利用:$0.01/10k(転送10Kあたり、約1円) SQLAzureの料金について BusinessEdition:$99.99(10GBまで、月額約1万円) WebEdition:$9.99(1GBまで、月額約千円) 参考にしたWebの記事 ■WindowsAzureの料金体系について http://www.microsoft.com/azure/pricing.mspx
2.試作アプリ紹介
2-1. 試作アプリの紹介1 本サイトは、既存の.NET C#ベースのWebアプリを移植 Azure以外のサイトとの連携試作 (livedoor提供の 天気予報) ゲスト用アカウント「guest/guest」で利用いただけます。 参考にしたWebの記事 ■試作アプリのURL http://fileuploadtest.cloudapp.net/
2-2. 試作アプリの紹介2 SQL AzureとのSQL連携試作 (ポイント管理システム試作) BLOBとQUEUEサービスの連携試作 ■TORIPOTO(トリポト) Silverlightを用いた本格的なAzureアプリ http://toripotoazure.cloudapp.net/ 参考にしたWebの記事 SQL AzureとのSQL連携試作 (ポイント管理システム試作) BLOBとQUEUEサービスの連携試作 (イメージデータ預かりサービス)
3.開発の流れ
3-1. (無償)開発環境の構築 09年8月時点で提供されているCTP版Windows Azure 開発環境を、無償開発環境として、構築した。 (1)Windows VISTAあるいは2008Serverの用意 (2)IIS7.0の設定 (3)VisualStudio2008ExpressEditionsのインストール (4)SQL Server2008ExpressEditionのインストール SQL Server Management Studioもあれば便利。 (5)Microsoft PowerShellのインストール(必須ではない) (6)Windows Azure SDKのインストール (7)Windows Azure Toolsのインストール ここまでで所要時間は、約5H 使用ディスク容量は、約1GB http://www.atmarkit.co.jp/fdotnet/dnfuture/winazuretry_01/winazuretry_01_01.html http://www.atmarkit.co.jp/fdotnet/dnfuture/winazuretry_02/winazuretry_02_01.html 参考にしたWebの記事
3-2. Windows Azure利用申請 作成したサービスを、Windows Azureへ配置するには、 利用申請をMSに行う必要あり。 (1)(持っていない方)Windows Live IDのアカウント作成 →アカウント申請後、即時にIDが発行された。 (2)Azureポータルサイトのアカウント作成 →Live IDがあれば、すぐに作成された。 (3)WindowsAzureの招待コード(Invitation Token)の申告 申告から、実際に招待コードが届くまで、3~4日かかった。 利用申請用ページ http://www.microsoft.com/azure/default.mspx
Cloud Serviceのプロジェクトのテンプレートが追加されている 3-3. ローカルでの開発~最初の一歩 (1)VisualWebDeveloper2008の起動 (2)新規プロジェクトの作成 Cloud Serviceのプロジェクトのテンプレートが追加されている
3-4.お決まりのHelloWorldプログラム (簡単な)クラウドサービスプログラムの作成 Protected void Page_Load(object sender, EventArgs e) { Panel1.Text = “HelloWorld”; } 非クラウドの.Net Webアプリケーションの作成と、基本的には変わらない。 ↓ 開発時は、.NET Webアプリケーションとして開発する方が楽。
3-5.HelloWorldプログラムの実行 クラウドサービスプログラムのローカルでの実行結果 HelloWorldが(ローカル環境で)実行できた。 ・Windows Azure SDKの「Development Fabric」(クラウドサービスのエミュレータ)と「Development Storage」(Azureストレージサービスのエミュレータ)を、先に起動しておく。
3-6. プログラムの公開 AzurePlatformのポータルサイトを利用して、作成した プログラムを公開する ①まずは、ステージング環境にアップ ②ステージング環境で動作確認後、本番環境に切り替え
3-7. 開発のツボ (1)非クラウドのWebアプリケーションとして開発する。 最初からクラウドと繋げると開発効率が上がらない。 最初からクラウドと繋げると開発効率が上がらない。 (2)開発時は、データストレージもローカルに持つ。 開発効率の問題から、ローカルのSQLServerに繋げる。 Azureに切り替えるには、ConnectionStringを書き換える だけでOK。 (3)ツールを活用する。 SQLServerの管理ツールの他、データストレージの管理 ツールを活用して開発する。 巻末にツールの紹介を参照。
AzureDeveloperCenter (1)SDK付属のサンプルソースを読む。 先ずは、使って、動かしてみる。 (2).NETウェブアプリの学習を行う。 使われている技術は、.NETなので、.NETを勉強する。 (3)Webを検索してみる。 日本語でのサイトが今のところ少ない。 (4)書籍で学習する。 具体的な事例を使った書籍が少ない。英語なら。。 AzureDeveloperCenter http://msdn.microsoft.com/ja-jp/azure/cc994380.aspx
4.DataStore(DataStorageServiceとSQL Azure)
4-1.DataStorageServiceとSQL Azure Windows Azure BLOBサービス (非表形式のデータ用) SQL Azure SQLサービス SQLServerとの乗り換えは比較的容易。ConnectionString変更のみでOK。 Join構文などもローカルと同様に使える。 TABLEサービス (表形式データkey-value型) QUEUEサービス (WebとWorkerロールとのデータ連携) 参考にしたWebの記事 http://d.hatena.ne.jp/griefworker/20090203/1233618759
4-2. SQL Azureの制限について SQL Azureには、以下のような制限がある。 ①text型、ntext型、image型は利用できない。 ②既存のシステムのテーブル定義用スクリプトがそのままでは利用できない。 (未対応プロパティがあるため) →ひとつひとつ手作業で確認する必要あり ③SQL Server Management Manager(管理ツール)で、オブジェクトブラウジングできない。開発効率↓。 ④接続制限として、5分の制限時間がある。 →大きなトランザクションは、小分けにするなど対処が必要 参考にしたWebの記事 ■クラウドで利用できるRDBMSとしてのSQL Azure http://thinkit.jp/article/1028/3/
5.開発TIPS集
5-1. TIPS1(開発環境でのデバッグ) クラウドサービスプログラムの実行 いきなり、怒られた・・・ 「DevelopmentFabric(Azure環境のエミュレータ) の実行には、より上位の権限が必要です。」 →管理者モードで、開発環境(MS Visual Web Devoper) を実行する。
5-2.TIPS2(Web.configの設定) ①StorageEndpointの設定 「http://<ストレージ名>.blob.core.windows.net/」がStrageServiceのアドレスだが、StorageEndpointの設定には、ストレージ名は付けない。 「http://blob.core.windows.net/」が正解。 ② allowInsecureRemoteEndpointsの設定 →ローカルでの実行時には、未設定でも”False”と解釈されたが、Azure環境で未設定の場合は、例外が発生する。 httpの場合はFalse、httpsの場合はTrueに設定 参考にしたWebの記事 ■ Webアプリケーションをクラウドの中に移行した例 http://www.atmarkit.co.jp/fdotnet/dnfuture/winazuredemo_01/winazuredemo_01_01.html
5-3.TIPS3(SQLServerからの移行) SQL Serverの管理ツール(SQL Server Management Studio)を利用し、 テーブル作成とデータ挿入用のSQL文を作成 ポイントは、オプションの設定にあり ①「UDDTsを基本データ型に変換」→True ②「拡張プロパティのスクリプトを作成」→False ③「USE DATABASEのスクリプト作成」 →False ④「データのスクリプトを作成→True ※上記以外は、デフォルトでいいはず。 参考にしたWebの記事 ■クラウドで利用できるRDBMSとしてのSQL Azure http://thinkit.jp/article/1028/1/
5-4.TIPS4(ツールの利用) ・BLOBの閲覧&編集 □SpaceBlock(http://www.codeplex.com/spaceblock) Cloud Storage(Sun Cloud Storageなど)に対応 □Azure Storage Explorer(http://azurestorageexplorer.codeplex.com/) Windows Azure StorageのBlob、Table、Queueに対応。 □Azure XML ログ解析ツール 現在調査中。 参考にしたWebの記事 ■ WindowsAzureBlobStorage http://thinkit.jp/article/1019/2/
最後に まだ正式版ではなく、CTP版のみの提供で、原因不明の ワーニングが出たり、サーバが突如ダウンしたりしているが、 今後の展開に注目したい。 Silverlightとの連携など、まだ面白いことができそうだ。。。
ご静聴、ありがとうございました。