クラウドとセットで技術者のパワーを異常に進化させる2つの技術
皆さんこんにちは、起業もできるコンピュータ言語開発者を目指しているi3planetの飯塚です。
クラウドというのは、もともとはインフラの話だと思うのですが、最近では一人歩きしてソフトウェアの機能提供などの意味も含んできています。なぜそうなるのかというと、それはそれだけ期待も大きく、さらに、実際にも非常に威力があるからだと考えられます。
■少数精鋭の限界をクラウドがカバー
今まで、設備投資がいらないIT業界といえども、大規模なソフトウェアは少人数では無理で、ある程度大きな組織が必要だとされてきました。しかし、これは、過去の話になりつつあります。特に、クラウドが存在しないときには、インフラの保守コストが非常に大きく、人が24時間監視していなければサーバが落ちたときに対応できないなどのリスクがあり、大規模な会社でなければ大規模なソフトウェアは作れないと思われてきました。しかし、クラウドでは、アマゾンのAWSなどのクラウド提供会社がインフラの監視などを代わりに行ってくれます。
また、ネットワーク構成を変えたり、サーバを新しく調達する作業などがブラウザやコマンドで行えてしまうので、かなりの構成を短時間に組めてしまいます。そうすると、サーバが万が一落ちたときに、人間が行う復旧作業をクラウドに組んでおけば、人間がはりついて監視しているのとほぼ同じだけの運用ができてしまいます。
■クラウドだけではカバーできない残りの部分は?
クラウドだけでカバーできない残りの部分は、
- ソフトウェアのテスト
- クラウドだけではできないデータベース負荷分散対策
の2つです。
■テストはテスト自動化ツールが有効
テストに関しては、テスト自動化ツールが本当に有効です。テスト作業がプログラムとして蓄積されていき、好きなタイミングでボタン一つでテストを実行してくれるので、品質保証にとても役に立ちます。実際に、筆者の自社プロダクトでも、非常に大規模なソフトウェアなのですが、データベースの仕様が変わるような大きな変更があっても、ボタン一つでテストができるため、変更に関わる対応を見逃した部分がすぐに分かります。
テスト自動化がないと、この辺を人力でやっていたらどうなるのだろうと、本当に恐ろしくなります。
■データベース負荷分散対策
データベースに関しては、データが一元管理されていないといけないので、Webのフロントのエンジンのように、負荷が増えたらどんどんサーバを増やしていけばパフォーマンスが上がるというわけにはいきません。このようなときには、データベースのテーブルをネットワーク上に分散させることによって負荷分散が可能です。MySQLのストレージエンジンのようなアーキテクチャをとっていれば、負荷分散がしやすくなります。
今、筆者が非常に注目しているのは、PostgreSQLの9.1以降で実装されている「外部データラッパー」と言う機能です。この機能は、データベースエンジンで、他のサーバになるテーブルをローカルなテーブルと同様に扱える機能です。この機能があれば、特別アクセスが多いテーブルを外部の高性能サーバに移すことでボトルネックを解消できます。
また、複数台でレプリケーションを組んでおけば、データの移行もスムーズになります。レプリケーションと外部データラッパーを組み合わせた負荷対策の運用が今後はメジャーになっていくのではないかと思っています。
■究極的には一人でエンタープライズシステムが管理できるかも
このような新しい技術がどんどん出てきて、さらに、ツールが進化してくれば、将来は一人でさまざまなシステムを管理できる時代がくるかもしれません。
昔、グーグルが「検索エンジンの結果に人の手は介さない」と言ったことを今でもよく覚えていますが、当時は「さすがに無理だろう」と思っていました。でも、今になって、人ではなくサーチエンジンが自動で検索結果を作成するのが主流になっています。
技術の進化とは恐ろしいものです。