こんにちは。かじです。
今回はElasticacheについて解説します。
Elasticacheは、AWSが提供しているキャッシュを行う機能です。キャッシュとは何ぞやという方に向けて、まずは、キャッシュの仕組みから説明してElasticacheの機能を説明していきます。
そもそもキャッシュとは
キャッシュとは、一度使用したファイルを保存して、再度利用することで処理速度を上げる技術です。
情報系の資格勉強をしているとキャッシュという言葉は、CPUがデータをメモリから取り出す際に両者の性能差を補うために使用するキャッシュメモリを指すことが多いと思います。
一旦その説明に則ってキャッシュの概念を理解してみましょう。
キャッシュメモリの例
CPUは処理を行う際に、データやら命令やらをメモリから取り出します。しかし、CPUに比べるとメモリは動作が遅く、メモリに問い合わせたデータが帰ってくるまで待っていたら、処理が高速化しません。
そのためにCPUとメモリの間にメモリより処理速度は早く、一度使用したデータを保持するキャッシュメモリを配置し、CPUはキャッシュメモリに最初に問い合わせるというようにします。
このようにすることによって、CPUは一度使ったデータであればキャッシュメモリを参照することで、いちいちメモリを参照する必要がなくなり、処理全体が高速化します。
ブラウザのキャッシュ
上記のキャッシュメモリの例はコンピュータ内部であまり馴染みが薄いかもしれません。身の回りのキャッシュの例として、ブラウザのキャッシュがあります。
WEBサイトを閲覧した時に、多くの画像やスタイルシート、スクリプトを読み込んでいます。読み込むたびに、HTTP通信をしていますので、それらの量が多くなると通信量も多くなり表示までの時間が長くなったりします。
そのため、ブラウザにもキャッシュ機能があります。
キャッシュのデメリット
よくWEBサイトを改修していると、変更が反映されていないということがあります。これは、ブラウザに保存されているキャッシュデータをブラウザが表示しているので、このような事象が起きます。
キャッシュは、都度一次情報であるファイルやデータを参照しない仕組みであるため、常に最新であるとは限りません。最新データと齟齬が生まれる可能性があるのが、キャッシュのデメリットになります。
WEBサーバーのキャッシュ
上記の2例と同様にWEBサーバーでもキャッシュがあります。処理に時間がかかるようなデータの取り出しについて、キャッシュでデータを保存しておき、クライアントに返すのがWEBサーバーのキャッシュになります。
そして、このキャッシュを実装する上で使用するオープンソースソフトウェアがRedisやMemchachedになります。そして、このキャッシュを提供しているAWSのサービスがElastiCacheになります。
ElastiCacheでは、RedisとMemchachedの両方を使用することが可能です。
EkastiCacheはキーに対して対応するデータを返すキーバリュー型です。
ElastiCacheの階層構造
ElastiCacheにはノード、シャード、クラスターという階層構造になっています。
ノード
ノードはElastiCacheの最小単位で、データが実際に保存される場所を確保しています。
シャード
次にシャードです。シャードは、ノードの1~6個の集まりで、ノードの内訳としては、1つはデータの更新と照会を行うプライマリノード、残りのノードはプライマリノードに行った更新がコピーされて同じ状態を保持するレプリカノードです。このような構成によって、ノードの処理性能や耐障害性が向上します。
クラスター
最後にクラスターです。クラスターは複数のシャードで構成され、シャードの内容が共有されることによって、複数のアベイラビリティゾーンにキャッシュが分散されるため、耐障害性が向上します。
今回はここまでになります。最後まで閲覧くださりありがとうございました。