UNIX/Linux目線のWindows Azure入門ガイド
「Windows Azure」はWindows Serverユーザー向けのクラウドサービスというイメージが強いが、実際にはUNIX/Linux向けアプリケーションも数多く利用でき、UNIXライクなサーバーとして利用することも可能だ。本記事では「UNIX/Linuxに親しんでいるがWindows Azureは初めて」というユーザーに向け、Windows Azureの概要や開発環境の構築、Windows AzureをFTPでアクセスできる一般的なレンタルサーバーのように利用する方法などを紹介する。
ここ数年「クラウド」という言葉がブームとなっており、さまざまな事業者がクラウドをキーワードにサービスを展開している。有名ものとしてはAmazonのAWSやGoogleのAppEngine、そしてMicrosoftのWindows Azureなどが挙げられるだろう。これらはクラウドとひとくくりにされているが、実際はそれぞれまったく異なるコンセプトのサービスである。
Windows AzureはOSにWindowsを使用し、開発にはVisual StudioやC#、.NETを使用するというのが特徴だ。そのためLinuxやUNIXに親しみのある技術者からすると縁の遠いものと見られがちである。しかし環境さえ構築してしまえば、Windows AzureをUNIXライクなサーバーとして稼働させることも可能である。
Windows Azureの内部ではWindows ServerベースのOSが稼働しており、Windows Serverで動作するソフトウェアであればその大半が利用できる。つまり、PHPやRuby、Python、Perlといった言語を使ったWebアプリケーションやMySQLといったWindowsに対応するオープンソースソフトウェアなどを利用できるのである(図1)。
SSHサーバーやFTPサーバーを稼働させれば外部からSSHやFTPでアクセスでき、またGitやSubversionといったバージョン管理システムを使ってファイルを管理することもできる。Windows Azureでは独特の「お約束」はあるものの、これさえ把握してしまえばWindows Azureでオープンソースソフトウェアを動作させることは難しくない。
そこで本特集では、Windows Azure上でオープンソースソフトウェアを利用するための環境構築方法やその際の注意点などを中心に、UNIX/Linuxに親しみのあるユーザーがWindows Azureを活用するためのノウハウを紹介していく。
これだけ覚えておけばひとまず大丈夫、Windows Azureの基本
Windows Azureを用いた環境構築例を紹介する前に、Windows Azureがどのようなものか、またどのようにユーザーのプログラムを実行しているのかについて、簡単に紹介しておこう(図2)。
Windows Azureとは?
Windows Azureは、端的に言ってしまえばMicrosoftが提供するサーバークラスタを従量課金で利用できるというサービスだ。ユーザーにはクラスタ上で稼働するWindows Serverベースの仮想サーバー環境が提供される。この仮想サーバー環境には一定のCPUおよびメモリ、ストレージといったリソースが割り当てられ、ユーザーはその中で自由にプログラムを動かしたり、ネットワークアクセスを利用できる。また、ネットワーク経由でアクセスできるSQLデータベース「SQL Azure」やストレージ「Windows Azureストレージ」も別途提供されており、ユーザーは必要に応じてこれらにデータを格納したり、データをそこから配信することができる。
Windows Azureの「ロール」
Windows Azureアプリケーションは1つ以上の「ロール」から構成される。聞き慣れない言葉だが、これはほかの仮想化技術における「仮想マシンテンプレート」などに相当するものだ。ロールには各種アプリケーションやデータ、設定ファイルなどが含まれており、利用者はWindows Azureにロールをアップロードし、それをベースにインスタンス(仮想マシン本体)を作成して処理を実行するる。
ロールには「Webロール」および「Workerロール」、「VMロール」の3種類が用意されている。WebロールはWebサーバーとしてIISがあらかじめ用意された環境で、Webアプリケーションの実行に向けたものだ。WorkerロールはWebサーバーが組み込まれていない環境で、UIを持たないバックグランド処理などを実行するのに向いている。また、VMロールはWindows Serverベースの完全な仮想マシンイメージを含むもので、カスタマイズしたWindows Serverを実行できるというものだ。
Windows Azureのストレージ
Windows Azureの各インスタンスには一定容量のローカルストレージが用意されているが、これは一時的な利用を想定しており、インスタンスの停止や再起動を行うと初期化されてしまう。そのため、永続的に保存したいデータはSQL AzureやWindows Azureストレージを利用して格納することになる。
SQL AzureはMicrosoft SQL ServerベースのSQLデータベースで、SQL Serverとほぼ同じように利用できる。また、Windows AzureストレージはKey-Valueストア型の「Table」、ファイルを格納する「Blob」、メッセージのやりとりに利用される「Queue」の3種類が用意されている。Blobをインスタンス側でマウントすることでローカルドライブのように利用できる「Azure Drive」という機能も用意されている。
Windows AzureでWebサイトを稼働させるまでの流れ
Windows Azureを用いたWebサイトを作成する場合、以下のような流れが一般的だ。
- ローカルPC上の開発ツールを用いてロールを作成する
- 作成したロールをコンパイルし、Windows Azureにデプロイするための専用パッケージ形式に変換する
- Windows Azureにパッケージをアップロードする
- アップロードしたロールを起動する
2.の作業にはWindows Azure Toolsというツールが必要となるのだが、Windows Azure Toolsは2012年3月現在Windows環境でしか動作しないため、Windows Azure向けのアプリケーション作成にはWindows環境がほぼ必須となる。ただし、3.および4.の作業についてはWebブラウザ経由でアクセスできるWindows Azureの管理ポータルから行えるので、すでに作成されているものをデプロイして利用するだけならWindows環境は不要である(ただし管理ポータルにはSilverlightが使われているため、Silverlightが利用できる環境は必要となる)。
Windows Azureの料金
インスタンスには複数の「サイズ」が用意されており、それぞれ利用できるCPUやメモリといったリソース量が異なる(表1)。課金はインスタンスを稼働させていた時間に応じて行われ、サイズの大きいインスタンスはより高い料金に設定されている。
インスタンスサイズ | CPU | メモリ | ローカルストレージ | 料金 |
---|---|---|---|---|
XS | 1GHz | 768MB | 20GB | 1.75円/時間 |
S | 1.6GHz | 1.75GB | 225GB | 10.49円/時間 |
M | 1.6GHz×2 | 3.5GB | 490GB | 20.98円/時間 |
L | 1.6GHz×4 | 7GB | 1000GB | 41.96円/時間 |
XL | 1.6GHz×8 | 14GB | 2040GB | 83.92円/時間 |
また、SQL AzureやWindows Azureストレージの利用に対しては、インスタンスの利用料金とは別に課金される。標準的なプランとなる「従量課金プラン」の基本的な料金は表2のとおりだ。
課金要素 | 料金 | |
---|---|---|
Windows Azureストレージ | 容量 | 10.93円/GB |
トランザクション | 0.88円/10,000トランザクション | |
SQL Azure | 0~100MB | 436.62円(定額) |
100MB~1GB | 873.23円(定額) | |
1GB~10GB | 873.23円(最初の1GB)+1GB増えるごとに349.30円 | |
10GB~50GB | 4,016.84円(最初の10GB)+1GB増えるごとに174.65円 | |
50GB~150GB | 11,002.65円(最初の50GB)+1GB増えるごとに87.22 | |
データ転送 | ゾーン1 | 送信1GBあたり10.49円 |
ゾーン2 | 送信1GBあたり16.61円 |
この表を見ると少々分かりにくいかもしれないが、たとえばXSインスタンスを利用し、1GBのWindows Azureストレージを利用するといった場合、月間にかかる費用はコンピューティング料金が1.75×24×31=1302円、ストレージが10.93円で合計1312.93円程度となる。クラウドは安くはないなどと言われるが、この価格であれば低価格なVPSサービスと比較しても大差がないレベルであろう。
なお、料金については割り引きプランなども用意されているほか、改定などが行われている場合もあるため、詳しくはWindows AzureのWebページを参照してほしい。