Smile Engineering blog ( スマイルエンジニアリング・ブログ )

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

Windows Azure Platform 事始め 第2回

2012-01-28 18:34:20 | Windows Azure
前回は、『クラウドコンピューティングについて』を掲載しました。今回は、『Windows Azure Platformについて』と『Azureプログラミングについて』を掲載します。


■2 Windows Azure Platformについて

(1)Windows Azure Platformとは
 前回述べたとおり、Window Azure Platform(以下、Window Azure)はPaaS形式のクラウドサービスです。パブリッククラウド向けのサービスであり、プライベートクラウド構築のために利用することはできません。Windows Azureはアプリケーションを開発・実行するプラットフォームに特化しています。
 Windows Azureの正体は、仮想化環境のHyper-V上で稼動するWindows Server 2008です。そこにユーザのアプリケーションを追加し、サービスが提供されることになります。Windows Azureは、いままでとは違った新しいOSや環境ではありません。



 ●ネイティブコードやPerlも実行可能  
  開発言語はC#とVisual Basicだけに限られたものではなく、.NETマネージコード(p/invoke)からのネイティブコード呼び出しが可能になっています。また、IISに組み込まれているFastCGIを用いた各言語のコード実行がサポートされているので、PHPやPerl、Javaのコードも実行可能です。
  各開発言語の実行環境が64bitのWindowsアプリケーションとして構築されていれば、その実行環境ごとパッケージングして配置することで、Windows Azure上で動作することが可能になります。
 
 ●オープンなインタフェース
  Windows Azureのリソースへのアクセス方法も、スタンダードな実装となっています。Windows AzureのStorage Service(後述)に対するアクセスでは、.NET Frameworkに含まれる既存ライブラリを活用することで、ADO.NETやADO.NET Data Services、LINQによる容易なプログラミングで行うことができます。また、インタフェースとしてはRESTを採用しているため、.NETだけではなくPHPやRuby、Java等からのアクセスも可能です。



(2)Windows Azureの内部構造
 Window Azureでは、Hosted ServicesとStorage Servicesという2つのコンポーネントに単純化され、提供されます。



 ●Hosted Services
  Window Azureに配置するアプリケーションは、Webロール、Workerロールといった、役割ごとにそのインスタンスを構成することになります。

  ・Webロール
   インターネットからのHTTP/HTTPSのリクエストを処理するWebアプリケーションやWebサービスで構成されています。実装技術としては、ASP.NETやWCF(Windows Communication Foundation:アプリケーション同士をネットワーク経由で接続する仕組み)などの.NET Frameworkテクノロジが利用されています。

  ・Workerロール
   インターネットへのエンドポイントは持たず、リクエストをストレージサービスのキューを経由して受け取り、バックエンドの処理を実行します。ストレージサービスは、インターネットからのアクセスも可能なので、たとえば、自社内のサーバーからストレージサービスのキューを介し、Workerロールへリクエストを送信することも可能です。

  各々のロールインスタンスは、仮想マシンに割り当てられているので、利用者側のコンフィギュレーション設定により、インスタンスを動的に変更できる仕組みを持っています。
  また、アプリケーションは、パッケージングし、Window Azureの管理ポータルへアップロードする仕組みになっています。一度、アップロードされたロールのパッケージは、内部的にイメージで管理され、インスタンスの追加の際には、そのイメージが展開される仕組みになっています。

 ●Storage Services
  Window Azureにおいては、既存のファイルシステムの形でストレージを提供するのではなく、拡張性や可用性を備えたサービスとしてストレージサービスを提供しています。つまり、既存環境では、利用者側がハードウェアの追加や運用によって拡張性や可用性を維持していたものが、マイクロソフトによって提供されることになります。

  1.SQL Azure Database
   SQL Serverの技術をベースにしてクラウド上にリレーショナルデータベース機能をオブションで提供するサービスです。

  2.Azure Storage Service
   拡張性の高いストレージ環境であり、特性に合わせて使い分けられる3つのデータストアの仕組み、テーブル、ブロブ、キューを標準で提供しています。

  ・ブロブ
   ブロブは、3種類のストレージのうち、もっともシンプルなものです。アカウント-コンテナ-ブログの3つの階層で構成されています。アカウントは、ファイルシステムにおけるドライブに該当し、コンテナは、ファイルシステムにおけるドライブ直下のフォルダに該当。ブロブは、画像ファイルや動画ファイルなどの実際のバイナリデータに該当します。ファイルシステムに近い使い方ができるで、単にデータを保存する用途に適しています。また、WebロールやWorkerロールのログもブロブに保存されます。

  ・テーブル
   テーブルは、いわゆるRDBのテーブルではなく、シンプルな、エンティティとプロパティの組み合わせを格納する仕組みであり、クラウドで広く利用されている「分散Key-Valueストア」であります。分散Key-Valueストアとは、「キー」と「値」のペアからなるストレージのことです。データ構造がシンプルなため、分散化や高可用性の実現に適しているが、逆にRDBが得意とする複雑な検索・集計やトランザクション処理は得意ではありません。

  ・キュー
   キューは、ブロブやテーブルとは異なり、データの保存ではなく、主にWebロールとWorkerロール間でのデータの受け渡しに使われます。サービス利用者からのリクエストをWebロールで受け取り、キューにデータを書き込み、Workerロールがそれを引き取って処理を行います。結果を再度キューに書き込みWebロールに戻すことも可能です。Webロール、Workerロール、キューをうまく組み合わせることで、一連の処理を非同期に効率よく行うことができます。

