クラウド時代の期待を実現するサーバーレス キャッシュ

キャッシュにさらに多くのことを要求するときが来ました。

開発者にとって、今は素晴らしい時代です。

新しいアプリケーションを迅速に構築、拡張、運用するために利用できるツールは、わずか 10 年前よりもはるかに進歩しています。ほとんどのアプリケーションとインフラストラクチャを自己管理型の EC2 インスタンスで実行していたクラウドの初期導入者であっても、トラフィックの急激な急増によりユーザーのダウンタイムや長い夜が発生する可能性があります。

現在、AWS Lambda は、無限に拡張でき、必要な場合にのみ実行できるサーバーレスの従量制コンピューティング サービスです。当社には、Amazon DynamoDB のようなサーバーレス データベースと、Google Spanner や MongoDB Atlas のようなフルマネージド システムがあり、投入されたあらゆるワークロードを動的に処理できます。応答時間を短縮し、攻撃をブロックできる CloudFlare のような CDN があります。1 秒あたり 1,700 万リクエストを超える DDoS 攻撃

これらのサービスは、クレジット カードとアイデアがあれば、誰でも利用できます。数秒でプロビジョニングし、アプリケーションのニーズに合わせて動的に拡張します。最新のクラウド環境の拡張性と弾力性を最大限に活用することができます。

それなのに、どういうわけか私たちのキャッシュは 20 世紀から抜け出せていないのです。プロビジョニングに時間がかかるため、インシデントを回避するにはクラスター サイズを慎重に計画するか、極端なオーバープロビジョニングが必要です。これらは予測できないテール レイテンシをもたらし、ユーザーのエクスペリエンスを悪化させたり、アプリケーションのダウンタイムを引き起こしたりします。また、使用率が低い場合でも、インスタンスの全額が請求されます。

これが、Momento がサーバーレス キャッシュ サービスを構築した理由です。これは、21 世紀のサーバーレス、クラウド対応時代のキャッシュであり、新しいアイデアの開発中に速度を落とさず、需要のピーク時にもパフォーマンスを維持します。

以下では、前世代のキャッシュ オプションの問題と、Momento がそれらをどのように解決するかについて説明します。しかし、すでに理解していてすぐにでも使い始めたい場合、先に進んでください。今すぐMomentoを始めましょう

必要なオートスケーリング キャッシュ

インスタンスベースのプロビジョニングは、レガシー インフラストラクチャの最悪の部分の 1 つです。

インスタンスベースのプロビジョニングでは、特定の仮想インスタンスを選択して管理する必要があります。CPU、RAM、ディスク、ネットワーク構成を選択する必要があります。インスタンスが過負荷になっていないことを確認するには、低レベルのシステム メトリクスを監視する必要があります。フェイルオーバー、冗長性、バックアップについて考慮する必要があります。

APIを備えたデータセンターでは、独自のデータセンターを運営するよりも改善されていますが、やるべきことはまだあります。特定のインスタンスに影響を与え、アプリケーションのダウンタイムにつながる可能性のあるインシデントの影響を受ける可能性があり、その責任を負うことになります。

最悪の場合、インフラストラクチャの弾力性のなさに特有のトレードオフに直面することになります。ピークのトラフィックを処理するためにキャッシュをオーバープロビジョニングし、月末の請求書で支払うか、数ドルを節約するためにアンダープロビジョニングをし、キャッシュが追いつかない場合の影響への対処をユーザーに任せるかのどちらかです。

私たちが愛する最新のインフラストラクチャは、インスタンスベースのインフラストラクチャではなく、リソースベースのインフラストラクチャです。‍

リソースベースのインフラストラクチャを使用すると、インフラストラクチャプロバイダーは、特定のデータセンター内の多くの顧客間で巨大なリソース プールを共有します。 

AWS Lambdaでは、これは顧客のためにLambda関数をホストするワーカーインスタンスの巨大なプールを意味します。Amazon DynamoDBの場合、これはリージョン全体のリクエストルーターとメタデータサービス、そして顧客データを管理するためのストレージインスタンスのプールを意味します。

顧客間でインフラを共有するリソースベースのインフラを使用することで、インフラプロバイダーはインスタンスベースのインフラでは不可能なレベルのダイナミズムと回復力を提供することができます。単一の顧客がリージョンのDynamoDBリクエストルーターをダウンさせるほどのリクエストを送ることはできませんし、単一の顧客がリージョンのAWS Lambdaのワーカープールをオーバーロードさせることもできません。

さらに、共有リソースのプールを前もって設計することで、インフラプロバイダーは異なる方法で障害を計画し、処理しなければなりません。そのレベルの共有インフラでは、インスタンスの障害は日常茶飯事であり、個々の障害が複数の顧客に影響を与える可能性があります。プロバイダーは、フェイルオーバーの状況やAPIの制限を設計し、ある顧客が他の顧客に影響を与えるのを防ぐ必要があります。

