クラウドの考え方が広まり、それはプログラミングスタイルにもいろいろと影響を及ぼし始めている。コンピュータのスタイルがクラウド化していくと、プログラマたちはどのように考え方を変えていかなければならないのか。クラウドを推進している4つのベンダーが、各社の取り組みを紹介すると共に、クラウド時代のプログラミングスタイルの変化についてディスカッションした。
クラウドがエンジニアに与える影響とは?
モデレータであるIBMの米持氏は冒頭で「クラウドはこれから5年~10年後のIT業界に広まっていくと考えられています。クラウドと言うと、一般的には『コストが安くなる』といったことが注目されていますが、実はクラウドについて調べれば調べるほどエンジニアに影響があると感じています。そういった影響により我々が何を身に付けなければならないのかを考えてみます」とディスカッションの趣旨について説明した。ディスカッションは、パネラーの自己紹介を兼ねた各社のクラウドへの取り組みについての説明を行い、次にいくつかのテーマについての意見交換という構成で進行した。
「パブリック」「プライベート」に大別されるクラウド
Google App Engine ~ 自動でスケールするWebアプリケーション専用のクラウド
最初に自己紹介したパネラーは、サイオステクノロジーの松尾氏。同社では「SIOS Integration for Google Apps」というGoogle App Engineの導入支援ソリューションを提供している。松尾氏は個人的に“Google App Engineの追っかけ”をしていたら、Googleから「Google App Engine API Expert」に認定されたという。
松尾氏は、「Google App Engineは、Googleのインフラストラクチャー上であなたのウェブアプリケーションを動かせます。というサービスです。コードはPythonで書きます。Google App EngineはWebアプリケーション専用のため、自由度は低い一方で、自動でスケールする仕組みなどインフラの事はほとんど何も意識せずプログラムに専念できるので、管理面で非常に楽です。またAdWordsのような料金設定も検討されています」と、Google App Engineの特徴を話した。
松尾氏は、Google App Engineが自動でスケーリングしている例として、オープンソーシャル向けの3Dアバター「BuddyPoke」を挙げた。同サービスのorkut上でのユーザー数は現在3千万人ほどあり、ユーザー増加の過程でサーバなどの設備増強などはまったく行なっていないそうだ。このあと、松尾氏はGoogle App Engine向け開発の手軽さをアピールするためプログラミングのデモンストレーションを行なった。
Force.com ~ 100%ビジネス向けのクラウド
次にセールスフォース・ドットコムの及川氏が同社のクラウド「Force.com」について説明。及川氏は“ただのGeekでいられない”というキーワードを掲げ「テクノロジーを追求する開発者であるGeekと、経営者や管理職、IT以外のビジネスマンをSuitsとすると、その間を取り持つのが『Force.com』です。純粋な開発環境というよりは、ビジネスに寄ったものと考えてください。開発者は、技術だけを追いかけていてはダメで、オーダーしてくるお客さまのビジネスの成功を考えなければなりません」と、開発者のあり方について話した。
及川氏は「クラウドコンピューティングといってもいろいろあります。Facebookはコンシューマー向けのソーシャルアプリケーションを実現するプラットフォームで、AmazonやGoogleはCPUやストレージを中心に一般向けのWebアプリケーションを提供しています。Salesforceの場合は、100%ビジネス向けです。なぜFacebookやAmazon、Googleの名前を出したかと言うと、Salesforceはそれぞれ連携ができるからです。Salesforceの特徴は、ハードウエアや基本的なフレームワーク作成などの準備がされているため、今日からすぐに使い始めることがき、即座に目的のビジネスアプリケーションを開発できる点にあります」とクラウドならではの利点をアピールした。
さらに、及川氏はリレーショナルなデータベースをストアできることや、それにアクセスするためのWeb API、ワークフロー承認プロセス、レポーティング、カスタムロジック、インターフェイスなどの機能があることを解説。加えて、StarbucksやDELL、オバマ大統領のサイト「Change.gov」でも利用実績がある、エンドユーザーからのアイデアを収集する「Salesforce CRM Ideas」などの事例を紹介した。DELLの場合、「Linuxのプリインストールモデルがほしい」というユーザーからの意見が多数集まったため、その結果を受けてLINUXをインストールしたモデルの提供を開始した。オバマ大統領のサイトでは、「新政権に何を求めるか」という国民からの要望を集めることに成功したという。
Windows Azure ~ PCと同様のインターフェイスを目指すクラウド
続いて登場したパネラーはマイクロソフトの萩原氏。同社のクラウドベースのWebサービス基盤「Windows Azure」について解説した。「Windows Azure」の構成は、クラウドOSである「Windows Azure」上に「Live Services」やWorkflowなどの「.NET Services」、データベースに相当する「SQL Services」といったビルディングサービスブロックがある。将来的には今ある同社のサーバ製品がクラウド上でも同様のインターフェイスで動作するようになるという。「PC上でもクラウド上でもどちらでも動く環境を作っていくが、現実的にはその両者を組み合わせるのがいいソリューションではないかと考えています」と萩原氏。
萩原氏は、トランザクション処理のベンチマークを見せ、既存のスケールアウトの戦略でも十分な性能を出しているものの「性能的には満たしていますが、コストはかかります。今後は、標準的なサーバを使っていかに安いコストでスケールアウトしていくか、というのがクラウドをすすめるモチベーションとなっています」とした。
続いて「Windows Azure」のアプリケーションアーキテクチャについて「WEBアプリケーションを扱う『Webロール』、ビジネスロジックを扱う『Workerロール』があります。ロールは、コンテナに非依存な抽象化されたプログラムの実行単位みたいなものです。その間にストレージサービスがあることが重要です。クラウドの場合は、メッセージをキューに入れることによる非同期トランザクションを使ってスケーラビリティを実現しているからです。インターネットから来た処理はWebロールに渡され、それがストレージに渡され、Workerロールが取り出します。このように、クラウドは10万台~100万台規模のサーバで並列処理をしているため、今までのアプリケーションとは違った実行方法をしています」と、インフラの違いを解説した。
インフラは異なるが、外から見た開発環境はこれまでとあまり変わらず、Visual Studioを使った開発ができ、既存の.NET向けのアプリケーションはわりと簡単にクラウド上に展開できるととし、Visual StudioにAzureのSDKをインストールした環境での開発のデモンストレーションを行った。
RC2/IBM Technology Adoption Program/BlueCloud ~ さまざまな形態のクラウド
モデレーターの米持氏は、IBMのクラウドの取り組みを紹介。「社内の部門単位ではサーバを立れられず、クラウドを活用しています。研究所は『RC2(Research Computing Cloud)』、社内のテスト用は『IBM Technology Adoption Program 』を使います。『BlueCloud』は、アメリカや中国の大学や、新規の企業向けに貸し出しているクラウドです。CPUの時間貸しなども行なっています。また、“マルチテナンシーアプリケーション”といって、一つの環境に複数の会社に入ってもらって利用するシステムもあります。“ディザスター・リカバリー”といって、何かあったときのリカバリーに使うためにデータを預かるのクラウドもあります」など、さまざまな取り組みを紹介した。
また米持氏は、ソフトウエアの構造もクラウド的になっていると指摘「Lotus Quickr」「WebSphere sMash(Groovy)」「Lotus Mashups」「InfoSphere MashupHub」などは、インストール後はブラウザで操作し、ローカルのPCにはファイルを保存しないようなものが増え、開発者は雲の下に来るようになっているとした。仮想化もクラウドには重要で、“アプライアンス”と呼ばれる、OSやDBをVMのパッケージにするという仕組みも増えているとした。
さらに米持氏は「クラウドは、各社の技術や取り組みは違うものの、スタイルは同じ」と指摘し、クラウドには、GoogleやSalesforceなど、インターネットで展開されているパブリックなものと、会社の中だけで展開されるプライベートなもの2種あるというガードナーの資料について説明した。
デベロッパの観点や業務モデルの違いから見たクラウド
デベロッパーの立場で変わること
各社の紹介後、ディスカッションでの最初の話題は「デベロッパという観点としてどう変わっていくか」とし、データベースのモデル(Key-Value)やスケール手法、トランザクションの違いといった技術者としての意見交換が行なわれた。
松尾氏は「Google App EngineでBIGTableのAPIをRDBと思って使おうとすると、痛い目にあいます。JOINができないなど、集約の関数が使えません。SQLに慣れている人は戸惑うでしょう。もともとスケールするためのデータストアなのでつくりが違います。そこに気をつける必要があるでしょう。一応トランザクションを使えますが、データが近くにあるものである必要があります」と指摘した。
萩原氏は「クラウドの場合は、トランザクションの単位は、テーブルの一つの行単位になるので、JOINやSQLが持っているような組み込み関数を使いながら非常に大きなデータのグループに対しトランザクションをかけるということは、まず性能上問題が出てきます。Key-Valueは、一つの表の行のように見えますが、実際には各行が物理的にクラウド上のマシンに分散していますので、例えばテーブルスキャンをすると、クラウド上のマシンに要求が広がってしまいます。いかにトランザクションを使わずにアプリケーションの中で設計を進めるかが重要です。SaaSのような製品の場合はそういった点は隠蔽されていますが、開発者としてはSaaSアプリケーションを作る人は、うまくキューイングとか非同期を使う必要があります」と解説した。
及川氏は「SalesforceはRDBと同じイメージでデータストアを提供しています。実際はマルチテナンシーで行なっていますので、確かにテーブルスキャンをするとアウトになります。ただし、実証データが豊富にあるので、開発者はクエリープランなど気にせず開発できます」と応えた。
業務モデルに与える影響
米持氏は続いて、「プログラミング手法や性能という面ではなく、エンジニアがどんなことをすると役に立つのか」といった業務モデルの違いについて各氏に聞いた。
及川氏は、顧客の成功を実現するには、顧客の仕事を知る必要があるため、その時の顧客からの要求に応じて対応するだけでは、将来性がないと指摘。「顧客の仕事の上流工程の視野を持つ必要があるでしょう」と顧客の本来のゴールを目指した提案の必要性を語った。松尾氏も同様に、Google App Engineは、インフラの安定性は保障されているので、よりビジネスロジックに注目すべきであるとし、萩原氏も「業務の戦略と戦術があって、システムへの要求が決まります。確かに及川さんの言うように、その元になる問題や目標を知らないといけないでしょう」とした。
米持氏は「IBMの場合はこれまでインフラごと塊で納品するスタイルが主流でした。住宅で言うと戸建ての一軒家です。それと対比してクラウドは、マンションと言えます。これからは家を建てる人ではなく、マンションの各部屋の中のものを作る人が必要となっていくと思います。この数は非常に多くなってくると思いますのでその点に注目しなければならないと考えています」と、より上位の業務に注目する必要があるとまとめた。
クラウドが創出する新たなビジネスの形
ディスカッションの最後では、各氏からのメッセージが語られた
松尾氏:「Google App Engineは、クラウド時代の象徴的なサービスですのでぜひ使ってみてください」
及川氏:「今日はスーツ着てきましたが、技術を追い求めてはいけないということではありません。ただ、ビジネスで使う以上は、自分が係わっているビジネスに対して幅広い仕事に目を向けてください」
萩原氏:「クラウドはビジネスチャンスです。例えば、アプリケーションをどう配置するかという手法は決まっていません。法令上の制約や時差、電力消費などを考慮した再配置などを考えると、これからどんどん仕事は増えていくでしょう」
米持氏は最後に「クラウドに限らず、新しい技術が出た際、古い技術に置き換わるわけではなく、利用範囲が広がる場合が多いと思います。道路や橋をつくることで都市が発展していきます。大きい橋はそれなりに予算をつけて作りますが、これはメインフレームの開発に近く、今後もなくなることはないでしょう。クラウドは、今までコスト的な問題から、コンピュータを使えずにいた領域に、安いコストで導入できるというものなので、小さい橋をいろいろな場所に作っていくイメージです。堅牢性やスケールを考えるのではなく、ちょっとしたことでも、何をやったらどれくらい効果があるかを考えることが重要になるでしょう」と語りディスカッションを締めくくった。