ビッグデータ時代のキャッシュ戦略~Azure Redis Cache とは?その可能性~

大量データを保存・分析するためには、その大量のデータをいかに高速にやり取りするかは重要です。その役割を担うものの1つが、Redis Cacheなど、高速にデータを読み書きできるNoSQLです。今回はRedis Cacheのクラウド型キャッシュサービスである、「Azure Redis Cache」の特徴や用途について詳しく解説していきます。

Azure Redis Cacheとは

従来、アプリケーションのデータはRDB(Relational Database)への保存が基本でした。しかし、RDBはデータの読み出し・書き込みに時間がかかるため、低遅延で大量のデータをやり取りする必要がある動的なWebアプリケーションには向いていません。そこでアプリケーション間で持ち回る情報をメモリ上に高速で出し入れできるNoSQLが活用されています。

NoSQLは、キーバリュー型(個々の組を識別する情報である「キー」と「キー」に対応する「バリュー」の2つのデータで構成されるデータモデル)でデータを保持し非常に高速でデータを読み書きできる技術で、大量のデータをまとめて処理することが可能です。SNSやリアルタイム更新タイプのニュースサイトなど、多くの大規模Webサービスで利用されています。

NoSQLの代表的なオープンソースのキャッシュソフトウェアとして「Redis Cache」「Memcached」などがあり、これらは数多くのプロジェクトで採用されています。そのクラウド版としてAzure上で利用できるRedis Cacheが、Azure Redis Cache(正式には「Azure Cache for Redis」)です。

キャッシュ技術をわざわざクラウドで利用する必要性に疑問を持つエンジニアもいますが、Azureクラウド上に保存された情報はMicrosoftの業界最高レベルの情報セキュリティ対策が施されているという情報セキュリティ面のメリットのほかに、また、キャッシュデータが永続化できるなどのメリットも享受できます。

では、詳しく特徴を見ていきましょう。

Azure Redis Cacheの特徴

Azure Redis Cacheの特徴は以下のとおりです。

マネージドサービスだからメンテナンスフリー

Azure Redis CacheはAzureクラウド上で動作するマネージドサービスです。これは強固な情報セキュリティを保ちながらも、少ない管理・運用の稼働でRedis Cacheを利用できるということを意味します。オンプレミスであれば、情報セキュリティ向上のためのバージョンアップやRedis Cache自体の問題が起きた場合の対応などをしなくてはいけませんが、その点、Azure Redis Cache はAzure上で動いているのでその対応を行う必要がありません。

リージョンレベルでの冗長化(Geo Replication)

Geo Replicationはリージョン(Azureが提供する稼働サーバーエリアのこと)ごとにキャッシュ情報を複製(レプリケーション)し、一次キャッシュと二次キャッシュとして利用できる機能です。プライマリである一次キャッシュがなんらかの理由でダウンしても、すぐにセカンダリ(二次キャッシュ)がカバーするため、継続的なWebサービスの安定稼働が期待できます。

クラスター化による高可用性

クラスター構成というと、データベースで利用されるのが一般的ですが、NoSQLにおいても有効です。クラスタリングとは、複数データベース(Radisの場合はキャッシュ)を統合して1つのデータベースのように扱う技術です。こうすることで、複数データベースで処理を分担してWebサービスの拡張性を高めることができます。また、クラスタリングすることでプライマリがダウンしてもセカンダリがフェイルオーバー(昇格)してシステムを維持することが可能です。

redis-cliやphpredisなどRedisクライアントからアクセス可能

Azure Redis Cacheへのアクセスのために特別なことをする必要はありません。一般的なアクセス方法で利用が可能です。また、redis-cliやphpredisといったRedis Cacheクライアントを使えるので、ソースコードの変更を最小限に抑えつつ導入できます。

お手軽スケールアップ・スケールアウト

Webサービスがスケール(拡大)するとRedis Cacheのパフォーマンスも見直すタイミングがやってきます。この修正を行う、作業のためにRedis Cacheを停止する必要があり、その際にメモリ上のデータが消失してしまいます。そのため、データをあらかじめバックアップしてから作業して最後にデータを復元する、という手間がかかります。
Azure Redis CacheならWebサービスを停止することなく、スライダーをいじるだけで簡単にスケールアップ・スケールアウトができます。