Momentoは、リソースベースのインフラストラクチャを採用した初のキャッシュです。このクラウドファーストの設計により、事前プロビジョニングや粗い粒度の「自動スケーリング」ポリシーを必要とせず、動的にスケーリングするキャッシュを提供することができます。

ユーザーにとって、Excelスプレッドシートに不器用な負荷テストに基づいてキャパシティプランニングを行う時間が減ることを意味します。予測できないトラフィックの急増に基づく停止も少なくなります。キャッシュが邪魔になるのではなく、ただ機能するようになるのです。

必要なpay-per-useのキャッシュ

リソースベースのインフラストラクチャは、Momentoがトラフィックの変動をより適切に処理することを意味するだけではありません。また、インフラストラクチャから得られる価値に見合った価格モデルを提供します。

インスタンス・ベースのインフラストラクチャでは、プロビジョニングされたインスタンスに対する支払いは何があっても発生します。夜間、ユーザーが寝ていて、利用率が一桁であっても、インスタンスの料金は全額支払うことになります。また、インスタンスベースのインフラはスケールアップやスケールダウンが難しいため、トラフィックのピークを見越してオーバープロビジョニングに多くの時間を費やすことになるでしょう。

Momentoのリソースベースのインフラストラクチャでは、実際に使用したリソースに基づいて課金されます。料金はシンプルで、Momentoに書き込んだり、Momentoから読み込んだりしたデータのGBごとに支払います。常時発生する月額費用やデータの階層化計算、メモリ制限もありません。

この価格モデルは、得られる価値と支払う価格との間に緊密なつながりをもたらします。また、Momentoキャッシュをステージング環境や開発者環境に導入することも容易で、エフェメラルなテスト環境で常時稼働するインフラストラクチャに費用を支払う必要がなくなります。

顧客にふさわしい比類のないキャッシュ・パフォーマンス

課金、スケーリング、管理は重要だが、キャッシュは最終的にはパフォーマンスが重要です。

アプリケーションにキャッシュを追加する場合、超低レイテンシーを求めます。アプリケーションが最もキャッシュを必要とするとき、つまりトラフィックの多いときにキャッシュが必要です。そして、効果的な計画を立てることができるように、予測可能性と一貫性を求めます。

Momentoはここでも輝きます。パフォーマンス・テストを考える上で、2つの重要なメトリクスに焦点を当てています:
スループット(1秒あたりのリクエスト数(RPS)で測定)。
クライアント側の待ち時間(レスポンスを受け取るまでのミリ秒(ms)数で測定)。

待ち時間について考えるとき、Momentoはクライアント側の待ち時間(クライアントがレスポンスを受け取るまでにかかる時間)に重点を置いています。サーバー側の待ち時間は、ネットワーク上のばらつきやクロスAZトラフィックの影響を見逃すからです。ネットワークと接続のセマンティクスは、データにアクセスする上で避けられない部分なので、キャッシュされたデータがアプリケーションでどれだけ早く利用可能になるかを確認するのが最善です。

さらに、レイテンシは分布であり、一般的にメトリクスは特定のパーセンタイルで報告されます。サーバー側のレイテンシは、ネットワーク上の変動やクロスAZトラフィックの影響を見逃すからです。Momentoは、テールレイテンシーが重要であると強く信じているため、「p999」レイテンシーに焦点を当てています。これは、レイテンシメトリクスの99.9%分布における測定値です。言い換えると、p999レイテンシより遅いリクエストは0.1%しかありません。これはキャッシュへのリクエストを測定していることに注意してください。1つのウェブリクエストがキャッシュへの複数のリクエストになる場合、これは0.1%以上のユーザーに影響します。

Momentoの顧客は定期的にサービスの負荷テストを行い、クライアントでのp999レイテンシが5ms以下であることを一貫して報告しています。最近、チームは、クライアントで2.5msのp99レイテンシーを持つ定期的なソークテスト(500K RPS負荷)を完了しました。

Momentoは、他のキャッシュでは対応するのが難しい規模のキャッシング・ニーズに対応する準備ができています。

結論

Momentoチームは、過去10年間のインフラストラクチャオプションの進歩が大好きです。Momentoは、インスタンス・ベースのセルフ・ホスト・インフラストラクチャではなく、クラウド特有の特性に合わせて設計されたキャッシュを構築しました。その結果、インスタンスの事前プロビジョニングが不要なダイナミック・キャッシュ、使用量に応じた従量課金、比類のないパフォーマンスが実現しました。

しかし、私の言葉を鵜呑みにせず、実際に試してみてください。わずか数秒でMomento Cacheをプロビジョニングでき、わずか5行のコードでアプリケーションと統合できます。

サーバーレスコンテンツ、開発者の視点、カスタマーストーリー、製品アップデートについては、TwitterLinkedInでMomentoをフォローするか、Discordで会話を始めてください!

最先端のクラウドネイティブテクノロジーを使った支援に特化したコンサルタント。DynamoDB、Lambda、API Gatewayなど、AWS上のサーバーレス技術を専門とする。