クラウドを採用することで得られるメリット
まず初めに、西谷氏はクラウドのメリットとして「改善」と「改革」の2点を挙げました。「改善」とは、今までできていたことがより早く、簡単に、安く実現出来るようになることを指します。データベースの管理等は従来でも出来ていましたが、クラウドのマネージドサービスを用いることで管理そのもののコストや手間が軽減され、自動化も容易になりました。「革新」とは、今まで出来なかったことが出来るようになることを指します。
クラウド全般に関する上記の概要紹介に続ける形で、西谷氏は「クラウドコンピューティングはインフラの文脈で語られることが多いですが、果たしてそれだけでしょうか? プログラマにとっても関連は深く、恩恵を得られる局面も多いのです」と当セッションの本題に切り込んで行きます。
プログラマにとって、クラウドを活用することで何が嬉しいのでしょうか? この点について、西谷氏は2つのポイントに絞ってメリットを解説しました。
1つは「リソース制約からの解放」。例えば、オンプレミス環境であればサーバを用意するとなると調達から構築まで実機を扱う必要があり、そこに引きずられる形で様々な制約がついて回りますが、クラウドの場合であればリソースを「必要な時に必要な分だけ、利用することが可能」であり、しかもそれらは「短時間で調達が可能」です。また、利用料金については使った分だけの「従量課金」であることも大きく異なる点でしょう。これらの特性を活かすことで、これまで出来なかったことがクラウド環境上で実現可能になるのです。
2つめは「プログラマブルであること」。クラウドの場合だと、APIで諸要素をコントロールすることが当たり前であり、AWSの場合ほぼ全てのサービスにAPIが提供されています。このため、ネットワーク環境からプラットフォーム、各種要素で構成されるインフラ環境を、プログラミングするかの如く構築し、制御することが出来るのです。プログラマブルであることで、インフラ担当にお願いしていたような作業(テスト環境の準備等)もプログラマ自身の手で行えるようになります。
クラウドならではのメリットを活かす構成
プログラマブルな点を活かしたクラウドならではのメリットとして思い浮かぶのは「ワンクリックで新しい環境を用意/破棄出来る」というところでしょう。オンプレ環境の場合は環境を自社内で持つ必要があり、必要に応じて調達を行いますが、この際の手順は複雑かつ遅くなりがちです。一方クラウドにおいては、ワンクリックで新しいインフラを用意することが可能です。一気に1000サーバを追加、または削除するという作業についても設定次第でもちろん可能です。
クラウド上での継続的インテグレーションの一環として、スローテストを避けるためにサーバを並列起動・実行し、必要無くなった時点でそれらサーバを止める、というクラウドならではのアプローチも可能ですし、「ブルーグリーンデプロイ」(本番稼働環境と次期公開環境を並行で用意しておき、環境間の切り替えをルータやロードバランサーの切り替えによって本番環境のアップデートを行う)と呼ばれる手法もクラウドの特性を活かしたものと言えるでしょう。
AWSにおいて最も基本的な構成とされている下記構成(2つのAZに分けてサブネットを作成、ELB配下にEC2を2台配置、RDSもMulti-AZで構成)も、実は様々な局面で柔軟な対応が行える構成となっています。下記の点にも言及しつつ、「この構成は本当にオススメです!」を西谷氏は解説を行いました。
- トラフィックが増えてWebサーバのEC2が重くなる:AMIでEC2をコピー構築しておき、AutoScalingに組み込むことで自動的に拡大/縮小が可能
- データベースが重くなる:スペックの強化、ストレージ容量の拡大も容易
- データベースにアクシデント発生:データセンター間での冗長構成を取っておくことでスナップショット・ログからデータを復元可能