1.2.3 API による操作の自動化
このように、IaaS タイプのクラウドでは、抽象化されたコンポーネントを組み合わせることで、標準化された手順でシステムを構築することが可能になります。つまり、一度確立した手順をもとに、同様のシステムを何度でも繰り返し構築できるようになります。
また、当然ながら、物理的な作業は行なう必要がありません。自席のPC から操作するだけで、ネットワーク、サーバー、ストレージといったシステムインフラのすべての環境を自分一人で整えることが可能です。従来の物理機器を用いた環境と比較すると、驚くほどのスピード感でシステム構築が進められます。
しかしながら、クラウドのメリットはこれにとどまりません。同じ手順を何度も繰り返す場合、手順そのものを自動化したくなるものです。これまで、OS をインストールした後のサーバー内部の環境設定については、シェルスクリプトなどで簡易的に自動化することができました。Puppet や Chef などの構成管理ツールを利用して、より複雑な構成に対応することも可能です。
その一方で、サーバーの設置やネットワーク接続など、物理作業を伴う手順を自動化することは、ほぼ不可能でした。クラウドでは、このような作業も自動化することが可能になるのです。
ここでポイントになるのが、API による操作です。そこでまずは、クラウドでシステム構築を行なう際の操作方法を整理しておきましょう。大きくは、表 1.1 のように分類できます。
Web コンソールを用いる場合は、GUI のメニューから「仮想マシンを起動する」などの操作を選択します(図 1.13)。その後、仮想マシンの構成情報を入力するウィザード画面が表示されるといった流れになります。
必要な情報の入力を終えて[完了]ボタンを押すと、Web コンソールを表示するプログラムから、クラウドの管理サーバーに対して、仮想マシンの起動を指示する命令が流れます。このとき、命令を伝えるために利用されるのがクラウドの「API」です(図 1.14)。
API(Application Program Interface)とは、プログラム同士がお互いに命令をやりとりするために、事前に取り決められたルールを表わします。
先ほどの場合は、クラウド管理サーバーで管理機能を提供するプログラムは、事前に決められたルールに従って、Web コンソールからの命令を受け取るというわけです。クラウドで実施できる操作は、すべてクラウドの管理サーバー側に対応する API が用意されています。
たとえば、専用のクライアントツールを導入した PC では、コマンドを用いてクラウドを操作することも可能です。仮想マシンを起動する例で考えると、Web コンソールであれば、ウィザードの画面から仮想マシンの構成情報を 1 つずつ入力する必要がありました。
一方、コマンドを用いる場合は、これらの情報をコマンドラインオプションとして指定することで、1 つのコマンドですぐに仮想マシンを起動することができます。この場合は、クライアントツールのプログラムから、クラウドの管理サーバーの APIに対して直接に命令が送信されます(図 1.15)。
クライアントツールと同様に、クラウドに対して API 命令を送信するプログラムを作成すれば、自作のプログラムからクラウドを操作することもできます。それぞれのクラウドは、API を操作するためのプログラムライブラリを提供しているため、このようなライブラリを使用すれば、それほど高度なプログラミング技術は必要ありません。
Ruby や Python などのプログラム言語を用いれば、Web サーバーの仮想マシンを負荷分散構成で複数用意しておき、Web サーバーの負荷に応じて仮想マシンを増減する「オートスケール」など、より高度な自動化処理も実現可能となります(図1.16)。
ただし、最近では、このような API 操作を自動化するツールも充実してきたので、必ずしも自分でプログラムを書く必要はなくなりました。オートスケールのように、よく利用するパターンの自動化は、クラウド側でその機能が用意されていることもあります。
しかしながら、どのような方法を用いるにしても、その背後では、必ず APIによる操作が行なわれています。クラウドの API を理解することは、クラウドを操作するための「最小単位」、つまり、クラウドの基本機能を理解することに他なりません。これは、各種の自動化ツールを使いこなすための大切な基礎となります。