データのエクスポート、インポートが簡単

たとえば、「パフォーマンスが頭打ちになったためにRDBで扱っていたデータをRedis Cacheに乗せ換えたい」という場合に、RDBのデータをインポートするような要件が発生します。逆の場合も同様です。Azure Redis Cacheにはこういった要件にも対応できるように、エクスポート、インポート機能が搭載されています。

データの永続化も可能

Azure Redis Cacheは高可用性を実現するための機能も充実しています。通常、Redis Cacheデータは揮発(電源が切れると消失)するメモリ上で稼働しているデータですが、これをディスクに保存して永続化することができます。この機能によってデータのスナップショットを作成し、障害発生時にそのバックアップから復元する、といった使い方が可能です。

料金プラン

Azure Redis Cacheの料金プランには以下の3つがあります。

  • BASIC
  • STANDARD
  • PREMIUM

要件に合わせた柔軟なプランを選択できるのはユーザーにとっても嬉しいポイントです。また、あらかじめ容量の確定が可能な場合には、予約容量価格を利用することにより最大で55%までコストを削減ができます。詳細については公式サイトでご確認ください。

Azure Cache for Redis の価格(Microsoft Azure公式ページ)別ウィンドウで開きます

想定されるユースケース

ここでは、Azure Redis Cacheの具体的なユースケースを見ていきます。

データキャッシュ

Azure Redis CacheはRDBのシステムでも活用できます。
一般的にRDBのデータすべてをキャッシュとして持たせるということは難しいです。そこで、必要最低限のデータだけをRDBに登録し、残りはキャッシュに保存することで、RDBの負荷を下げるという手法が有効です。キャッシュされたデータはシステムがデータを更新すると同期的に更新されます。このように、Webサービスのスループットを改善する目的でAzure Redis Cacheを採用するメリットは大きいでしょう。

コンテンツキャッシュ

Webサイトはリアルタイムで更新されるテキストデータなどの動的データと、ヘッダー画像やバナーといった静的データに分かれます。この中で、静的データは滅多に更新されることがないため、キャッシュに読み込ませることにより、ページの読み込み速度を改善することができます。サーバー負荷を下げるためにも有効な手法です。

セッションストア

ログイン機能を持つWebサービスでは、履歴情報などのユーザー情報をCookieに持たせるのが一般的です。しかし、Cookieに持たせるデータが肥大化してくるとパフォーマンスが低下する恐れがあります。そのため、Azure Redis CacheにCookieを保存することで、Cookieが持つユーザー情報を高速にページ間で持ち回ることが可能になります。

ジョブおよびメッセージキュー

リアルタイムで処理しなくてもよい処理はバックグラウンドでタスクとして実行されるべきです。これはサーバーの負荷を分散するためで、バッチ処理などが代表的なものといえます。Azure Redis Cacheは、このバッチ処理のキューイングに使用できます。さらに、AWSやAzureといったクラウドサービスには、負荷にあわせて自動でスケールする「オートスケール」と呼ばれる機能があり、ある日のバッチ処理のキューが一定数を超える場合、自動でスケールさせるという運用も可能です。

分散トランザクション

Webサービスはいつも単一のデータベースだけを取り扱うわけではありません。要件によっては複数のデータベースのテーブルを更新する必要がある場合があります。この場合、通常のトランザクション処理では一連の処理をトランザクションとして追うことができません。そこで分散トランザクションで複数種類の処理をまとめることが求められます。Azure Redis Cacheはこの分散トランザクションをサポートします。

適切なキャッシュ戦略の構築がポイント

Azure Redis Cacheは高速なデータ処理をクラウド上で実現するためのサービスです。ただし、Azure Redis Cacheを有効活用するためには、単に速いからただ導入すればよいというわけではなく、どのデータをキャッシュするのか、そのデータは本当にキャッシュするべきなのかということをしっかり検討することが大切です。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る