SaaSのためのクラウドをオープンソースで構築する。Zohoの内部アーキテクチャとは?
Webブラウザ上で表計算やメール、カレンダーなどの機能を提供するサービスといえば、グーグルのGoogle Appsや、数カ月前に発表されたマイクロソフトのOffice Web Appsなどがよく知られています。
Zohoも、そうしたクラウドベースのWebアプリケーションを提供する企業として知られています。同社の特徴は、Google Appsのような表計算、メール、カレンダー、プレゼンテーション管理、タスク管理といったオフィス系アプリケーションに加え、セールスフォース・ドットコムのようなCRM/SFA(顧客管理、営業支援)アプリケーション、さらにプロジェクト管理、人事管理、請求管理、Wikiといった業務アプリケーションまで、幅広いアプリケーションを提供している点にあります。すべてに無料版が提供されており、自由に試すことが可能です。
こうした大規模なSaaS(Software as a Service)を提供するクラウドのアーキテクチャはどうなっているのでしょうか? 同社のプロダクトマネジメントディレクター Hyther Nizam氏に聞きました。Nizam氏はテクニカルマネージャでアーキテクトの立場で、いまはマーケティングを担当しているとのこと。
OSはCentOS、TomcatやMySQLなどオープンソースを採用
Nizam氏 ASP(Application Service Provider)からSaaS(Software as a Service)への変化はEvolution(進化)ではなくRevolution(革命)なもので、それを提供するクラウドではスケーラブルで、コンフィギャラブルで、マルチテナントである、ということが重要になります。
それを実現するためのZohoのアーキテクチャは、主にコンピューティング、ストレージ、メッセージグリッドの3つで構成されています。
このデータセンターはどこにあるのですか?
Nizam氏 米国です。厳しいセキュリティに守られたブレットプルーフのデータセンターで、地理的に離れた場所でディザスタリカバリも行っています。
内部アーキテクチャについて教えてください。
Nizam氏 サーバはすべてコモディティサーバを使っています。もっとも価格性能比が高いからです。OSはCentOS。基本的にはオープンソースソフトウェアもしくは社内で開発したソフトウェアを中心に利用しています。これは運用コストをできるだけ下げて顧客に還元するためです。
アプリケーションサーバではTomcatを採用しています。サーバの仮想化は行っておらず、Tomcatをマルチインスタンスで実行しています。これらアプリケーションサーバに対してロードバランスを行って負荷分散しています。
Nizam氏 さらにフリーノードと呼ばれるサーバをプールしておく仕組みがあります。このフリーノードは、サーバリソースが足りなくなった部分に対して自動的にサーバを割り当ててくれます。アプリケーションサーバへも、データベースサーバへも、バックアップサーバへも自動的に割り当てられる柔軟なものです。
システム全体の規模を増やすためにサーバを追加するときも、このフリーノードにサーバを投入すると自動的にコンフィグレーションが行われる、非常にシンプルな方式になっています。
ユーザーIDを用いてデータベースをシャーディング
データベースにはなにを使っているのですか?
Nizam氏 データベースにはMySQLを利用しています。そのほかNoSQLのCassandraや、カラムナデータベースのC-Storeの利用も検討中です。
Nizam氏 アーキテクチャの全体図の左側にあるのは、プラットフォームサービスを提供しています。いちばん上の「IAM」は認証サービスで、シングルサインオン機能を提供しています。Zohoは、Goole ID、Yahoo ID、FaceBook ID、Open IDなどに対応しています。
「WMS」は、Web Messaging Serviceで、リアルタイムコラボレーションのためのメッセージング機能を提供しています。内部ではBerkeley DBを使っています。
「Static」はスタティックコンテンツのための機能で、高速な実行のためにlighttpdを採用しています。
「DFS」は分散ファイルシステムのことでHadoopを基盤にしています。ただ、Hadoopにはオーサライゼーション機能がなかったので、私たちがそのうえに作り込みました。
クラウドでもっとも難しいのが、データベースをいかにスケールさせるかだといわれています。Zohoではどのようにデータベースのスケーラビリティを実現しているのでしょうか?
Nizam氏 その通りで、いかにデータベースの分散処理を実現するかはとても重要です。私たちはユーザーIDを用いてシャーディングをしています。具体的には、ユーザーIDを用いて数千ユーザーごとにデータベースを分割する、という方法でデータベースの負荷を分散しています。
アプリケーションサーバ上では、どのようなアプリケーションを実行しているのでしょう?
Nizam氏 独自に軽量化したJBossの上に自社開発したJavaフレームワークを用いたアプリケーションを実行しています。このフレームワークはパーシステンス、認証、トランザクションといったSaaSのフレームワークとして必要なすべての機能を提供します。Zohoのサービスを開始する以前から7年間にわたり社内で開発を続けてきているフレームワークです。
Webブラウザ上のアプリケーション用には独自のJavaScriptフレームワークなどを開発しているのですか?
Nizam氏 いいえ、JavaScriptにはjQueryのような優れたライブラリがあるので、そちらを採用しています。ちなみに、jQueryの作者であるJohn Resig氏は、jQueryのフォーラムをZoho Discussionsで行っています。
たしかにjQueryのフォーラムはGoogle groupsでスパムに悩まされていました。移転先はZohoだったんですね。
セキュリティの確保がもっとも重要
そのほかSaaSを提供するにあたり、ソフトウェア面で力を入れている点があれば教えてください。
Nizam氏 SaaSではとにかくセキュリティの確保がもっとも重要です。1つのセキュリティホールが全サービスに影響する可能性があり、命取りになります。サービスチームごとにQA担当がいて品質を確保するようにしており、またテストの自動化もJunitやSeleniumなどを用いて行っています。
さらに社内にハッカーチームがいて、つねに攻撃方法を研究していいます。クリケットのインディアンプレミアムリーグのようにZohoプレミアムリーグを開催し、競争によって評価しています。セキュリティについては、とにかく最優先で対処しているのです。
最後はビジネス面について質問させてください。Zohoはオフィス系の機能ではグーグルのGoogle Appsと、SFA/CRM機能ではセールスフォース・ドットコムと競合しているように見えます。この中でどういう戦略を立てているのでしょうか?
Nizam氏 1つは、私たちは中堅中小規模の企業(SMB)にフォーカスしている点があげられます。また、私たちはグーグルと良好な関係を築いています。
例えば、グーグルはChromeノートブックであるCR-48を数百台、私たちの顧客のために提供してくれました。これは、Google Appsに足りない機能、CRM/SFA機能などをZohoが補っており、SMBにとって両社を組み合わせることでよいソリューションを実現できるからです。
私たちはAPIも公開しており、他社のサービスとインテグレートすることも非常に容易になりました。
ありがとうございました。
あわせて読みたい
クラウド時代にSIerはどう生き残るのか? 人月ビジネスからどう脱却するのか? 大手SIer役員にインタビューしました
≪前の記事
次期電子書籍フォーマット「EPUB 3」のパブリックドラフトが公開、5月にはファイナルの予定