スケール入門書で学ぶキャッシングの概要――Redisによる大規模キャッシング
34年以上にわたりSaaSアプリケーションの設計・構築に携わってきたLee Atchison(リー・アッチソン)氏は、アプリケーションモダナイゼーション、クラウド移行、DevOps変革における第一人者として広く認められています。著書3冊、公開記事70本以上、そして数百回に及ぶ講演・講義・セミナーを通じて、その専門知識を披露しています。
あなたとチームが開発したアプリケーションが、ついに人々の注目を集めました。口コミで評判が広まり、人気は急上昇。しかしその一方で、運用コストは急騰し、アプリは頻繁にクラッシュ。ついには顧客が信じられない行動に出ます――あまりにも遅いレスポンス速度について、SNSで不満をつぶやいてしまうのです。
顧客ベースが拡大するにつれ、コストの上昇をどう抑えればよいのでしょうか? スケーリングという課題を前向きに受け止めたいところですが、成長のためにフェイルオーバー率の悪化やメンテナンスコストの増加を犠牲にすることはできません。
ひとつだけ確かなことがあります。それは、アプリケーションキャッシュが必要だということです。
キャッシュとは何か?
「キャッシュとは、元のデータソースよりも高速かつ効率的にアクセスできるデータストレージコンポーネントである。」
Lee Atchison『Redisによる大規模キャッシング(Caching at Scale With Redis)』より
データ取得のリクエストが発生すると、キャッシュはそのデータのコピーをリアルタイムで提供します。利用者が増えるほど、プライマリデータストアとの間で何度もやり取りすることなく、増加するデータリクエストに耐えられる高度なアプリケーションアーキテクチャが求められるのです。
Lee氏はこの点をシンプルにまとめています。
「現代の世界は、現代的なアプリケーションを求めている。」
顧客がより高いパフォーマンスを求めているのは、もはや周知の事実です。アプリケーションが期待どおりの性能を出せなければ、顧客は離れ、競合他社へ流れてしまいます。
そして、あらゆる高速で使いやすいアプリケーションの裏側には、無数の仕組みが存在します。Lee氏の言葉を借りれば、「今日のアプリケーションは、大量のデータを処理し、複雑な操作を実行し、データ要素間の多数の関係を維持し、トランザクション間の異なる状態を扱えなければならない」のです。
複雑なアプリケーションにはトラブルがつきものですが、キャッシュはそれらを最小限に抑えるために存在します。
無料eブック『Redisによる大規模キャッシング』を読む
『Redisによる大規模キャッシング』の中でLee氏は、キャッシングとは何か、なぜ・いつ必要になるのか、そしてアプリケーションが最高のパフォーマンスを発揮するためのキャッシング手法を紹介しています。
ユーザーがサービスにデータを要求すると、システムはストアからデータを取得し、その情報を呼び出し元へ返す一連の処理を実行します。しかしLee氏が指摘するように、この処理は非常に多くのリソースと時間を消費しがちです。特に、同じデータを何度も繰り返し取得する場合にはその傾向が顕著になります。
「代わりにキャッシュを使えば、複雑な処理が最初に実行された時点で、結果が呼び出し元に返されると同時に、そのコピーがキャッシュへ保存される。次回同じデータが必要になったときは、複雑な処理をやり直すのではなく、キャッシュから直接結果を取り出せるため、より速く、より少ないリソースで応答できるのだ。」
キャッシングが解決すること――そして完璧ではない理由
キャッシングは万能なデータストアではありません。アプリケーションのアーキテクチャは、アプリの規模や業界ごとのユースケースによって大きく異なります。ただしLee氏によれば、キャッシングが改善に役立つ主な要素として次の4つが挙げられます。
- パフォーマンス
- スケーラビリティ
- リソースの最適化
- 利便性と可用性
ただし、キャッシュを導入すれば自動的にこれらの効果が得られるわけではありません。
「多くの場合、キャッシングは価値をもたらさないこともあり、場合によってはパフォーマンスをかえって低下させることさえある」とLee氏は述べます。同氏が挙げる3つの潜在的な問題は以下のとおりです。
- キャッシングにより、対象操作が本来持つべき副作用がアプリケーションで実行されなくなる可能性がある
- キャッシュ内のデータ不整合が発生する
- キャッシュ自体のパフォーマンスが低下する
さらにLee氏は、キャッシュが有効に機能するためには一定の条件を満たしている必要があると指摘します(条件の詳細はeブック8ページを参照)。
「キャッシュを効果的に機能させるには、アプリケーションやデータソースにおけるデータアクセスの統計的な分布を深く理解することが不可欠だ」と同氏は強調します。
究極のキャッシングプレイブックで準備を整えよう
キャッシュが必要だと分かった今、この無料eブックこそが、Redisでキャッシュを構築・スケールするために必要な唯一の入門書となります。
Lee氏自身の言葉を紹介します。
「本書では、キャッシングとは何か、なぜそれが効果的な大規模モダンアプリケーションの礎となるのか、そしてRedisがどのように厳しいキャッシング要件に応えるのかを解説している。」
eブックを読み進めると、『Redisによる大規模キャッシング』はさまざまなキャッシング戦略の種類を取り上げ、特にクラウド環境において各戦略がどのように適合するかを、実践的な観点から丁寧に説明してくれます。
「アプリケーションを大規模環境でも高可用性に保つための方法やプロセス、テクニックは数多く存在しますが、キャッシングはそのほぼすべてにおいて中心的な技術なのです」とLee氏は語ります。
eブックの詳細については、公式ページをご覧ください。
-
Excelをスクレイピングツールとして活用!Webからデータを自動取得する方法
Webスクレイピングとは、Webサイトからデータや情報、画像などを自動的な手法で抽出することです。「全自動のコピーアンドペースト」と考えると分かりやすいでしょう。専用のアプリを作成・利用して、目的のWebサイトへアクセスし、必要な情報だけをコピーします。Webサイト全体をダウンロードするよりも、はるかに精密な収集が可能です。あらゆるツールと同様に、Webスクレイピングは善にも悪にも使われます。適切な用途としては、コンテンツに基づく検索エンジンのランキング作成、価格比較ショッピング、株式市場情報のモニタリングなどが挙げられます。リサーチツールとして活用するのも良いでしょう。ExcelでWebサイ
-
Windows 11/10でThumbs.dbキャッシュファイルの作成を防ぐ方法
ファイルエクスプローラーは、画像や動画ファイルが含まれるすべてのフォルダーに、隠しシステムファイル「thumbs.db」を自動的に作成します。これは、ユーザーがフォルダーを開くたびにサムネイルを生成する手間を省き、表示を高速化するための仕組みです。フォルダー内の画像のサムネイルをthumbs.dbファイルに保存しておけば、次回同じフォルダーを開いたときにすぐファイルを確認できます。しかし問題なのは、表示モードを変更してもWindowsがこれらのファイルをPC上に残し続ける点です。Windows 11/10にThumbs.dbファイルを作成させたくない方は、本記事の手順を参考にしてみてください。