AWS ElastiCacheとは?SAA頻出のキャッシュを解説

AWS ElastiCacheとは?SAA頻出のキャッシュを解説

表示が重いページの原因を考えるビジネスパーソンのイメージ
「ElastiCacheは、なにを速くする?」
「インメモリキャッシュって何?」
「RedisとMemcachedはどう選ぶ?」

人気のニュース記事を、何万人もが同じ瞬間に開く。毎回データベースへ取りに行っていたら、ページはどんどん重くなります。その渋滞を解くのがElastiCacheです。

Amazon ElastiCacheとは、よく使うデータを高速なメモリに置いて、読み取りを速くするマネージドサービスです。ディスクより速いメモリから返すことで、表示と応答をきびきびさせます。

 

この記事では、重いページの裏側からキャッシュの働きをつかみ、読み取りの流れを図でたどり、RedisとMemcachedの選び分けを対応表で並べます。最後にSAAでの判断まで、あなた向けに整理します。

 

1. 同じページが毎回重い、その裏側

同じ問い合わせが繰り返しデータベースに届くイメージ

多くの人が同じ内容を繰り返し読みに来るとき、毎回データベースへ取りに行くと、同じ問い合わせが何度もデータベースに殺到します。答えは毎回同じなのに、そのたびに奥まで往復する。ここに、大きなムダがあります。ElastiCacheは、この「よく読むデータ」を手前の速いメモリにコピーしておき、2回目以降はそこから返します。

 

たとえるなら、コンビニのレジ横の棚です。よく売れる商品なら、毎回店の奥へ取りに行かず、レジのすぐ手元から出してその場ですぐ渡せます。奥へ取りに行くのは、そこに置いていない商品だけ。ElastiCacheも、頻出の答えを手前に置いておき、奥のデータベースへの往復を減らします。

 

2. ElastiCache:よく使うデータを手前のメモリに

よく使うデータを高速なメモリに置くイメージ

キャッシュとは、何度も使うデータを近い場所にコピーしておく仕組みです。ElastiCacheはその置き場に高速なメモリ(インメモリ)を使うため、ディスクから読むよりずっと速く取り出せます。あなたのアプリの表示や応答が速くなるのは、このメモリとディスクの速度差から生まれます。データを電源が切れても残るディスクではなく、その場で高速に読めるメモリに置く——ここが「インメモリ」という言葉の意味であり、ElastiCacheの速さの源です。

 

ElastiCacheの核は、「同じデータを何度も読むなら、近くにコピーして往復を減らす」という一点です。読み取りが速くなるだけでなく、奥のデータベースに届く問い合わせそのものが減るので、システム全体の余力が生まれます。この副作用が、次の章で効いてきます。

 

あなたが押さえておきたいのは、キャッシュが効くのは「同じ答えが何度も求められる」データに限る点です。毎回内容が変わるデータや、一度しか読まれないデータをキャッシュしても、手前に置く意味がありません。読み取りが多く、内容が頻繁には変わらない——この2つがそろったデータこそ、ElastiCacheの得意分野です。だから商品ページやニュース記事のように「みんなが同じものを何度も見る」場面で、効果がはっきり出ます。

 

3. キャッシュの読み取りフロー

キャッシュを先に見て、無ければデータベースから取る流れのイメージ

キャッシュがどう効くのかは、読み取りの流れを追うといちばん分かります。まずキャッシュを見て、あればそこから返す。無ければデータベースから取り、その結果をキャッシュにも置く。次の図が、その分かれ道です。

 

リクエスト キャッシュにある? ヒット→即返す(速い) ミス→DBから取得しキャッシュに保存して返す Yes No

 

気をつけたいのが新しさの管理です。元のデータが変わったのにキャッシュを更新しないと、古い内容を返してしまいます。そのため、保持する時間(有効期限)をあらかじめ決めておくのが定石です。あなたがキャッシュを設計するときは、「どれくらい古くても許されるか」を先に決めておくと、事故を防げます。

 

4. RedisとMemcachedの選び分け(対応表)

RedisとMemcachedを対応表で選び分けるイメージ

ElastiCacheは、Redis と Memcachedという2つのエンジンから選べます。どちらもメモリ上でデータを扱いますが、できることの幅が違います。用途の複雑さで選び分ける、と捉えると迷いません。

 

観点 Redis Memcached
機能の幅 多機能・扱えるデータの形が豊富 シンプルで軽快
冗長化 複製や切り替えに対応しやすい 純粋なキャッシュ向き
向く場面 ランキングやセッションなど凝った用途 計算結果を一時的に置くだけ

 

ざっくり言えば、機能の豊かさや可用性が欲しいならRedis、とにかく速く軽く使いたいならMemcachedです。ログイン状態を覚えるセッションや、アクセスランキングのような形を持つデータならRedisが向き、単純な一時保存ならMemcachedで足ります。あなたは「凝ったことをしたいか」の一問で、まず当たりをつけられます。

 

近年はRedisが選ばれる場面が増えています。複製による冗長化や、多彩なデータの形を扱える柔軟さが、実運用で効くからです。あなたが迷ったら、まずRedisを基準に置き、「これはただの一時保存で十分」と言い切れる場合だけMemcachedへ寄せる——この順で考えると、選定でつまずきません。

 

5. SAAでの問われ方と、キャッシュかDBかの判断

SAAでのElastiCacheの位置づけを確認するイメージ

SAA(ソリューションアーキテクト アソシエイト)では、速く応答し負荷に耐える設計が問われます。ElastiCacheは「読み取りが多くて重い」「同じ問い合わせが繰り返される」「ミリ秒単位の応答が欲しい」場面で、有力な選択肢として登場します。問題文にこの言葉が出たら、ElastiCacheを思い出してください。

 

迷いやすいのが、AWS RDSとは のリードレプリカとの違いです。判断の軸はシンプルです。同じ答えを何度も返すならElastiCache(手前にコピー)、読み取り自体を複数のDBで分担するならリードレプリカ。さらに、そもそも高スループットなDBが要るなら AWS DynamoDBとは が候補になります。あなたがこの「キャッシュで速くするか、DBで分担するか、DBごと速いものにするか」の3択を持っておくと、高性能設計の問題は落ち着いて解けます。

 

次のステップ

ElastiCacheがSAAのどこで問われるかは、AWS SAAの試験範囲と勉強法ガイド で押さえられます。高性能設計での位置づけが見えてきます。

読み取り高速化の判断が定着したか試すなら、AWS SAA 高性能設計の問題集 で、読み取り高速化を問う設問に挑むと、判断の軸が固まります。