雲を駆け抜けろ
第5回 なぜ,エンジニアがクラウドを利用する必要があるのか?
なぜクラウドが普及したのか?
これまでの連載でクラウドの分類(IaaS,PaaS,SaaS)を見てきました。一口にクラウドといってもいくつかの種類があり,従来の物理サーバの環境と比べると色々な違いがある事がわかったと思います。それでは,クラウドが普及することによって,エンジニアの皆さんにどのような影響が出てくるのでしょうか?今回は,クラウドがどうして普及したのかを振り返りながら,クラウドが普及することによって,エンジニアの皆さんにどのような影響が出てくるのかを解説していきたいと思います。
クラウドの普及がエンジニアに与える影響
以前の連載でもクラウド(IaaS,PaaS)のメリットを解説してきましたが,再度ここでおさらいをしましょう。
IaaSのメリットとしては「サーバ数の増やすことが容易である(=スケールアウト)」ことや「CPUやメモリなどのサーバを性能を上げることが容易である(=スケールアップ)」ことがあったと思います。また,IaaSの大部分では初期費用がなく,時間課金や日割り課金など短期間でも利用できる事も特徴の1つと言えるでしょう。
では「スケールアウト」や「スケールアップ」「初期費用がない」「時間課金や日割り課金」などは,具体的にどのようなメリットとなるのでしょうか? 個人的には一番のメリットは,自分達が契約するサーバの限界をあまり考えなくても良くなるということが,一番のメリットとなると思います。
これまでの物理サーバの場合は,簡単にサーバの数を増やしたり,サーバの性能を上げることは簡単にはできません。サーバの数を増やす場合でも,サーバを購入したり設置するのに時間がかかりますし,性能を上げる場合でもメモリを購入したり,それを設置する時間が必要です。また,機材を購入するためのコストも必要ですし,サービスが縮小した場合,それらの機材は必要なくなってしまいます。
これらのことがあるため,物理サーバの場合はサーバを購入する前に,実際に構築するシステムがどのぐらい利用されるかを検討をする必要があります。サーバを使って構築するシステムの利用者が少なかった場合は購入したハードが無駄になってしまいますし,逆に利用者が多かった場合はすぐにサーバの追加ができず,提供するシステムのサービス品質に問題が出てくることもあるでしょう。
しかし,IaaSの場合は,サーバ数の増加やサーバの性能を上げることが簡単にできます。そのため,最初は最小限のサーバ数のみでシステムを構築し,システムの利用者が増え,負荷が高まってきたらサーバ数を増加させたり,サーバの性能をあげることも可能です。どれだけシステムが利用されるかわからない場合でも,とりあえず最小限のサーバ構成でシステムを組んで,システムの利用が増えたらサーバ数を増やしていけばサーバ費用に無駄は発生しないでしょう。
またPaaSの場合は,さらにサーバやネットワークなどが抽象化されているため,IaaS以上にサーバ数や性能を考えなくてもすみますし,PaaS事業者が用意した環境にあわせれば,自分でどのような開発環境を用意するか考えなくとも,問題はありません。
クラウド普及後の考え方
このように「物理サーバ」からクラウド(=IaaS,PaaS)にすると,サーバの数や性能については,とりあえず最小限のサーバ構成を用意しておいて,後からサーバ性能や数を変更するといった事も可能です。この事は,単に費用の問題だけでなく,エンジニアの日常の作業自体も従来のやり方から変わっていくこともあるでしょう。
たとえば,作成しているシステムに対して,どのぐらいの性能のサーバをどのぐらいの数用意するかわからない場合があるとします。IaaSの場合は,サーバの初期費用が必要なく,利用した分だけサーバ費用が発生するので,様々なスペックのサーバを用意して,それぞれでベンチマークを取ることも可能です。そのベンチマークからサーバの性能や台数を調べることもできるでしょう。
また,これまでは物理サーバが故障した場合は,直して使ったり修理をする必要がありましたが,IaaSの場合サーバがおかしくなったら「サーバをつぶして,立ち上げ直す」といったことも可能です。従来の物理サーバでは,複数のサーバを一時的に用意して試行錯誤することは難しかったのですが,IaaSでは簡単にできます。
このように,簡単にサーバが起動でき,サーバを利用した分だけ料金を払えば良いので,たとえばWeb上でさまざまなサービスを展開している人達の場合,サービスの人気が出てきた場合はサーバの数を増やし,人気がなくなってきたらサーバの数を減らすことができます。仮にサービスを閉じることになっても,そのサーバの利用を止めれば良いだけですので,サーバの在庫を持つ必要はありません。
短期間での利用が可能なので,一時的に計算量が必要な場合でもクラウドを利用することも可能です。たとえば,ビルドをするために高速マシンを1日だけ利用するといったことなどはクラウドでないと難しいケースでしょう。
また,利用できるのはサーバだけでなく,ストレージやロードバランサ,ファイアウォールといったものも利用できます。今までは,これらのハードを購入したり利用するのもサーバと同様に実際に購入する必要がありましたが,これらもサーバと同様に初期費用なしで短期間の利用が可能です。今まで,利用できなかった機器もクラウドであれば利用できますし,検証やテストも可能です。
簡単になる分,必要な知識も増えていく
このようにクラウドを利用するとサーバなどを用意することが簡単になり,サーバの増減も簡単になりました。しかし「簡単」になった分だけ,これからエンジニアの皆さんが必要になっていく知識も増えていくと思います。
IT業界では今まで「コードを書くのがプログラマ」「サーバやネットワーク機材の管理をするのがインフラエンジニア」といったように職種が分かれていたと思います。これは従来であれば,サーバやネットワーク機器の入手に手間がかかり,すぐに利用できなかったことや,機材の入手が難しく学習の機会が取れなかった事から,このように職種が分かれていたのだと思います。
しかし,クラウドの登場によって,サーバやネットワーク機器の利用が簡単になりました。会社などの組織や団体はもちろんのこと,個人でも短期間であれば,複数台のサーバを利用できるようになっています。
このような環境があたりまえになっていけば,1台のサーバだけを利用するのではなく,複数のサーバを利用してシステムを作ることも増えていくと思います。このような環境が広がっていけば,今まではプログラミング,ネットワークエンジニアと職種によって分かれていた物が,職種に関係なくプログラミングとネットワークの知識の両方ともに必要になっていくでしょう。
なぜかと言えば,複数台のサーバを利用することが前提になれば,サーバ,ネットワークといった単体のものでなく,利用しているシステム全体での性能を見る必要が出てくるためです。
クラウドによって,サーバの用意は簡単になり利用した分だけの料金をはらうことになったとはいえ,トータルのコストを考えると,従来の物理サーバ環境とクラウド全体のコストを比べてみても劇的に下がったということでもありませんし,簡単にサーバを増やせるクラウドの環境であればこそ,無駄なサーバを借りてしまうこともあるかもしれません。
しかし,プログラミングができて,ネットワークやサーバの知識があれば,全体的にシステムを見直し,最適なシステムを設計できるようになります。サーバやネットワーク機器の調達コストが下がり,誰でも簡単に「サーバを用意できるようになった」クラウドの環境になってしまうと,おそらく単一の知識だけでなく全体的な知識は確実に必要になってくるでしょう。
さて,今までクラウドの色々なメリットを見てきましたが,クラウドといっても万能なソリューションではなく,いくつかデメリットもあります。次回はクラウドのデメリットを見ていきたいと思います。
雲を駆け抜けろ
- 第6回 クラウドのデメリットとは
- 第5回 なぜ,エンジニアがクラウドを利用する必要があるのか?
- 第4回 プラットフォームを作るPaaSを理解する――PaaSとIaaS,SaaSの違い
- 第3回 IaaSを実現する「仮想化」と今後のIaaSの方向性について
- 第2回 従来のホスティングとIaaSを比較する
- 第1回 クラウドを再入門,クラウドとは何か?

