分散NoSQLデータベースRiakを提供するBashoの、協同ファウンダだったAntony Falcoが、300万ドルを調達してOrchestrate.ioを立ち上げた。このサイトは、ちょうどTwilioが、API経由でユーザシステムのVoIP〜テレフォニーまわりの構築と管理を簡易化してくれるように、やはりAPIの提供を通じて複雑なデータベースまわりの負担を軽減する。この投資ラウンドを仕切ったのはTrue Ventures、これにFrontline VenturesとResonant Venture Partnersが参加した。
Bashoを数か月前に去ったFalcoによると、Orchestrate.ioはデベロッパが機能の豊富なアプリケーションを構築するとき直面するさまざまな問題を解決する。‘機能の豊富なアプリケーション’には、おおむね、複数のデータベースがつきもので、それらが地理地域的、時系列的、あるいはそのほかの意味的に、多様な機能を担っている。
データベースの問題は慢性的に存在する。問題の原因が、関係データベースのスケーラビリティの限界であることも多い。ここ数年、AmazonやGoogleなどは従来システムの天井にぶつかり、大量のクェリに対応できる新しいデータベースを独自に開発せざるを得なくなった。その結果、アプリケーションの良好な稼働状態を維持するためのデータベースの管理やメンテナンスに、大量の時間を投ずることになった。
Orchestrate.ioの役割は、データベースレイヤの抽象化、いわばサービスに対するサービスだ。Twilioが、デベロッパによるSMSやVoIPなどのサービスへのアクセスを巧妙に単純化したように、Falcoのサービスはデベロッパがデータを同社のAPIから取り出すようにして、アプリケーションの機能の増強を容易化する。“説明のためにTwilioやSendgridの名前を持ち出すけど、問題の性質は違う。しかし提供するサービスのパターンが共通している”、と彼は言う。“多数のデータベースを動かすという複雑で面倒な業務の前面にうちのAPIを置く。デベロッパ/プログラマはそのAPIを使って迅速にアプリケーションを構築できる。TwilioやSendgridもそれと同じやり方で、データベースではなく通信〜ネットワーキングまわりの複雑性を大幅に単純化している”。
Orchestrate.ioは、提供するサービスをインメモリで動かす。“インデクスやホットデータをメモリに保存することは、パフォーマンスにとって必須だ”、とFalcoは言う。“3つの層がある: インメモリのアクティブデータとインデクス、永続性がありアクセス頻度の高くないディスクストレージ、そして安価で障害耐性のあるストレージに収める老朽不活性化データだ。メモリから取り出すデータが多ければ多いほど、パフォーマンスは良くなり、レイテンシは少なくなる。ユーザはそれぞれ別のデータベースを対象とする3つ4つのクェリからなる‘リッチなクェリ’を実行できるようになる”。
Orchestrate.ioはオープンソースのデータベースを使ってそのサービスを構築している。“うちはデータベースは作らない”、とFalcoは言う。“データベースそのものは今後も変化する。だから特定のデータベースには縛られないようにしている。Riak(Bashoのプロダクト)はもちろん、うちのようなユースケースには理想的だ。うちもサービスの基盤部分ではRiakを使っているが、それ以外では何も特定化していない”。
同社は、データとアプリケーション/ユーザとの間を最短距離にしたいので、複数のデータセンターを使うつもりでいる。それは各ユーザ企業に安定的な高パフォーマンスを提供するためにも、重要な視点だろう。サービス自体も、一点集中ではなく分散化するのだ。
たとえば、アプリケーションがAmazon Web ServicesのEastリージョンにインストールされていて、イギリスのロンドンに多数のユーザがいる場合。Orchestrateは複数のプロバイダにまたがる十分に大きな(分散)データセンターを使っているので、地球上のどこにいる大量ユーザにも対応できるだろう。
Falcoはデータベースの未来についてこう語る: データは金(きん)の鉱脈だが、そのアクセス方法が不適切なら原油の池にすぎない。データベースがデータにアクセスし、データを組織化して、クェリに対して可利用にする。しかし、その効率は良くない。デベロッパがたった一つのデータベースを扱う場合でも、そう言える。しかし、企業やシステムの機能の増加と共に、データベースの数も増える。そうすると、デベロッパの目の前にあるのは、Rube Goldbergのマシンだ。それでも、仕事は完璧と迅速を要求される。データセンターを猫たちの遊び場にするわけにはいかない。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))