一昔前までWebシステムのインフラといえば、ハードウェアの選定・調達、そしてOSやミドルウェアの構築までを自前で行うのは当たり前のことでした。初期費用の高さや構築・運用の煩雑さはもちろん、あとで変更することも大変で、システムの拡大スピードを開発の最初期から慎重に見極めておかなければならないなどの難しさもありました。
この状況が変わったのは、2010年代に入ったころのことです。インターネットを通して、サービスとしてインフラを利用する「クラウドコンピューティング」が登場しました。
クラウドの分類
この「クラウド」のサービスには、次のようにさまざまな形態があります。
- IaaS(Infrastructure as a Service)
- PaaS(Platform as a Service)
- SaaS(Software as a Service)
IaaSは、ハードウェアやネットワークなどのインフラそのものを提供するものです。AWS(Amazon Web Services)におけるAmazon EC2などが代表的なサービスとして挙げられるでしょう。すでにOSレベルまでセットアップされたサーバが利用できるため、それをどうつなぎ、どんなミドルウェアを載せるのかを考えるだけで済みます。
PaaSになるともっと簡単です。ミドルウェアまで含めて提供されるため、典型的なシステムであればたいへん気軽にシステムを構築できるでしょう。こちらの代表的なサービスとしてはHerokuが挙げられます。また、AWSにおいてストレージを担うAmazon S3やデータベースを担うAmazon RDSなどのサービスもPaaSの一種と言えます。
SaaSは、ソフトウェア自体を提供するサービスです。エンジニアにとっては、サーバ監視のためのNew Relicなどが挙げられるでしょう。また、GCP(Google Cloud Platform)のサービスの一つでビッグデータ解析を行うためのGoogle BigQueryもSaaSに分類されます。
活用のポイント1:特徴を知る
このように多くのサービスがある中で、いったい何を選んでどう活用していけばよいのでしょうか。覚えておきたいのは、「特定のサービスだけですべての状況に対応できる」というわけではないことです。
SaaSはもちろんのこと、PaaSに分類されるAmazon S3やAmazon RDSも特定の用途に特化したサービスです。想定される技術、要件と相性が良いものを選ぶことで、構築・運用の手間を省くことができるでしょう。
クラウドにはそれぞれに長所・短所があるため、各サービスの特徴をしっかり知って組み合わせるのが重要であるというわけです。
活用のポイント2:インフラをコード化する
クラウドによるインフラはサービスとして提供されるため、必要なときに、必要なだけリソースを利用できます。おかげで効率的なインフラ構築・運用が可能となるわけですが、同時にこれを活かすための、管理のしくみも重要になってきます。
そこで出てくるのが、インフラを「コード」、つまりプログラミングによって制御するという考え方です。これを「インフラのコード化」と呼び、AWSにはじめから備わっているCloudFormation/OpsWorksといったしくみや、仮想化技術であるDockerなどが代表的な技術と言えるでしょう。
インフラをコード化する技術を身に付けることは、クラウドを最大限に活用するために必須であると言っても過言ではありません。
『クラウド開発徹底攻略』でポイントを押さえる!
クラウドの分野は発展が著しく、まとまった書籍などで学んでもすぐに情報が古くなってしまいがちです。かといって、Webの情報だけではサービスの比較をしたり、実践的なノウハウを得ることはまだまだ難しい状況です。
『クラウド開発徹底攻略』は『WEB+DB PRESS』に掲載されたクラウド関連記事を再編集してまとめられているため、先述した「各サービスの特徴」や「インフラをコード化するための技術」についてこれ1冊で学ぶことができます。いまやインフラ構築・運用において当たり前の選択肢となったクラウド技術を身に付けるには、うってつけの1冊です!