(3)Windows Azureサービス提供開始時の価格体系
 提供価格については、為替レートなどの影響もあり、変動要素が大きいので、常に最新の情報を確認する必要があります。



(4)開発エクスペリエンス
  Windows AzureのSDKとVisual Studio用の開発支援ツールをがあれば、Visual Studioをベースとしたクラウド開発環境を構築することができます。C#やVisual Studioを利用する.NET開発者であれば、特に新しいスキルを習得することなく、クラウド開発をスタートすることができます。
  開発したパッケージをWindows Azureに展開する手順も簡単で、一連の流れを、すべてのブラウザ上から実施することができます。Windows Azure開発ポータルにパッケージと設定ファイルを置き、ステージング環境で動作を確認後、本番に展開します。裏側で行われている一連の処理としては、仮想マシンのノードを割り当て、OSと実行するロール(役割)のイメージを配置し、ロードバランサの設定も行います。サービス開始時には、ロギングの仕掛けや停止したノードの処理、OSのセキュリティパッチ適用などにおけるローリング更新の仕組みも組み込まれた状態になってはじめて開始されます。開発者は拡張性や可用性を考えることなく、アプリケーション開発に専念できます。

■3 Azureプログラミングについて

(1)Windows Azureアプリケーション開発の概要
 Windows Azureで動作するアプリケーションは、ASP.NETを使用したWebアプリケーションです。Visual StudioでASP.NETを使用した開発経験があれば、Windows Azureアプリケーションの開発は、今までとそれほど変わりません。開発言語は、C#やVB.NETが使用でき、Visual Studio上で開発することができます。
 Windows Azureに配置するプログラムは、ASPXファイルやDLLファイルなどをひとまとめにしたパッケージファイル(.cspkg)になります。パッケージファイルを作成するためのツールとして、Windows Azure SDKが提供されています。
 Windows Azure SDKには、パッケージファイルを作成する機能のほかに、Windows Azureファブリックのシミュレーション環境である開発ファブリック(Development Fabric)やWindows Azureストレージサービスのシミュレーション環境である開発ストレージ(Development Storage)などが含まれています。これらの開発環境によって、Visual Studioのデバッグ機能が使用でき、1台のPCで開発作業を完結することが可能になります。
 Windows Azureアプリケーションの開発は、このWindows Azure SDKだけで行うことができますが、Visual Studioを使用することで開発生産性を向上させることが期待できます。
 Visual Studioを使ったWindows Azureアプリケーションの開発を行うには、Windows Azure Tools for Microsoft Visual Studioツールをインストールします。これによって、Visual Studio上からパッケージファイルの作成や開発ファブリックとの連動を行うことができます。



(2)開発環境構築のためのシステム要件
 以下の表は、Visual Studioを使用したWindows Azure開発をするためのシステム要件です。



