Momentoのお客様は、やり直しは時に良いことだと話しています。しかし、リスのモーは、キャッシュがすべてなくなるということに葛藤を感じています。リスという生き物は、どれだけ早くいつもの日常に戻れるのだろうか?深刻な製品の難問に直面した私たちは、困惑した目でエンジニアリング・チームに向かい、「魔法が必要だ!」と叫びました。すると彼らは「わかった」と言ったのです。
なぜキャッシュをフラッシュするのか?
既知のスタートポイントに戻るための迅速なリセットは、開発中だけでなく、統合テストやパフォーマンステストにも役立ちます。本番のユースケースによっては、定期的にデータを一括してキャッシュにロードし、再スタートを切ることもあります。そして、時には(プライマリストアでもキャッシュデータでも)ミスを犯し、回復への最短の道は、すでにキャッシュにあるものをすべて取り除くことです。私は友人の友人から、このような「世界が燃えている」作戦シナリオについて聞いたことがあります。
キャッシュをフラッシュする機能がなければ、2つの選択肢があります:
1.元のキャッシュを削除し、同じ名前の新しいキャッシュに置き換える。
2.代替キャッシュを作成し、代わりにそれを使用するようにすべてのクライアント・ソフトウェアを再設定してから、元のキャッシュを削除する。
どちらの選択肢も、ライブのアプリケーション・トラフィックをかなり混乱させる可能性がありますし、一般的には、管理者の負担が大きくなります。Momentoの光速のコントロール・プレーンは、最初の選択肢をいくらか合理的に見せるが、Moはより高い基準を要求してきました。
フラッシュ、消毒、すぐに仕事に戻る
多くの伝統的なキャッシュ・ソリューションのフラッシュ機能は、実際には一定期間にわたって既存のアイテムをすべて削除します。どのくらいの時間でしょう?それは、存在するアイテムの数に依存します。O(N)時間の複雑さを持つ処理なので、データが大きくなればなるほど時間がかかり、その間にCPUの消費量が大幅に跳ね上がることになります。場合によっては、その場でキャッシュをスワップアウトできるかもしれないが、それでも、ある時点で(メモリを取り戻したいのであれば、遅かれ早かれ)クリーンアップを行うためにCPUを消費しなければなりません。Momentoの分散アーキテクチャは、データ量に関係なく、ほぼ瞬時にキャッシュを完全にフラッシュできることを意味します。また、必要な数だけキャッシュを持つことができ、アプリケーションにとって最も理にかなっているようにキーを分割することができます!クライアントは何も変更する必要がなく、CPU負荷のようなインフラへの影響を心配する必要もありません。これは微妙な利点のように思えるかもしれませんが、パラマウント社のケビン・ジョーンズ氏のような顧客にとって重要な意味を持つため、Momentoにとって重要なことなのです:
時折、キャッシュからキーのセットをパージする必要があります。以前のRedisでは、ダウンタイムを避けるために1時間以上かかることもありました。しかし現在では、キーをネームスペースに分離することで、1つのコマンドを実行するだけで、即座にキーをフラッシュすることができます。
以前は手動で洗浄していた私としては、Momentoがこの機能を導入して以来、時間の節約になり、本当に感謝しています。
レバーの使い方
Momento Cacheのフラッシュ機能は、Momento CLI、.NETおよびRust SDKで使用できるようになりました(Java、Node.js、Python、PHP、Ruby、Go向けのアップデートが予定されています)。
Momentoに解決してもらいたい、キャッシングに関する運用上の課題はありますか?ぜひ教えてください!Twitterで@pj_naylorとつぶやくか、LinkedInで連絡を取るか、support@momentohq.comまでメールをください。