[レポート] Redisの活用 #DAT374 #reinvent

2019.12.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本記事は、AWS re:Invent 2019 の「DAT374-S - Using Redis beyond caching」についてレポートします。

セッション情報

スピーカー

  • Alvin Richards - Chief Product Officer, Redis Labs
  • Brandon Mahoney - Enterprise Content Management Architecture | Information Technology & Operations, Alliance Data
  • Bhihanan Jeyaram - Software Engineer, Gap
  • Junaid Fakhruddin - Director of IT, Gap

セッション概要

With new use cases emerging every day and with wider adoption of microservices and cloud-native architectures, more complexities continue to shift to developers. In this session, representatives from Redis demonstrate how you can use Redis beyond caching to solve for some modern use cases. They also show you how to use Redis for event-based architectures to reduce some of these complexities. Finally, they discuss and demonstrate how to use conflict-free replicated data types (CRDTs) for geo-distributed deployments and use cases. This presentation is brought to you by Redis Labs, an APN Partner.

新しいユースケースが毎日出現し、マイクロサービスとクラウドネイティブアーキテクチャが広く採用されるにつれて、より複雑さが開発者に移行し続けています。 このセッションでは、Redisの代表者が、キャッシュを超えてRedisを使用して現代のユースケースを解決する方法を示します。 また、イベントベースのアーキテクチャにRedisを使用して、これらの複雑さを軽減する方法も示します。 最後に、地理的に分散した展開とユースケースで競合のない複製データ型(CRDT)を使用する方法について説明し、実証します。 このプレゼンテーションは、APNパートナーであるRedis Labsによって提供されます。

レポート

アジェンダ

  • Redisの歴史
  • Redis for Caching at Alliance Data
  • Redis for Inventory Management at Gap
  • Redis for Modern Data Models

Redisプロジェクトの11年間

  • 2009年に開発開始
  • 2018年に10億ダウンロード

  • Docker Hubで最も起動されたデータベース
  • AWSで最も使われているデータベース
  • Stack Overflowで最も愛されているデータベース

なぜRedisを使用するのか

データベースへの問い合わせは遅く、迅速にレスポンスを返却するのにRedisが使用される

AlilianceData

会社概要

  • 一流のカスタマイズされたロイヤルティおよびマーケティングソリューション
  • 365を超えるブランドのクレジットプログラムを管理
  • 顧客に合わせたマーケティングコミュニケーションソリューション
  • エンドツーエンドの買収を処理して、顧客にシームレスなエクスペリエンスを提供

ビジネスの現状

  • コンテンツ管理システムSDL Tridion
  • 各クライアントの数百万の個別コンテンツのリポジトリ

課題

  • 市場で競争力を維持する
    • 多くのフィンテック企業がイノベーションで業界に挑戦している
    • 俊敏性を維持し、業界をリードする

必要なもの

  • パブリッシングシステムを強化する、高性能でスケーラブルで安定したデータプラットフォーム/エンジン

マイクロサービスとRedis Enterprise

  • コンテンツ管理システムは10年前で、オリジナルのアーキテクチャはモノリシック
  • 最近、マイクロサービスアーキテクチャに移行

Redisと新アーキテクチャ

  • 1時間あたり20万件の発行トランザクションをプッシュ。 Redisは着信トラフィック〜41KB / Sおよび発信トラフィック〜1.2 MB / Sで〜1,000 Ops / Sを使用
  • 現在データセンターで実行中
    • 6つの展開サーバーと通信する6つの公開サーバー
    • 公開サーバーの相互通信は、Redis Enterpriseの6つの3ノードクラスターから同期
    • セルフサービスアプリケーションを提供する198のWebアプリケーションサーバー

なぜRedis Enterpriseなのか

  • 一流の24時間年中無休のエキスパートサポート
  • 少ないリソース、低いオーバーヘッド
  • シンプル、シームレス、スケーリングおよびクラスタリング
  • 安定した予測可能な高性能

Redis Enterpriseの利点

  • 数値結果
    • 以前の4倍のスループット
    • 平均70%のアップタイムから97%-99%のアップタイム
  • 定性的利点
    • 市場投入までの時間 -2日間のセットアップにより、業務を思い通りに進めることができ、心配する必要がない
    • クライアントのオンボーディングを合理化し、拡張を容易に - それ以外の場合は通過したクライアントを考慮することができる
    • トレーニングのしやすさ - 開発者は、Redisのことを聞いたことがない状態から、完全に実践的なものに簡単に移行できる

