誰もが大規模インフラを試せる時代がやってきた
第1回では,クラウドコンピューティング環境のひとつとして,プログラマから見たAmazon EC2の魅力と,そのような環境を使いこなすためのオープンソースソフトウェアWakameについて概要を紹介いたします。
私たち開発者はWebシステムのスケールアウトについてのベストプラクティスを世界中から得ることができます。
利用するプロダクトを各々スケールアウトさせるノウハウがやっと一般的になってきましたが,運用まできちんとまとめられたものはまだこれからと言う状況です。
それもそのはず,スケールアウトさせられるほどインフラに投資された環境で,実際に運用をしてみた技術者は少ないのです。
昨今,運用業務が効率化できると言うこともあって,インフラの仮想化技術に注目が集まるようになりました。
仮想化技術は究極のポータビリティを実現し,物理的に結ばれたハードウェアと,アプリケーションが求める論理的なサーバ構成とを切り離しました。
そして,論理的なサーバ構成を自由に操作するWeb APIがまとめられた革命的なホスティングサービスAmazon EC2が一般人向けに登場したのです。
時間単位での課金により,草の根開発者であっても気軽に短い時間で大規模なインフラを構築してみることができるようになりました。
データセンターがプログラマブルになった!
Amazonの講演の中でしばしば「Amazon EC2はプログラマブルなデータセンターである」と表現されることがあります。語弊を恐れず簡単に表現しなおすと,以下のように言えるでしょう。
「データセンターの業務の一部が機械化されており,その機械化された業務を顧客の持つプログラムからリモートで呼び出すことができるようになったデータセンターである」
では,プログラマブルであるために,Amazon EC2には何が備わっているのでしょうか。
Amazon EC2は,データセンター内のマシンリソースを取得、破棄すると言った,調達要請をする際に発生する、様々なリクエストをプログラムからリモートアクセスできる仕組みを提供しています。
この仕組みは、Web APIという形で定義されています。
Web APIにリモートアクセスする代表的なアプリケーションとして,ElasticFoxというツールがあります。
ElasitcFoxは,Amazon EC2上のマシンリソースを取得し,起動させたり,終了させたり,メンテナンスに必要な一連の操作を可能にするFirefoxのアドオンです。
このプログラムは,Amazon EC2のWeb APIを通じてマシンリソースの調達要請にまつわる操作を全て行います。操作の様子は,同じくFirefoxのアドオンとして提供されているLive HTTP Headersなどで,Firefoxの通信をモニタしているとよく分かります。
つまり、プログラムからこの通信と全く同じメッセージをAmazon EC2に送信できさえすれば良いのです。
仕様はドキュメントとしてAmazonの開発者向けサイトに置いてありますので、一読してみると何が指示できるか調べることができます。
Amazon EC2はプログラムの一部になれる
さて,先に述べたElasticFox相当のプログラムが,自らアルゴリズムを持って人間の指示を待たずにAmazon EC2へ直接指示を出せるとしたらどうでしょうか。人間ではなくても,Amazon EC2上で新しいサーバを起動したり,終了させたりすることができるようになるはずです。
このように,プログラムの一部としてAmazon EC2を利用できるのですから,「Amazon EC2はプログラマブルなデータセンターである」と表現されている点について,ご理解いただけたのではないでしょうか。
Wakameとは?
Wakameは「複数サーバをメンテナンスする作業を機械化するためのオープンソースソフトウェア」です。
応用させると,Amazon EC2のWeb APIを使ってコンピューティングリソースを積極的に管理したり,各サーバに必要な設定変更などの手続きを行うことができます。これによって,「アプリケーションの動作を正しく維持したまま,自動的にスケールアウトする」といったことを実現します。
たとえば,Webサーバを1台追加しようとすると,実際には以下のような順序を踏む必要があります。
大きく4ステップの順序に大別できます。
- 初期状態
- Amazon EC2などのクラウドから,新たにサーバを調達してくる
- 調達されたサーバの上で,Webサーバを起動する
- 起動されたWebサーバを利用するように,前後に関連する他のサーバやアプリケーションの設定を変更する
これまでは,(2)でサーバを調達するのに,通常のホスティングサービスでは数日要しておりました。調達できても,(3)と(4)のようなサーバのセットアップ作業をするのに,技術者が1日仕事で取り組んできたのです。何日もかかる作業です。これからは,(2)の部分をAmazon EC2が解決します。
WakameからAmazonのWeb APIを使えば数分でサーバの調達が完了します。そしてWakameはその後も,スクリプト化されたセットアップ作業をリモートで順序よく呼び出すという方法で(3)と(4)の作業を自動的に完了させます。これら一連の作業は状況によりますが,大体10分前後もあれば完了します。
プログラマブルなデータセンターは,Web APIでサーバを調達させるという革新的な機能を提供しました。それらの機能の利用を含め,その他アプリケーションの設定など順序よく実行していくのが,Wakameの役割です。