(3)Azureプロジェクトの作成
 開発時に利用するプロジェクトテンプレートは、以下の2種類の方法があります。
 ・Cloud Serviceプロジェクトテンプレート単体に Web/Workerロールのプロジェクトを追加する。
 ・Cloud Serviceと、Webロール、Workerロールの単体もしくは双方を含むプロジェクトテンプレートを利用する。

 Cloud Serviceプロジェクトは、各ロールプロジェクトのデバッグと配布の機能を提供するプロジェクトですが、アプリケーションのソースコード等は含みません。代わりにプロジェクトに含まれるのは、対象とするロールプロジェクトの情報と、そのロールに適用される設定情報ファイルです。



 Windows Azureアプリケーションでもweb.configファイルを使用することができます。しかし、web.configファイルはアプリケーションと一緒にパッケージにした状態での配置しか行えず、配置した状態での動的な変更も行えません。そのため、運用中に変更する可能性のある構成設定はサービス構成(.cscfg)ファイルに記述します。

(4)開発ファブリック
 開発ファブリックは、Windows Azureアプリケーションを開発PC上で実行するための開発用実行環境であり、Windows Azureホスティングサービスのシミュレーション環境です。開発ファブリックへの配布は、Visual Studioでデバッグ実行時、自動的に行われます (内部的には、サービス構成ファイル (cscfg) とは別に、プロジェクト名 .csx というフォルダにその他のファイルが格納されます)。
 通常のASP.NETでWebアプリケーションを開発する際には、IISやASP.NET開発サーバー上で実行確認をしますが、Windows Azureアプリケーションの開発では、この開発ファブリック上で実行確認をします。

(5)インスタンス数の変更
 Windows Azureでは、構成ファイルを変更するだけでインスタンス数を変更することができます。インスタンス数とはWindows Azure上で実行される仮想サーバーの台数のことを指します。インスタンス数の設定は、サービス構成ファイル (cscfg)ファイルで行います。

(6)Windows Azureアプリケーションの配置

 1.パッケージファイルの作成
  Visual Studioより発行を行い、パッケージファイルを作成します。
  クラウドサービスプロジェクトで『発行』を行うと、以下の2つのファイルが作成されます。
  ・クラウドサービスプロジェクト名.cspkg
  ・ServiceConfiguration.cscfg

  1つ目の『クラウドサービスプロジェクト名.cspkg』ファイルは、コンパイル済みのプログラムや、プロジェクト内に含めた画像や静的なHTMLファイルなどが含まれています。
  2つ目の『ServiceConfiguration.cscfg』ファイルは、クラウドサービスプロジェクトに含まれている同名のファイルがそのまま格納されています。
   Windows Azureにアップロードするのは、この2つのファイルのみになります。

 2.ステージング環境への配置
  ステージング環境とは、本番運用前に試験を行う環境です。
  作成されたパッケージファイルと構成ファイルをWindows Azureの管理ポータルから手動でステージング環境へアップロードします。クラウドへの配置は自動で行われます。また、あらかじめ、Windows Azureストレージへアップロードしておき、そこからステージング環境へアップロードすることも可能ですので、複数バージョンのアプリケーションをテストする際には、アップロード時間を短縮することが可能になります。
  配置が完了したアプリケーションは、ポータルサイトより開始ボタンをクリックするだけで、実行が開始されます。
  Windows Azureポータルサイトを利用するためには、Windows Azureのアカウントが必要になります。



 3.プロダクション環境への展開
  プロダクション環境とは、本番運用を行う環境です。
  ステージング環境から、実際のプロダクション環境へ展開するには、管理ポータルの中央のボタンを押下することで実行されます。


 
■ おわりに

 全2回にわたり『Windows Azure Platform 事始め』についての記事を掲載しました。クラウドコンピューティングやWindows Azure Pralformの仕組みを少しでも知って頂けたでしょうか。今後も機会がありましたら、より掘り下げた技術情報を提供していきたいと思っています。


参考文献
Windows Azure入門

Windows Azure のアプリケーション開発
http://www.microsoft.com/japan/powerpro/TF/column/fs_02_1.mspx

株式会社ジェイエスピー
システム部
鈴木真一郎


monipet
  動物病院の犬猫の見守りをサポート
  病院を離れる夜間でも安心

ASSE/CORPA
  センサー、IoT、ビッグデータを活用して新たな価値を創造
  「できたらいいな」を「できる」に

OSGi対応 ECHONET Lite ミドルウェア
  短納期HEMS開発をサポート!

GuruPlug
  カードサイズ スマートサーバ

株式会社ジェイエスピー
  横浜に拠点を置くソフトウェア開発・システム開発・
  製品開発(monipet)、それに農業も手がけるIT企業
コメント
この記事をはてなブックマークに追加