AzureでのRedisEnterpriseの使用

NoSQLストレージには多くの種類があります。一部はドキュメントデータベースであり、その他はキーと値のペアを格納し、すべてがさまざまな種類のインデックスとクエリをサポートしています。ディスクベースのシステムと、メモリ内で動作するように設計されたシステムがあります。大量のデータを効率的に処理するものもあります。他の人はスピードを届けることに焦点を合わせます。非常に多くの異なる製品があるため、1つを選ぶのが難しい場合があります。

最も人気のあるインメモリシステムの1つは、リモートディクショナリサーバーであるRedisです。これは、RedisLabsが後援するオープンソースのRedisサーバー上に構築されており、一連の商用エンタープライズオプションを備えています。Microsoftは、AzureでのオープンソースRedisの独自の実装をしばらく前から提供しており、主に高性能キャッシュとして使用されています。ただし、最近、RedisLabsとのパートナーシップを発表し、フルマネージドのRedisEnterpriseスタックをMicrosoftのクラウドに導入しました。

RedisEnterpriseをAzureに追加する

新しいサービスは、既存のベーシック、スタンダード、プレミアムサービスにエンタープライズとエンタープライズSSDの2つの新しい層を追加することとしておそらく最もよく考えられています。MicrosoftのRedis実装は、大規模なクラウドネイティブアプリケーションでデータ用の高性能キャッシュを提供することに重点を置いています。このキャッシュは、コンテナ化されたシステムやサーバーレスシステムを構築するときに、イベント駆動型コードまたはセッション状態のメッセージを管理するのに役立ちます。

キャッシュは、受信データを管理するためだけのものではありません。最新のアプリは、ユーザーが定期的にアクセスするコンテンツをプリロードする方法としてそれらを使用できます。AzureのRedisに、ヘッダーやロゴなど、それほど頻繁に変更されない共通のアセットをプリロードできます。それらをメモリでホストすることにより、ページがロードされるたびにディスクからそれらをプルするのではなく、はるかに迅速に配信できます。

Redisの使用は、パフォーマンスがすべてです。キャッシュデータをインメモリシステムに配置すると、特に分散アプリケーションを大規模に構築して実行している場合に、アプリケーションのレイテンシを大幅に削減できます。RedisストアのコンテンツはAzureリージョン間で複製できるため、1つのリージョンのユーザーが世界の半分離れた場所に保存されているコンテンツにアクセスするリスクが軽減されます。

Redis用のAzureキャッシュから

Microsoftのオープンソース実装であるAzureCache for Redisには、Basic、Standard、およびPremiumがあり、Premiumデータベースの最大サイズは1.2TBです。 Basicは比較的単純な単一ノードの実装であり、SLAはありませんが、メモリサイズを選択できます。 Standardは、2ノードシステムを実装し、SLAを追加することで、信頼性を高めます。より良いパフォーマンスとより低いレイテンシーが必要な場合、プレミアムオプションは異なるグレードのAzureハードウェアを使用し、それ以外の場合は同じ構成であるものに対して標準よりも高いスループットを提供します。

AzureでRedisキャッシュを設定するのは簡単です。 DNS名から始めて、キャッシュをリソースグループに追加し、場所を選択します。これにより、基盤となる仮想マシンがセットアップされ、キャッシュが起動します。 Azureが実行中であると報告したら、コードで使用できます。 Redisに接続するために必要な資格情報は、アクセスキーと接続文字列とともにAzureポータルにあります。ポータルには、インスタンスのアドレスと、コードが接続する必要のあるポートが表示されます。デフォルトでは、これはSSL経由になります。

.NETアプリケーションでRedisを使用するためのさまざまなNuGetパッケージがあり、Redisキャッシュ内のアイテムを取得および設定したり、アプリケーションがRedisに接続されていることを確認したりできます。キャッシュ接続文字列を設定し、それを使用してRedisデータベースからキャッシュオブジェクトを作成するだけです。Visual Studioを使用している場合は、EntityFrameworkなどの使い慣れた.NETデータベースツールを使用してRedisを操作できます。

