支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


ElastiCacheについて

ElastiCacheの概要について記載します。

ElastiCacheとは

AWSが提供しているデータストアやインメモリキャッシュとして機能するサービスの事です。ユーザーアクションやクエリの読み込みと応答時間の改善や、ウェブアプリケーションのスケーリングに関連したコストの削減に役立ちます。

ElastiCacheの用語

・ノード:ElastiCache をデプロイするときの最小構成要素です。

・シャード:ノードの集合です。複数のノードが存在する時は1つのプライマリロール(読み取り/書き込み)を担当しその他はレプリカロール(読み取り専用)になります。

・クラスター:複数のシャードから形成されます。

ElastiCacheの特徴

・パフォーマンス:メモリ内にデータを格納し、データを読み出すため、ミリ秒未満の応答時間でデータ読み取りが可能です。

・管理の容易さ:AWSが管理しているフルマネージド型のシステムなので、ソフトウェアへのパッチ適用、セットアップ、設定作業、監視、障害復旧、バックアップなどの管理タスクが不要です。

・スケーラブル:需要に合わせてスケールイン、スケールアウト、スケールアップする事が可能です。

・互換性:オープンソースのデータストアであるRedis、Memcachedと互換性があります。

Redisの主な機能

Redis と互換性のあるインメモリデータストアサービスで、ミリ秒未満のレイテンシーを実現する非常に高速なインメモリデータストアで、インターネット規模のリアルタイムアプリケーションを強化します。

・柔軟なデータ構造:さまざまなデータ構造が用意されており、Strings、Lists、Sets、Sorted Sets、Hashes、Bitmaps、HyperLogLogsをサポートしています。

・多言語対応:Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、R、Go やその他多数の言語をサポートしています。

・レプリケーションによる高速化と可用性:プライマリ/レプリカアーキテクチャが採用され、データを複数のレプリカサーバーに複製できる非同期レプリケーションに対応しています。リクエストが複数サーバーに分散されるので読み取りパフォーマンスが向上し、プライマリノードに障害が発生すると、ElastiCache が自動的に障害を検出し、レプリカを選択して、新しいプライマリに昇格してくれるため障害復旧も実現できます。

・永続性:ポイントインタイムのバックアップをサポートしているためRedis データセットをディスクにコピーしており、永続的にデータを保存できます。

・スケーラビリティ:ノードのタイプを変更しダウンタイム無しで垂直スケーリング(スケールアップ、ダウン)する事や、クラスターのシャードの数を変更して、スケーリングプロセス中にも処理継続可能な水平スケーリング(スケールイン、スケールアウト)を使用できます。

・Pub/Sub:チャットルーム、リアルタイムのコメントリー、ソーシャルメディアフィード、サーバ間通信などで送信者が特定の受信者を想定せずにメッセージを送れるようなパターンマッチングを備えたpub/subメッセージングをサポートしています。

Memcachedの主な機能

Memcached と互換性のあるインメモリ key-value ストアサービスで、キャッシュやデータストアとして使用します。

・多言語対応:Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、R、Go やその他多数の言語をサポートしています。

・スケーラビリティ:Memcachedクラスターは、1〜20個のノードで構成されており、簡単に水平スケーリング(スケールイン、アウト)が可能です。垂直スケーリング(スケールアップ、ダウン)も可能です。

・マルチスレッドアーキテクチャ:複数の処理コアを使用可能で、コンピューティング性能のスケールアップが可能です。

エンジンのバージョン管理:クラスターを実行しているMemcachedのプロトコル準拠ソフトウェアに対して、アップグレードするタイミングをコントロールする事ができます。新しいMemcachedバージョンをアプリケーションでテストしてから本稼働にデプロイするなど、Memcachedバージョンとの互換性を維持しながら運用する事が可能です。

ワイヤプロトコル:バージョン1.5.10、1.4.34、1.4.33、1.4.24、1.4.14、1.4.5のMemcachedテキストとバイナリプロトコルをサポートしています。

最後に

主にElastiCacheの2種類の互換機能の概要について、調べてみました。Redisは永続的なデータ保存やデータバックアップが可能な高機能なキャッシュ機能で、Memcachedは一時的なデータ保存しかできないが、シンプルにサービスを高速化できるキャッシュ機能といった内容でした。単純にキャッシュ機能を求めるのであればMemcached、高度なデータ処理をしたり、障害に備えた安定したシステムを求めるのであればRedisを使うというような用途に応じた明確な使い分けをする事ができます。