これからのサーバ/インフラ構築⁠管理―クラウドの普及とインフラのコード化―

これまでのサーバ運用形態

これまで、サーバやインフラを構築・運用するといった場合、自分のところで、サーバなどの機器を用意し、サーバにOSやアプリケーションをインストールし、設定のカスタマイズを行って……という流れが普通のことでした。このような場合、自分のところで機器の管理を行う必要があるため、その維持や管理に相応の負担がかかりました。

2000年代後半からクラウドコンピューティング(以下クラウド)と呼ばれるサービスが提供されるようになり、自前で機器を用意しなくても、インターネットを通して、サービスとしてインフラを利用することが可能になりました。

クラウドとは

クラウドという用語は、2006年のGoogleのエリック・シュミット氏の発言がきっかけとなり、一般的に使われるようになりました。クラウドの元々の意味は「雲」です。なぜ「雲」と言葉が使われたのかにはいろいろありますが、昔からネットワークを表す際に雲のアイコンが使われていたからという説が有力です。

クラウドでは、サーバやソフトウェアなどの機能をサービスとしてネットワーク越しに提供します。これにより自分でシステムを用意しなくてもアプリケーションを開発すれば、インターネット上で公開することが可能になりました。

クラウドサービスの種類

クラウドサービスは、大きく次の3つに分類できます。

  • SaaS(Software as a Service)
  • PaaS(Platform as a Service)
  • IaaS(Infrastructure as a Service)

SaaSは、ソフトウェア自体を提供するサービスです。PCにソフトウェアをインストールしなくてもインターネット越しにソフトウェアを利用できます。メールソフトウェアのGmailがその代表例です。

PaaSは、ユーザのアプリケーションを開発・運用する環境を提供するサービスです。次に説明するIaaSとの主な違いは、ミドルウェアやデータベースなども一緒に提供されていることです。HerokuやGoogle App Engineがこの形態の代表例です。

IaaSは、ハードウェアやネットワークなど、インフラ自体を提供するサービスです。Amazon Web Services(AWS)やGoogle Compute Engineがこの形態の代表例です。

必要な分だけ利用できるクラウド

これらのクラウドサービスは、サービスとして提供され、システムを利用する側は、必要なときに、必要なだけリソースを利用できます。自前でサーバやインフラを用意した場合は、実際よりもリソースが足りなくなったり、逆に余計に用意してしまったりということがあり得ますが、必要な分だけ利用できるクラウドによって、効率的なインフラ構築・管理が可能になります。

インフラのコード化とは

これまで紹介したクラウドは、仮想化技術を利用することにより、ソフトウェア的にインフラ環境を実現しています。このように時代の流れは、仮想環境上で手軽にサーバを構築し、必要なときに構築、必要がなくなればすぐに消すということが当たり前となりました。

インフラをソフトウェアとして扱うようになったことにより、ソフトウェアと同様に、インフラをコード、つまりプログラミングによって制御すればよいのではという考え方がここ数年で登場しました。これを「Infrastructure as Code」⁠以下、インフラのコード化)と呼びます。

インフラのコード化は、次のような状況で実現可能となっています。

  • 構築
  • 設定・管理
  • テスト

インフラのコード化を実現するツール

Vagrantは、コマンドラインで簡単に新しい仮想サーバを構築できるツールです。また、コンテナ型仮想化を利用したDockerなども登場しています。

OSやミドルウェアの設定をコード化するには、ChefやPuppetなどの構成管理自動化ツールを利用できます。

また、サーバ構成に変更を加えたあと、正しく動作しているかテストを行うツールとしてServerspecというツールがあります。


このようにツールの進化によって、今ではインフラを手軽に構築ができるようになりました。これらのツールはまだ発展途上ですが、この流れは急速に加速し、実運用にも十分使えるようになるはずです。みなさんも自分のPC上でこれらのツールを試してみてはいかがでしょうか。