Pages

2014年8月6日水曜日

「クラウドは試すことができる」の意味
~失敗から学び、次に生かす~

自宅のPC不調のため悪戦苦闘中の熊谷です。

どうも新しいプリンタの接続時にドライバの更新してみたところ、適合しないことでデバイスの認識ができなくなってしまった模様。どこの設定の問題か勘所がつかめず、久しぶりに失敗したな、という感じです。

今日はこの「失敗」にまつわるクラウドの話です。

クラウドを「壊した」ことありますか?
クラウドの特徴の一つとして「試すことができる」という要素があります。
クラウドは仮想化の技術の上に立ったサービスです。マシンを複製する場合は同等の設定をした待機系機を一から設定して用意するのではなく「テンプレート」を作成して全く同じマシンのコピーを作れますし、バックアップもコピーとデータ転送ではなくマシンイメージ全体を「スナップショット」で短時間に複製します。

物理機器ならばハードの個数や容量に制限されるところを、仮想環境では軽々と乗り越えることができる、この「簡易さ」が、「ちょっとこれぐらいの負荷が掛かるか試してみたい」「この設定をしてもうまくいくか確認してみたい」という「お試し」を可能にします。

ゆえに、クラウドは実機を複製して速やかな動作検証する、もしくは新たな機能の導入検証をするという保守と投資の攻守双方の準備期間を大幅に軽減することができます。いわば「仮に壊れてもすぐ戻せる」という環境がクラウドには備わっていると言えます。

パブリッククラウドのリーディングカンパニーであるアマゾンウェブサービス(※以下、AWS)では、このクラウドの特徴に遊びの要素を取り入れ、「Game Day」というイベントを行っています。米国では既に各所で行われていたものですが、昨年ごろから日本でも腕のある参加者を募って開催するようになりました。

Game Day とは?】
アメリカ大統領選挙において、オバマ候補陣営はAWSを利用して先進的・大規模かつ、極めて堅牢な選挙運動システムを構築し大成功を収めました。このシステムは巨大なハリケーンにも、選挙当日の爆発的なトラフィック増加にも軽々対応し、オバマ候補の選挙運動を支え続けたのです。

この堅牢なシステムを構築するにあたって、「Game Day」という手法が用いられ大成功しました。ある一日「Game Day」、チームが敵味方に分かれ、一方は知恵を絞ってシステムを破壊し、もう一方は全力でそれを修復するというものです。

想像するだけで楽しそうですね。システム技術者なら、一度は、攻撃側に回りたいと皆さん思うでしょう。楽しいだけではなく、全員が全力でシステムの脆弱性を発見し、その脆弱性に対して現実的で実績のある修復策が構築されるのですから、信頼性向上に与える効果は絶大なものがあります。脆弱性に目をつぶり、納期に追われて仕事をするのではなく、脆弱性に正面から効率的・効果的に立ち向かう手法を経験しませんか?
AWS Game Day Japan 2014 春 イベント概要より引用)

上流工程と下流工程の関係
話は変わりますが、システム開発に関わったことのある方にとって「要件定義」は、重要な作業フェーズという認識があるかと思います。というのも、今も主流のウォーターフォール型のシステム開発は「一度決定したら戻れない」、つまり想定するべき要件を十分考慮せずにハードウェア性能を見積もると、後からリソースが足らないことが分かっても、そのまま後ろの工程を走らなければならない。

この矛盾を抱えたままカットオーバーすると、その後ハードの保守5年間は、十分な処理能力が出ないまま動かし続けなければならず、利用者に使われなくなるとそのまま塩漬けの「動かないコンピュータ」となってしまう。こういう経験が過去のプロジェクトに多くみられることから、システム開発は慎重に、十分事前の検討に時間をかけて、という認識が作られてきました。要件定義を「上流工程」という言葉で表現されるあたりにその重要度の序列が伺えます。

対してクラウドは1マシン毎のスペックの増減や、分散処理のマシン台数の追加削減を柔軟に行いながら最適な構成を探すことができます。しかも、検証段階ではなく本番稼動中のマシンに対してもダイナミックに構成を変更することもできます。

以前の「下流工程」は、要件定義で指定したハードウェアの条件に縛られた中での設計と運用を行っていましたが、クラウドの世界では当初想定していないことが起こっても、あとから拡張も縮退も可能になりました、したがって要件定義の地点での見積もり失敗が以前ほど大きな問題ではなくなっています。

我々は失敗から経験を積んで学んでいる
「失敗する」というのはやはり怖いものだと思います。前述のGame Daysのように「壊して遊ぶ」というイベントは、「絶対に止められない」とシステムの安定運用と保守に努めた人からすれば、尚更違和感を覚える人も多いと思います。

実際そのような業界に20年近く関わってきた私自身を振り返ってみると、自分の子供や会社の後輩に「こういうことはしてはいけない」と指導することが多々あります。それは自分の経験を元にした「失敗しないようにする」アドバイスのつもりですが、逆に言うと「失敗をする機会を奪っている」のかもしれません。

子供の頃に時計やおもちゃを分解して戻せなくなった時、「なんで戻すのはこんなに難しいの?」と感じたことや、ガラスを初めて割った時「ガラスはもろく割れる、しかもパリンと嫌な音がする」と分かったことなど、失敗には他人の言葉からでは伝わらない経験が伴います。思えば社会人となった今でも、やはり失敗から経験して学んでいるところは多いと思います。

「システムを外部脅威から守る」ためにセキュリティ対策を検討するとき、自分自身でそのマシンをどのように攻撃が可能か想像したことはありますか?逆に攻撃されて復旧しなければならない時にツールや手順書に頼らず脆弱性を見つける方法をご存じですか?教科書で覚えた情報システムのセキュリティ対策を経験する。それはすぐに同じ状態に復旧できるクラウドの環境だから可能なことなのです。

クラウドを使うと、もっと深いことがわかるような気がしませんか?

0 コメント:

コメントを投稿