Redisベースのアプリケーションは、MVC(モデル、ビュー、コントローラー)パターンを使用して簡単に実装でき、コントローラーを使用してシリアル化されたデータをキャッシュに書き込み、必要に応じて読み取ることができます。マイクロソフトでは、データの書き込みと読み取りにJSON形式を使用することをお勧めします。返されたJSONデータは、一般的なJavaScriptおよび.NETライブラリを使用して簡単にフォーマットおよび表示できます。

Azure Cache for Redisは、監視を含む管理ツールの完全なセットが含まれているため、データベースやAPIのセット以上のものです。これらは、必要に応じてRedisインスタンスをスケーリングするのに役立ちます。階層をスケールアップできるのは、ベーシックからスタンダード、プレミアムに移行することだけです。

サイズの変更は個別の操作であり、同じ階層内でサイズを上下に変更できます(ただし、最小の標準サイズのオファリングにスケールダウンすることはできません)。階層を下げたい場合は、新しいRedisインスタンスを作成し、古いバージョンを削除する前に、データまたは構造を新しいデータベースにコピーします。スケーリングを自動化する必要がある場合は、PowerShellまたはAzure CLIを使用するか、Azure管理ライブラリを使用するコードを使用できます。

RedisEnterpriseのインメモリデータベース機能へのスケールアップ

AzureのRedis実装は優れていますが、それだけではありません。オープンソースのRedisに基づいているため、商用のRedisEnterpriseのすべての機能を備えているわけではありません。そのため、MicrosoftとRedisは協力して、Azure Portalに完全に統合された、Microsoftが管理し、両社がサポートする2つの追加層を提供しました。基本層であるEnterpriseは標準のAzureストレージを使用しますが、Enterprise SSD層は、メモリで利用できないデータへのより高速なアクセスのためにフラッシュストレージのサポートを追加します。

現在プライベートプレビューで、新しいサービスは主要なRedis Enterpriseモジュールのサポートを追加し、純粋にキャッシュされたデータよりもはるかに多くのサービスを使用できるようにします。高速なインメモリデータベースは、大規模なイベント駆動型システム、特に時系列データに依存するシステムの重要な部分であるため、これは重要な違いです。その他のサポートされている機能には、確率的データフィルタリングを追加するRedisBloom、およびインデックス作成を改善し、データで全文検索を使用できるようにするRediSearchが含まれます。

サービスがプライベートプレビューから一般提供に移行すると、追加機能が追加されます(現在2020年末に予定されています)。これらにより、地理的リージョン間でアクティブ-アクティブレプリケーションを使用したり、プライベートインスタンスとAzureでホストされたRedisインスタンス間で機能するハイブリッド展開を使用したりできます。オンプレミスとAzureRedisの間に専用の接続を確立する必要はありません。アクティブ-アクティブレプリケーションはVPN経由で機能します。

新しいRedisEnterpriseの実装は、ポータル内の既存のAzure Cache for Redisのように見え、既存のインスタンスからスケールアップすることも、最初から開始することもできます。より良いパフォーマンスを求めている場合は、スケールアップがオプションですが、新しいデータベース機能のいずれかを使用している場合は、まったく新しいインスタンスを作成することをお勧めします。ポータルから、またはAzure Resource Managerテンプレートを介して、作成プロセスの一部としてそれらを有効にできます。管理と監視の多くはAzurePortal内から行われますが、Redis独自の管理ツールを使用してデータの調整と最適化を支援するオプションがあります。

AzureのRedis実装とRedisLabsのRedisEnterpriseの組み合わせは、オープンソース基盤上に構築されたプレミアムオファリングを持つベンダーがハイパースケールクラウドとどのように共存できるかを示す興味深いものです。Azureは、オープンソースプラットフォームに基づくサービスを提供できますが、より複雑な実装ではRedisLabsのツールを使用できます。このルートにより、企業は、ライセンスモデルをクラウドプロバイダーを締め出すモデルに変更することなく、新しい収益源にアクセスできます。

AzureのRedisベースのキャッシュサービスからRedisEnterpriseへのシンプルなパスで、管理ツールや請求関係を変更することなく、エンドユーザーに対しても透過的です。作業方法を変更することなく、新しい層や新機能にアクセスできます。