リレーショナルデータベースの拡張性問題を克復したい
とはいえ、Amazon.comのサービスが大きくなるにつれ、新たな問題も出てくる。まずは、拡張性の問題だ。パーティショニングで大規模データの処理を効率化することは、リレーショナルデータベースでもできる。しかし、実運用のまま、それを拡張するのはかなり難しい。そうなると将来を予測し、最初からかなり大きなサーバーを用意する必要が出てくる。
さらに、ピーク時に対応する処理能力確保も課題だった。「小売業では、クリスマスシーズンの需要をどう乗り切るかが課題です。その時のためだけに、サーバーを増やすのか。さらに、可用性の面でも課題がありました。たとえば、開発者が複雑なクエリーを投げてしまうと、他の処理に影響を及ぼしてしまうのです」とクワジャ氏。これらの課題を解決するためにAmazon.comで新たなシステムが構築された。それが「Amazon Dynamo」と呼ばれるシステムだった。
「これは、現在提供しているDynamoDBではありません。分散ハッシュテーブルで、Optimistic Replicationができる環境でした」という。一貫性の制約を緩めることで、大幅な拡張性と可用性の向上を実現。また、シンプルなクエリーに限定することで、パフォーマンスの予測も容易になった。この仕組みであれば、サーバーの横展開で、簡単に拡張性を確保できる。
しかしながら、Dynamoでシステムの拡張性、可用性は向上したが、アプリケーション開発者は引き続きインフラ管理者的な業務を担う必要があった。
「容易に拡張ができるようになったとはいえ、クリスマスシーズンが近づけばエンジニアはサーバーを追加し、何十台ものサーバーにシステムを展開する作業をしなければなりませんでした」(クワジャ氏)
当然ながら、監視などの運用作業も自分たちでやらなければならない。このように、Dynamoという新たな可用性と拡張性の高い環境はできたが、エンジニアの苦労は残っていた。なので現場のエンジニアからは「Dynamoというデータベースではなく、DynamoDBというサービスが欲しい」という声があったのだ。