jump to navigation

Microsoft Windows Azure について 10月 9, 2009

Posted by hyhy in 技術情報.
Tags: , ,
trackback

Windows Azureのローンチに向けて知っておくべき4つのこと
クラウド・コンピューティングの基本とWindows Azure
Windows Azureクラウドサービス運用の実際
Windows Azure Storageを利用したアプリケーションの作成(準備編)
Windows Azure Storageを利用したアプリケーションの作成(後編)
クラウドとWindows Azureの“もやもや”解消!

■おさらい
クラウド・コンピューティングとは、ネットワーク、特にインターネットを介して、コンピュータ・リソースを提供また利用するという考え方を指します。
クラウド・コンピューティングは、従来ローカル・コンピュータや自社管理のネットワーク内部に所在していたリソースをクラウド上つまりインターネット上に配置することにより実現します。

■SaaSやらPaaSやらIaaSやら
Windows AzureはPaaSに当ります。

■■Microsoft Windows Azure について

Microsoftのクラウド・サービス・プラットフォーム「Azure Service Platform」上で動作するOSで、Microsoftが提供するクラウド・サービスの中核をなしています。
クラウドOSの一種です。

Azure1_ppt

Windows Azureは.NETの開発プラットフォームをクラウド上で提供します。この階層のクラウド・サービスにおいては、既にOSや開発環境がクラウド上に導入されており、技術者は慣れ親しんだ環境や言語をサポートするサービスを選択することにより、独自のクラウド・アプリケーションを容易に構築することができます。また、構築したクラウド・アプリケーションはベンダのハードウェア・リソースを利用して公開されるので、より安定したサービスの提供が可能となります。

Windows Azureの最大の特徴は.NET環境をサポートしているという点です。 MicrosoftはWindows Azureのソフトウェア開発キットと併せて、Visual Studio 2008用のプラグインを用意しています。統合開発環境上でクラウド・アプリケーションが構築できるのもWindows Azureの大きな魅力です。ちなみにクラウド上で.NET環境の開発をする場合、Amazon EC2上でWindows OSを選択して開発環境を整えるという選択肢もありますが、Amazon EC2の場合はOSや開発環境を自己管理する必要があります。導入の際にはアプリケーション開発以外に発生する管理コストについても比較する必要があるでしょう。

 目下、プラットフォームを提供する各ベンダーのクラウド・サービスは開発環境上の要件によって実質的に棲み分けられているような状態です。例えば Python言語もしくはJava+Eclipseの利用であればGoogle Apps Engine、.NETはWindows Azure、より大きな自由度が必要な場合はAmazon EC2と言った具合に、使用言語、開発環境、OSといった要件により自ずと選択すべきプラットフォームも限定されて来ます。

■Windows Azureのアーキテクチャ
Azure2_ppt_s

■Azure Service Platform
Microsoftが提供するクラウドサービスAzureの基盤技術全体を指しています。OSやストレージ、OS上で動く各種サービスなどを含みます。

■Windows Azure
Azure Service Platformに含まれるクラウド上のOSで、Windows Server 2008 R2をベースにしています。.NET Framework 3.5とIIS 7.0をサポートし、HTTP/HTTPS、REST、SOAP、RSSなどの標準的なWebプロトコルを提供します。

 Windows Azureはクラウド上の仮想マシンで提供され、仮想マシン上でWebロールおよびWorkerロールと呼ばれるプログラムが動作します。ロールとは、仮想マシンの役割を指しており、一つの仮想マシンの上ではそれぞれ一つのWebロール、またWorkerロールしか動作させることができません。

 Webロールは基本的にASP.NETのWebアプリケーションと同じものです。Webロールは言語として.NET環境がサポートするC#またはVisual Basicなどを使用することができます。

 Workerロールは内部的に処理を行うビジネスロジックです。Workerロールは後述するクラウド上のストレージAzure Storageとの間で、キューと呼ばれるメッセージのリクエストをやりとりすることにより動作します。Workerロール自体はユーザーインターフェイスを持たないため、ユーザーからの指示を直接実行することはありません。Workerロールの動作の流れは例えば、

1)Webロールがユーザーからの指示を受け付けメッセージをキューに格納
2)→Workerロールがそれを取り出して実行し結果をストレージに格納
3)→Webロールがストレージから結果を取り出す

もちろん単一のWebロールのみで処理を完結することも可能ですが、必要に応じて仮想マシンの数を増やし、複数のWebロールまたはWorkerロールを構成して負荷を分散させ、処理の高速化を図ることができます。

 また、Windows Azureは標準的なWindows OSに搭載されているファイルI/O関連のAPIはサポートせず、クラウド上のストレージを利用することが前提となっています。こういった差異も存在するため、既存のASP.NETアプリケーションをそのままクラウド上にWebロールとして配置しても動作するわけではない点に要注意です。

■Azure Storage
Windows Azure上に用意されているストレージです。ブロブ、テーブル、キューの3種類があります。

 ブロブは単純な階層を持つストレージでバイナリデータを保存します。保存したバイナリデータにはRESTを使ってアクセスすることができます。テーブルは非リレーショナルなデータベースで、表のような形式で各種データを保存できます。テーブルにはADO.NETやLINQなどの既存のプログラミングインターフェイスでアクセスすることができます。キューは前述しましたが、内部処理を行うプログラムWorkerロールとの間で、リクエストのメッセージなどをやりとりする際に使われるストレージです。

■.NET Services
.NET Servicesは既存の社内ネットワーク内で運用していた各種サービスやアカウント管理などをクラウド上でも利用するための一連のサービス群です。現在のところ以下の3種類のサービスがあります。