Next Step

  • 一貫性のあるRedis Enterpriseの標準化
  • Redis Enterpriseを使用した新しいチャットボットソリューションの構築

Gap Inc.の事例

Gapの規模

  • 世界中で3100以上の店舗と9つの流通センター
  • オンラインeコマースには、次のようなさまざまなフルフィルメントプログラムがあります
    • 店舗からの発送
    • オンラインで購入し、店舗で受取り
    • 店舗で注文
  • 読み取り/書き込み、IOPSを表す現在のデータ量
    • ノード/ SKUの組み合わせの合計数は、いつでも約5,000万〜8,000万
    • ノード/ SKUの組み合わせへの書き込み要求の数-500万更新/時間。 1日4700万件の更新
    • Node / SKUの組み合わせに対する読み取り要求の数-200万読み取り/時間。 1日1500万回の読み取り
    • 読み取りのレイテンシ〜40 ms

ビジネス要件として達成するために何を設定したか?

  • 配送業務とコストを最適化しながら、顧客にフルフィルメントの透明性と選択肢をリアルタイムで提供
  • 利害関係者にとってそれはどういう意味か?
  • 以下を含むがこれらに限定されないすべての要因を考慮して、検索ページと同じくらい早い段階で消費者を製品に接続する方法
    1. 合計および各場所での在庫数の可視化
    2. 過去および現在の稼働率に基づく在庫保護と容量
    3. グローバル規模での顧客フルフィルメント機能とオプションの場所
    4. すべての可能な出荷元の場所から顧客までの距離
    5. 正確で信頼性が高く、過去および現在のパフォーマンスに基づいた集配日

課題は何か

  • パフォーマンス
  • 大きなコードベース
  • 標準ではないインテグレーション
  • クリティカルパスシステム

どのようなアプローチをしたか

  1. イベントソーシングパターン-リアルタイムのインベントリアクセス用のAPIを提供する高速レイヤーにデータを移動
  2. 最適化されたデータレイヤーの読み取り-数百万件を超えるインベントリイベントを高速に検索および集約

結果は

  • 関連するすべてのクエリの応答時間は3ミリ秒 = 100倍の改善
  • 1秒あたり10万回の書き込み(0.5ミリ秒のレイテンシ)= 40倍の改善

Why Redis Labs?

競争力のある解決策を提供するさまざまなデータストアを確認した後、OSS Redisの8つの主要な特性に対する要件に従って、Redis LabsをRedisのエンタープライズサービスとして使用することにした。

まだ終わっていない

私たちは24時間365日稼働しており、船を浮かせたままにする最終消費者のために、最新の在庫状況のビジネス要件を満たしています。

  • What's next
    • 災害復旧フェイルオーバーの構成とテスト
  • 望ましいもの
    • Redisearch機能でサポートされるアクティブ/アクティブ構成またはRedis

Redis for Modern Data Models

直近24ヶ月の人気のデータモデル

Modern Data Models in Redis

  • Streams (core)
    • 主な機能
      • コンシューマグループ
      • 上限付きストリーム
      • アイテム削除
    • ユースケース
      • メッセージブローカー
      • イベントソーシング、CDC
  • RediSearch (module)
    • 主な機能
      • 全文検索
      • インデキシング、オートコンプリート
      • 集計、ランキング、ステミング
      • 拡張可能でモジュラー
    • ユースケース
      • 速い検索
      • マルチテナントインデキシング
  • RedisGraph
  • RedisTimeSeries
  • RedisBloom (module)
    • 主な機能
      • Bloomフィルター
      • Cuckooフィルター
      • Count-min sketch
      • Top-K
    • ユースケース
      • 認証
      • 広告配信、リーダーボード
  • RedisJSON
  • RedisAI

Redis Enterprise

ビジネスに必要なさまざまな機能が提供されている。

Why Redis for all your applications?

  • Developer
    • データ構造を持つコード
    • モジュールによる拡張性
    • 開発者向けに構築されたデータベース
  • Operator
    • ハイブリッドクラウド
    • TCO削減
    • 運用上の負担を最小限に抑える
  • 組み込みの高可用性

  • 無限にスケーラブル

最後に

Redis Enterpriseよりな話でしたが、色んな機能があることがわかりました。キャッシやPub-Subくらいでしか使ったことがなかったので新鮮でした。