jump to navigation

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

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

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独自の知識が必要になります。

参考サイト

広告

Amazon EC2 について 10月 9, 2009

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

Amazon EC2
Amazon Elastic Compute Cloud

Amazonでは、Amazon Web Services(AWS)として、様々なWebサービスを提供しています。Amazon EC2は、AWSの中で「Infrastructure Services」に分類されるサービスのひとつです。Infrastructure Serviceには、その他にも「Amazon Simple Storage Service(Amazon S3)」などがあります。

 Amazon EC2は、仮想マシンをWebサービスとして提供するものです。すなわち、http/httpsプロトコルを使用して、仮想マシンの起動や停止などの操作ができます。起動する仮想マシンのイメージは、AMI(Amazon Machine Image)という形式でAmazon S3に格納されています。仮想マシンの起動時に起動したいAMIを指定します。

amazonec2

Amazon EC2では、Amazon S3に格納されているマシンのイメージを起動し、WebサービスAPIを通じて操作できます。

■ホスティングとしてみた時
Amazon EC2には初期費用という考えがないため、ネットワーク経由でサーバの機能を使った分だけ支払う従量制の価格体系になっています。

■月間コスト
「Small(中位CPUを搭載したサーバ)」と呼ぶメニューの場合は月額72ドル、「Large(上位CPUを搭載したサーバ)」でも288ドルが目安となります。
しかし、注意点として容量の大きいデータの転送が頻繁に生じるサービスでは、データ転送料が大きくなり、割高となるケースもあり得ます。

■ロードバランシングの機能
大量のトラフィックを処理するにはサーバを複数台用意してロードバランサで負荷分散をすることが不可欠ですが、ホスティング会社でロードバランサを借りると、かなり大きなコストが掛かります。しかしAmazon EC2では、1時間当たり0.025ドルの従量課金で済みます。データ処理量に応じて別途料金は必要となるが、ロードバランサの機能をインスタンス並みの低価格で利用できる点は大きいです。

■メリット
・コストに対して、サーバのパフォーマンスが良い
・サーバ関連の費用削減
・テスト用のサーバなど、サーバを停止している間は課金対象にならない
・迅速なサーバ追加が可能
インスタンスを1台単位で柔軟に付加できる。リソースが必要なくなったら、インスタンスを減らすことも可能
Amazon EC2では必要と思ったその時にインスタンスを立ち上げられる

■デメリット
・Amazon EC2の利用における英語の壁
業務で活用するサーバを日本のホスティング会社からAmazon EC2に移すには、専用の技術文書を読みこなす必要があります。
それができない場合、日本でAmazon EC2の導入を支援している企業に相談をする必要があります。
・障害時のサポートについて
不可抗力レベルの障害であれば、起こっても問題視しないらしいです。
・メールサーバには向かない
Webサーバなどの個々のインスタンスに割り当てるIPアドレスは、一種の動的なアドレスであり、スパム扱いされる恐れがあります。

[記事]Amazon EC2の機能を詳しく見てみる
[記事]Amazonクラウドの威力
[記事]値段で分かる、クラウドの「おいしい」使い方
良くも悪くも『Amazon EC2』は”自由”だった – MOONGIFT運営でわかったこと
AmazonがMySQLをサービスとして提供
米アマゾンのクラウドサービスが2010年前半にアジア進出、日本語サービスも開始
Amazon EC2を、ほとんどGUIで使いこなす!今の所、日本一簡単かも知れない解説。

Google App Engineについて 10月 9, 2009

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

Google App Engine

グーグルのアプリケーションが稼働しているのと同じインフラが利用でき、拡張性の高いWebアプリケーションが公開可能になっています。
サービス開始当初、Pythonで作成したWebアプリケーションしかデプロイ(配置と公開)できませんでしたが、現在(2009年10月)Java言語もサポートされています。

Google App Engine概要ページより

・Google App Engine アプリケーションの作成は簡単
・時間も数分しかかかりません。
・App Engine は無料で使えます。
・プログラミング言語は、Java または Python を使用できます。

[記事]「Google App Engine」ってなんだ
GroovyとGoogle App Engineでアプリ開発
[Bot作成Tips]Google App Engineでbot・cronを動かす
他人のドメインのGoogleAppsが取得できてしまうんだが
Google App Engine for Java + BlazeDSでハマらない方法

クラウド・コンピューティング その2 10月 9, 2009

Posted by hyhy in 技術情報.
Tags:
comments closed