1)サービスバス
社内ネットワーク上のサービスとクラウド上のアプリケーションを連携させるための機能です。

 基本的に社内ネットワークはインターネット側から簡単にアクセスできないよう、堅固なセキュリティに守られています。サービスバスはクラウド側から社内ネットワークに接続するのではなく、社内ネットワークのサービスがクラウド側のWindows Azureにアクセスしてきた際に、該当サービスを登録する形で動的に動作します。このようにサービスバスは社内ネットワーク側から通信を確立するための仕組みを提供し、社内システムとクラウド上のアプリケーションの安全な連携を実現します。

2)アクセスコントロールサービス
アクセスコントロールサービスはWindows Azure上のアクセス権限を管理するシステムです。それ自体はアクセス権限を発行せずにWindows Live ID やWindows ServerのActive Directoryなど、外部の認証情報を利用します。Windows Azure側で信頼関係を明示すれば個別にアカウント情報を設定することなく、既存の認証情報を適用できるため、簡単にアクセス管理を実現できます。

3)ワークフローサービス
ワークフローサービスは、複数のサービスがどのように連携するかを設定する機能です。連携させることのできるサービスにはWindows Azure上のクラウド・サービスや社内ネットワーク上のサービスが含まれますが、ワークフローサービスにより、各サービスがどのような条件でどのように連携するのかを定義することができます。ワークフローサービスの構築にはVisual Studioのワークフローデザイナーを利用することができます。

■SQL Services
SQL ServicesはWindows Azure上のクラウド・アプリケーションから利用できるデータベースを提供します。SQL ServicesのデータベースエンジンがSQL Data Serviceです。先述した、Azure Storageのテーブル機能は非リレーショナルなデータベースでしたが、SQL Data Serviceはリレーショナルデータベースであり、この点、Microsoft SQL Serverがクラウド上で提供されているイメージです。

■Live Services
Live ServicesはMicrosoftのWebサービス、Windows Liveが提供するリソースをWindows Azureのクラウド・アプリケーションから利用するためのサービスです。Windows Liveはメールや地図、写真の管理やメッセンジャー、データの共有、アクセス権の制御など多くのサービスを提供していますが、Live Servicesにより、これらのサービスをWindows Azureから利用することができます。

 また、Windows LiveはPCに限らず、携帯電話デバイスやPDAデバイスなど複数のデバイスからアクセスできますが、Live ServicesのLive Meshサービスを利用することにより簡単にデバイス間でデータの同期をとることができます。さらに、Live ServicesにはLive Frameworkと呼ばれる開発環境も用意されており、このフレームワークの開発キットにより、クロスデバイスで動作するアプリケーションを構築することもできます。

■■Windows Azureの開発環境を整えていくには

■Windows Azureの開発環境のシステム要件
・Windows Server 2008またはWindows Vista SP1
・.NET Framework 3.5 SP1
・IIS 7.0(ASP.NETとCGIおよびWCF HTTP Activationが有効化されていること)
・Microsoft SQL Server 2005/2008(Express Edition含む)
・開発環境としてVisual Studio 2008 SP1

■コンポーネントの入手
Windows Azure Software Development Kit (March 2009 CTP)
Windows Azure Tools for Microsoft Visual Studio May 2009 CTP
Visual Web Developer 2008 Express Edition(無償なので必要あらば)

■開発環境の整備
・Windows Vista SP1
・.NET Framework 3.5 SP1
・IIS 7.0(ASP.NETとCGIおよびWCF HTTP Activationを有効化)
・Visual Studio 2008 SP1
・Microsoft SQL Server 2005かそれ以降のバージョン

[IIS 7.0設定手順]
1) [コントロールパネル]-[プログラムと機能]-[Windowsの機能の有効化または無効化]を選択。
2) [Microsoft .NET Framework 3.0]以下の[Windows Communication Foundation HTTP Activation]のチェックボックスを有効にする。
3) [Internet Information Services]以下の[World Wide Web サービス]-[アプリケーション開発機能]を開き[ASP.NET]と[CGI]のチェックボックスを有効にする。
4) 同じく [Internet Information Services]以下の[World Wide Web サービス]-[HTTP共通機能]を開き[静的コンテンツ]のチェックボックスを有効にする。
5) [OK]ボタンを押下し設定を適用する。

環境が整ったら、Windows Azureの開発キット、Windows Azure SDKをインストールします。
Visual Studio 2008 用の開発ツールである、Windows Azure Tools for Microsoft Visual Studioもインストールします。

■■アプリケーション開発について
■プロジェクトの作成
まず、Windows Azureのプロジェクトを作成しましょう。Visual Studio 2008を起動し、[ファイル]-[新しいプロジェクト]を選択します。
 [新しいプロジェクト]ウインドウが表示されますが、Windows Azure Tools for Microsoft Visual Studioをインストールすることにより、左側ペインのプロジェクトの種類に[Cloud Service]の項目が出現します。
[Visual C#]以下の[Cloud Service]を選択します。

Azure1_s

■ローカル環境での実行による動作確認

■クラウドへのアプリケーション配置
Windows Azureアプリケーションを実際に運用する場合は、完成したプロジェクトをクラウド上に配置しなければなりません。しかし、開発中のデバッグではローカルに仮想的なクラウド・サーバが立ち上がってアプリケーションを実行してくれるので、逐一アプリケーションをクラウド上に配置せずとも、動作を確認することができます。

Windows Azureのクラウド・アプリケーションの作成は実際にはVisual Studioの使い方も含めASP.NETの開発とほぼ同じです。これは.NETの開発経験のある技術者にとって非常に有利な環境と言えるでしょう。

 ただし、先述の通り、ファイルのI/Oやデータベースの扱いなどについてはAzure独自の知識が必要になります。

参考サイト

広告
%d人のブロガーが「いいね」をつけました。