AWS re:Inventで披露されたデータベースの革新
AuroraはServerlessからLimitlessへ 量子チップのR&Dも披露
2023年11月29日 11時00分更新
フェイルオーバー不要なAurota Serverlessはどう実現されたのか?
Auroraのローンチにより、サーバーレスには近づいた。しかし、「真のサーバーレスにはほど遠い」とデサントス氏は指摘する。書き込み用のメモリ容量を増やすために、フェイルオーバーが必要だからだ。そこでリリースされたのがAurora Serverlessになる。これにより、フェイルオーバーが不要になり、伸縮可能になる。では、どうやってAurora Serverlessを実現したのか。
従来のリレーショナルデータベースでは、大型の物理サーバーを用意し、メモリが足りなければ、OSに要求していた。もちろん、無駄は多いが、共有すれば、複雑性は増してしまう。そのため、AWSはNitroのハイパーバイザー内でセキュアに共有を行なう。
Nitroハイパーバイザーでは静的にメモリが割り当てられているので、安定したパフォーマンスを確保できる。他のハイパーバイザーの影響も受けない。だが、もっとメモリが必要になった場合は、ホスト側にメモリがあっても、ハイパーバイザーを再起動しなければならない。これだと当然フェイルオーバーと変わらない。こうしたジレンマを解決すべく、新たに開発されたのが「Caspian」という新しいハイパーバイザーレイヤーだ。Caspianにより、Aurora Serverlessはミリ秒単位でサイズを変更でき、共用型オーバーサブスクリプションという技術を用いて、負荷を変えることが可能になる。
Caspianはハイパーバイザー、ヒートマネジメントプランニングシステム、そしてデータベースの変更エンジンという複数のコンポーネントから構成されている。Caspianインスタンスはホスト上の最大メモリを確保しているが、Nitroと異なり、データベースのリクエストに合わせて、容量を動的に割り当てる。
これを実現するのが、仮想マシンのリソースを管理するCaspianのヒートマネジメントプランニングシステムだ。データベースがどれだけメモリを必要としているかをつねにモニターし、メモリが枯渇したら、別の物理ホストにインスタンスを立ち上げる。高速・低遅延なNitro環境だからこそできる芸当だ。こうした一連のメカニズムにより、ハイパーバイザーのアロケーション(隔離)機能を確保しつつ、データベースに必要なメモリを確保し、かつ共有することが可能になるわけだ。
データベースの分散シャーディングでAuroraが真のサーバーレスへ
しかし、サーバーレスへの道程はゴールにたどり着かない。なぜならまだ物理サーバーのリソースに制約を受けているからだ。これを解決する方法として目を付けたのが、データベースのシャーディングになる。
シャーディングはデータベースのサブセットを複数のホストに分散させる方法だ。データのパーティショニニングを行ない、頻繁にアクセスするデータはローカルにホストすることで、拡張性を高める。しかし、複数のデータベースに分散されるため、ルーティングとオーケストレーションを独自に開発しなければならない。シャードの拡大にも限界があるし、複数のシャードでトランザクションを確保するのも難しい。「サーバーレスでシャーディングするのはどういうことか? われわれは自問自答した」とデサントス氏は語る。
こうした試行錯誤の結果、今回発表されたのが「Aurora Serverless Limitless Database」になる。各シャードは自動的に管理・アップデートされ、アプリからは1つのエンドポイントから扱える。また、複数のシャードに対して分散してクエリをかけるため、パフォーマンスも向上。新たに開発したルーティングとオーケストレーションにより、各シャードのスキーマを理解し、分散したトランザクションでの一貫性確保、スケールアップ、新規のパーティション作成などもバックエンドで実行する。
そして、データベースが分散した環境でシャーディングを実現するための鍵は時刻同期だ。単一サーバーの場合、統一されたシーケンス番号で処理の順番を管理できるが、Aurora Serverless Limitless Databaseではタイムスタンプを用いて、シーケンスを管理している。しかし、ネットワークの遅延があるため、ローカルとリモートではどうしても時刻のずれが生じてしまう。小さいネットワークであればあまり困難のない時刻同期も、グローバル環境にデータベースが分散している場合は、ばらつきが生じてしまう。
そのためカスタムの最新Nitroチップに時刻同期の仕組みを盛り込んだ。そして、世界のどこでも正確な時刻を提供する衛星を用いた原子時計、時刻同期のみを行なうASIC、そして専用ネットワークを用いて、すべてのEC2インスタンスと正確な時刻同期を図る。これは「Amazon Time Sync Service」としてサービス化されており、ユーザーも分散型トランザクションを効率的に実現できる。
デサントス氏は、レイテンシを低減し、サービスのコストを下げるキャッシュについても言及した。Amazon Elastic CacheはMemcashedやRedisのようなキャッシングサービスをマネージドサービス化したものだ。ただ、従来はメモリを確保するためのサーバーに依存するため、サーバーレスではなかった。今回はサーバーレスのキャッシュサービス「Amazon ElastiCache Serverless」が新たに発表され、インフラやキャパシティの管理も不要になった。これを実現可能にしたのも、前述したCaspianを用いたシャーディング技術のおかげだ。遅延は平均0.5ミリ秒を実現し、最大5TBまでの容量をサポートするという。