クラウド時代の画面と帳票
クラウドの技術
前ページで紹介したサービス形態(SaaS、PaaS、IaaSなど)においては、さまざまな技術が利用されています。
PaaSにおいては、各種のWebサービスやプログラム言語の環境、さらに設計支援のフレームワークなどもあるでしょう。
また、フロントエンド・アプリケーション開発用にも、開発を支援するサービスがクラウド経由で提供されています。
各クラウド・サービスに共通するキーワードとしては、インフラに関するものでは、スケールアウト、クラスタリング、仮想化、分散処理、ネットワーク・セキュリティ、グリッド・コンピューティングなどがあります。
クラスタリングもスケールアウト技術の1つです。同型のサーバーを並べて負荷を分散する技術は、クラウドにおいて重要です。クラウド・ベンダーは高性能のスーパー・コンピュータを保持しているわけではなく、皆さんが普段利用されているPCと大差ないコンピュータを利用しています。
クラスタリングは、単体で動作するコンピュータを複数並べて、あたかも1台のマシンであるかのように処理します。サービスを受けている側からみると1つのURLであっても、実態は何台ものマシン/サーバーで構成されています。
クラウドでの最も重要な技術に、仮想化と分散処理があります。
サーバー仮想化を適用した環境では、アクセス先の仮想サーバーがどの物理サーバー上で稼働しているのか、エンドユーザーからは分かりません。また知る必要もありません。サーバー仮想化以外でも、例えば負荷分散装置を介したアクセスでは、どのサーバーが応答したのかを知る必要がありません。
仮想化には、サーバー、ストレージ、プロセッサ、デスクトップなど各種の対象があります。それぞれの詳細な説明は省かせていただきますが、よく耳にするVM(Virtual Machine)は、CPUとメモリーのセットを仮想化しているものです。
筆者がIT業界に入った当時はオフコンやメインフレームが盛んなころで、「メモリーの仮想化」技術はすでにありました。日本としては米IBMのアーキテクチャをお手本にしていたと思います。メモリーは高価であったため、こうした仮想化技術が必要だったのです。
図2は、VMを単純化したイメージ図です。1台のマシンの中で、あたかも複数のマシンが動いているかのようなイメージです。CPU、メモリー、ディスクなども割り振られます。こうした環境を実現するツール(サーバー仮想化ソフト)としては、Hyper-V、Xen、VMwareなどがあります。
分散処理
クラウドにおいて、もう1つの重要な技術に、分散処理があります。
なお、仮想化の適用分野は、クラウドだけではありません。企業単位でも採用が広がっていることはご承知の通りです。数百台のサーバーを数十台に集約してコスト(初期導入コストや運用管理コストなど)を削減した事例をよく見ます。
スケール・メリットを生かしたクラウドにおいて、性能面でそれを支えている技術は、仮想化ではなく分散コンピューティングです。「分散処理」と「並行処理」がそれを担っています。
基本的な考えは以前からありました。情報処理を複数のコンピュータで連携しながら、分散して処理するものです。クラウドにおいては、ネットワークにつながった多くのクライアントからリクエストを受け付けて、それを処理します。リクエストの集中は突発的にありますから、サービスを平準的に提供するためには分散処理が必要なのです。
分散は処理だけでなく、データやファイルに対しても行われます。
今までの環境では、単体の物理サーバー機のうえでデータベースが稼働し、データはそこに書き込まれていました。しかし、クラウド、単なるサーバー貸しではない本当のクラウドでは、データは分散/分割されているかも知れません。
オーバーに言えば、あるレコードが東海岸のサーバーに、次のレコードが西海岸のサーバーにあるかもしれないのです。大規模な分散処理が行われている環境では、それに対応する設計、スケールアウト設計を必要とします。
スケールアウト設計は、新しいアーキテクチャです。データ設計や機能設計の場面で、RDB向けの設計のような今までの設計概念が通用しません。
クラウドには、物理的なインフラを意識しない/させないというメリットがありますが、こうしたメリットを生む基盤技術においては、データ設計などにおいて、こういった新たな手法を意識する必要があります。そうでなければ、スケールを本当に生かしたことになりません。クラウド・ベンダーの開発プラットフォームなどが、こういった技術をラップしてくれるようになればありがたいと思っています。
次のページでは、クラウドとリッチ・クライアント、帳票の関係について解説します。