■クラウド関連記事
米Yahoo!、「Hadoop」実装に次ぐクラウド技術「Traffic Server」を公開
クラウドが活用できる場面とは?
クラウドよりも最適化された企業のデータセンターの方が低コスト、との調査結果
クラウドにはイニシャル激安以上の価値がある
クラウドの課題とリスク
MSの巨大データセンター–最新設備に見るクラウドへの取り組み
クラウド・アプリケーションの“隠れたコスト”
————————————————————————————————————————–
以前にまとめましたが、再度。

「クラウドコンピューティング」とは、インターネットなどのネットワーク/Web上に存在するさまざまなリソース(データベースや、HTTPサーバ、アプリケーションサーバなど)を、利用者がリソースの所在を意識せずに利用できる環境のことです。

設定や管理にコストが掛かかって面倒なインフラ周りを準備することなく、アプリケーションの作成のみに集中できるので、開発者/プログラマーにとても便利です。

クラウドコンピューティングは、以下の3種類に分類される場合が多く、また以下を総称してXaaSと呼ぶ場合もあります。

1)SaaS(Software as a Serviceの略、サース)
ソフトウェア(主にアプリケーションソフトウェア)をネットワーク経由のサービスとして提供・販売する形態です。
[例]
電子メール、グループウェア、CRMなど。
セールスフォース・ドットコムのSalesforce CRM。

2)PaaS(Platform as a Serviceの略、パースまたはパーズ)
インターネット経由のアプリケーション実行用のプラットフォームの提供します。仮想化されたアプリケーションサーバやデータベースなど。ユーザーが自分のアプリケーションを配置して運用できます。
インフラ、DBMS、ユーザーインターフェースなどのシステム開発手段となるツールや、開発したシステムを運用するための環境をインターネットを通じて「サービス」として提供し、月額使用料などの形で収入を得る事業モデルです。
[例]
GoogleのGoogle App Engine
セールスフォース・ドットコムのForce.comプラットフォーム

3)IaaSまたはHaaS(Infrastructure as a Serviceの略、Hardware as a Serviceの略)
インターネット経由のハードウェアやインフラの提供。仮想化サーバーや共有ディスクなど。ユーザーが自分でOSなどを含めてシステム導入・構築できます。
コンピュータシステムを構築および稼動させるための基盤(仮想マシンやネットワークなどのインフラ)そのものを、インターネット経由のサービスとして提供します。
PaaSの発展系とされています。
[例]
Amazon.comのAmazon EC2、Amazon S3

次回は、PaaSの「Google App Engine」についてまとめます。

クラウド・コンピューティング 8月 16, 2009

Posted by hyhy in 技術情報.
Tags:
comments closed

今さらながら気になり始めたので、まとめてみました。

■クラウド・コンピューティング
ネットワーク上に存在するサーバが提供するサービスを、それらのサーバ群を意識することなしに利用できるというコンピューティング形態を表す言葉です。ネットワークを図示するのに雲状の絵を使うことが多いことからきた表現です。雲の中にはハードウェアやソフトウェアの実体があるが、その中身は見えない(気にしなくてよい)というイメージです。

過去からある概念のグリッド、SaaS、オンデマンド・コンピューティング、ユーティリティ・コンピューティング、ユビキタス・コンピューティングなどはすべてクラウド・コンピューティングの範疇(はんちゅう)に含まれるといってよいでしょう。

データやソフトウェアの所在を意識することなく、いわゆるインターネットの向こう側、すなわち「クラウド(雲)」の中に移し、必要に応じて取り出して、使った分だけ料金を払うという形態。SaaSに似た概念だが、雲の向こう側は必ずしも1社ではなく、かつユーザーはその先をあまり意識しない点が新しい。

■クラウドコンピューティングサービスの条件
ハードウェアの利用率を改善するインフラ共有。(これにより、1台のマシンでより多くのアプリケーション、ユーザー、トランザクション処理に対応可能)

セルフサービス方式の迅速な再プロビジョニングと柔軟なワークロード配分を可能にする動的な再構成機能

きめ細かなキャパシティー/需要プランニングを実現する柔軟な拡張性

使用に応じて課金するサブスクリプションモデル。(加入契約あるいは使用量に基づいてプラットフォームコンポーネントを購入する、もしくはその料金を支払う)

■例として
Amazon:Amazon Web Services(AWS)
Google:Google App Engine(GAE)

値段で分かる、クラウドの「おいしい」使い方