クラウド活用法

ロスにて


昨日、とある勉強会で利用者企業の方々のお話を聞くことができて、色々と気付きがあった。

クラウドの活用法で面白いと思ったのが、冗長化とテスト環境。
企業システムの信頼性を高めるためには、システムの二重化といった冗長性が重要になる。しかし、冗長化の問題点は、システムの維持コストが膨大になるということ。普段寝ているだけのシステムをハードウェア的にもソフトウェア的にも維持管理するのは無駄が多い。
大昔、ボクがやっていたシステムのクラスタ案件などで、待機側のCPUが勿体無いからバックグラウンドでなにか仕事ができないか、というような話はよく聞いた。

クラウドの場合、大変素晴らしいことに運用系のシステムと全く同じ構成の待機系のシステムを構築して、ほとんど無料で寝かせておくことができる。
運用系システムがアプリケーションのバグでダウンした場合でもデータセンターごとダウンした場合でさえも、眠らせておいた待機系にそのまま切り替えるのは容易である。立ち上がり時の急激な負荷も、クラウド的なスケールアウトで難なくさばくことができるだろう。
待機的のさらに待機系といった二重三重の備えも簡単に仕込んでおくことができる。

ちょっと思いついたのは、保守作業中の限定運用。
通常は保守作業中にはシステムを停止して「保守作業中です」というページの表示に切り替えることになるけれど、クラウド・アプリケーションでは、待機系に制御を切り替え、read-onlyで運用することは可能だろう。頑張れば、エントリの投入まで予約という形で受け付けることができるかもしれない。
こういった運用を可能にすることで、利用者の体感的な可用性を向上させることができる。

大規模な企業システムでは、テスト環境、デバッグ環境の構築も頭の痛い問題である。
ボクの経験でも、お客さんのところで数十台構成で構築しているシステムの障害を、手元の数台のマシンでは再現させることができず難儀したことが多々ある。
また、テスト環境の構築にはとても大きな手間がかかるけれど、数台のマシンで回していくためには、構築した環境を泣く泣く潰していく、ということになってしまう。再度同じテスト環境に戻すのには相応の工数がかかるので、このコストはバカにならない。
大規模システムでは、1つのテスト環境に複数のテスターが相乗りするために、テスト環境の状態の管理、データベースへのデータの移入、競合の調整、負荷テストや連続運転テストのスケジューリングの問題も発生する。
理想は1テスター、1環境だけれど、マシンのコストからは当然そのような贅沢はありえない。

こういった問題も、クラウドでは自然に解消する。
一度構築したテスト環境は、データベースの状態も含めて次に使う時まで、気楽に寝かせておくことができるし、テスト環境の複製も簡単にできる。大規模環境であってもテスターごと、開発者ごとにテスト環境、デバッグ環境を用意することができるのは、開発現場としては革命的なインパクトがあるはず。
改めて考えてみると、クラウドとは大規模システムの開発者にとっては夢のような環境である。

クラウドの利点として運用コストの(劇的な)低減ということがよく言われるけれど、開発や運用に関しての、このような利便性向上のメリットについても強調しておきたい。