Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OCHaCafe Premium OCI Cache with Redis

OCHaCafe Premium OCI Cache with Redis

oracle4engineer

December 06, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. OCI Cache with Redisでキャッシュ管理
    Kyotaro Nonaka
    Oracle Corporation Japan
    Dec. 6, 2023
    Oracle Cloud Hangout Café Premium #7

    View full-size slide

  2. Copyright © 2023, Oracle and/or its affiliates.
    2
    1.キャッシュ管理
    2.Redis概要
    3.Getting Started
    4.OCI Cache with Redis
    5.Demo
    Agenda

    View full-size slide

  3. Copyright © 2023, Oracle and/or its affiliates.
    3
    野中 恭大郎
    ソリューション・アーキテクト
    日本オラクル株式会社
    • AppDev/Messaging/NoSQL/Frontend
    • Oracle Cloud Hangout Caféメンバー/Oracle
    Groundbreakers Advocate
    • 某パッケージの開発者でした
    • Oracleにjoinしてもう4年半
    • 趣味は釣りとかキャンプとか(最近行けてない)
    @non_kyon

    View full-size slide

  4. Copyright © 2023, Oracle and/or its affiliates.
    4
    キャッシュ管理
    キャッシュとは?キャッシュ管理とは?

    View full-size slide

  5. Copyright © 2023, Oracle and/or its affiliates.
    5
    キャッシュ(Cache)とは…
    • ハードウェアまたはソフトウェアのコンポーネントで、データを保存しておくことで、そのデータに対するリクエスト
    をより速く処理できるようにするもの
    • キャッシュに保存されるデータは、以前の計算や処理の結果
    リクエストに対し、キャッシュから提供できるデータが多ければ多いほど、システムは高速に動作する
    (英Wikipediaより)
    キャッシュとは?

    View full-size slide

  6. Copyright © 2023, Oracle and/or its affiliates.
    6
    クライアントサイド
    • 静的なアセット
    • 画像
    • スタイルシート
    • スクリプト
    • 動的ウェブアプリのページ
    • ユーザー個別のコンフィグ
    サーバーサイド
    • データベースクエリの結果
    • APIレスポンス
    • グローバルなコンフィグ
    • テナントなどで共有する設定など
    キャッシュの種類

    View full-size slide

  7. Copyright © 2023, Oracle and/or its affiliates.
    7
    データベースやディスクではなく、RAMにデータを保存する
    • ディスクリードの回数を減らせる
    • アプリケーションのパフォーマンス向上が期待できる
    e.g.; ECサイトの商品リストなどをキャッシュしておくことでレスポンスタイムが向上し、UXの向上につながる
    インメモリ・キャッシュを利用する場合の注意点
    • インメモリに保存することになるので、シャットダウンや再起動などでデータは揮発する
    • 障害が発生した場合にも同様にデータが消えるので、バックアップやレプリケーションの戦略は考慮が必要
    • (インメモリに限らず)キャッシュの有無を考慮した実装が必要
    • e.g.; ECサイトで商品を追加した場合はキャッシュ・クリアを必ず行うように実装
    インメモリ・キャッシング

    View full-size slide

  8. Copyright © 2023, Oracle and/or its affiliates.
    8
    ネットワーク内の複数のサーバーやノードにまたがって
    データを保存するキャッシング
    • 高い可用性とスケーラビリティを必要とするアプリ
    ケーションに有効
    • 複数のサーバーがデータの保存と取得の作業負
    荷を分担し、データ損失のリスクを軽減
    • システムの管理は複雑で、複数のノード間で
    一貫性を確保することは困難な場合がある
    分散キャッシング

    View full-size slide

  9. Copyright © 2023, Oracle and/or its affiliates.
    9
    アプリケーションがキャッシュを管理する責任を負う
    • データがリクエストされると、アプリケーションはまずキャッシュを
    チェック
    • データがキャッシュにある場合は、それを利用
    • データがキャッシュにない場合は、データベースから取得
    • 将来の使用のために取得したデータをキャッシュに保存
    • キャッシュが常に最新であるように注意深く管理する必要あり
    キャッシュ戦略
    Cache-Aside
    Cache
    1. Cache check
    2. Return cache or not
    3. Get data
    4. Store Cache
    Application

    View full-size slide

  10. Copyright © 2023, Oracle and/or its affiliates.
    10
    キャッシュが主要なデータソースとして使用される
    • データが要求されると、まずキャッシュがチェックされる
    • データがキャッシュにない場合は、データベースから取得
    • 将来の使用のためにキャッシュに保存
    • データベースの処理速度が遅い場合や、データは頻繁
    に読み込まれるが更新が少ない場合に有効
    キャッシュ戦略
    Read-Through
    Application
    1. Read cache
    2. Read and store from database
    Cache
    Engine
    Cache

    View full-size slide

  11. Copyright © 2023, Oracle and/or its affiliates.
    11
    データはキャッシュとデータベースの両方に同時に書き込まれる
    • データが更新されると、キャッシュとデータベースに同時に書き
    込まれる
    • キャッシュには常に最新のデータが格納されることになる
    • 書き込み処理が遅くなる可能性がある
    キャッシュ戦略
    Write-Through
    Cache
    1. Write to cache
    2. Write to Database
    Application

    View full-size slide

  12. Copyright © 2023, Oracle and/or its affiliates.
    12
    データはまずキャッシュに書き込まれ、その後でデータベースに
    書き込まれる
    • 書き込み操作が高速化される
    • キャッシュが適切に管理されない場合、データの不整合
    が発生する可能性がある
    キャッシュ戦略
    Write-Behind
    1. Write to cache
    2. Write to Database
    Application
    Cache
    Engine
    Cache

    View full-size slide

  13. Copyright © 2023, Oracle and/or its affiliates.
    13
    キャッシュヒットの割合
    • バックエンドの代わりに
    キャッシュから処理され
    たリクエストの割合
    • 高いヒット率は、キャッ
    シュ戦略がバックエンド
    の負荷を減らすのに効
    果的であることを示す
    キャッシュ・イビクションの割合
    • 有効期限切れやイビク
    ションによってキャッシュ
    から削除されたキャッ
    シュの割合
    • この割合が高い場合は、
    キャッシュの有効期限が
    短すぎるか、キャッシュサ
    イズが小さすぎる可能
    性がある
    キャッシュの失効
    • キャッシュされたデータが
    キャッシュから削除され
    るまでの有効期限
    • 有効期限を長くすると、
    キャッシュのヒット率は向
    上するが、データが古く
    なるリスクが高まる
    • キャッシュの有効期限を
    短くすると、データが古く
    なるリスクは減るが、
    キャッシュのヒット率は下
    がる
    データの一貫性
    • キャッシュされたデータが
    古くなると、アプリケー
    ションの整合性が損な
    われる可能性があり
    • キャッシュされたデータを
    バックエンドのデータスト
    アにあるデータと比較す
    ることで、データの一貫
    性を監視可能
    キャッシュの効果測定

    View full-size slide

  14. Copyright © 2023, Oracle and/or its affiliates.
    14
    キャッシュ置換ポリシー
    LRU(Least Recently Used)
    • 最近使用されていないアイテムを最初に破棄
    • どのアイテムがいつ使われたかを追跡する必要がある
    MRU(Most Recently Used)
    • 最後に使用されたアイテムを最初に破棄
    LFU(Least Frequently Used)
    • 使用頻度が最も低いアイテムを最初に破棄
    • アクセスされた回数の値を保存する必要がある
    ARC(Adaptive Replacement Cache)
    • LRU と LFU を組み合わせる方式
    新しいキャッシュのためのスペースを確保するため、どのキャッシュを破棄するかを選択するポリシー

    View full-size slide

  15. Copyright © 2023, Oracle and/or its affiliates.
    15
    Redis 概要
    キャッシュエンジンのデファクト

    View full-size slide

  16. Copyright © 2023, Oracle and/or its affiliates.
    16
    • オープンソースのインメモリKVS
    • データベース/キャッシュ/メッセージブローカー/ストリーミングエンジン
    • 様々なデータ構造に対応
    • 文字列
    • ハッシュ
    • リスト
    • セット etc.
    • レプリケーション/Luaスクリプト/LRUエビクション/トランザクション/ディスク
    上の永続性
    • Redis Sentinelによる高可用性
    • Redis Clusterによる自動パーティショニング
    Redisって何?

    View full-size slide

  17. SQL(RDB)をやめようという意味ではなく、適材適所で
    非関係型データストアを利用していこうという意味
    「NoSQL」は「Not Only SQL」の略
    • RDBMS以外のデータベースの総称
    • RDBMS以外も使っていこうという運動の総称
    RDBMS以外という意味で、RedisもNoSQLの一種と
    言える
    ※NoSQLについては以前OCHaCafeで取り扱っております ⇒
    インメモリKVS = NoSQL?
    「NoSQL」が表す意味
    Document
    KVS
    カラム指向 グラフ
    key value
    key value
    key value
    ※JSON,XMLなど
    NoSQLが扱うデータ型
    Copyright © 2023, Oracle and/or its affiliates.
    17

    View full-size slide

  18. Copyright © 2023, Oracle and/or its affiliates.
    18
    Redisの特長
    MULTI、EXEC、
    DISCARD、WATCH
    というコマンドを中心に
    複数のコマンドを一度に
    実行
    Transacti
    ons SUBSCRIBE、
    UNSUBSCRIBE、
    PUBLISHコマンドによ
    るPub/Subの実装
    Pub/Sub
    サーバにLuaスクリプト
    をアップロードして実行
    可能、アプリケーションロ
    ジックの一部を移譲
    Lua
    scripting
    KeyにTTL(有効期間)
    を設定可能、キャッシュな
    どのデータが古くなりすぎ
    ることを防ぐ
    Keys with a
    limited
    time-to-live 新しいデータを追加すると
    きに古いデータを自動的
    に削除する
    LRU
    eviction of
    keys
    フェイルオーバープロセスを自
    動開始、レプリカがマスターに
    昇格され、他の追加レプリカ
    が新しいマスターを使用するよ
    うに再構成
    Automatic
    failover

    View full-size slide

  19. Copyright © 2023, Oracle and/or its affiliates.
    19
    String
    • 最も基本的なデータ型
    • Bitmaps/Bitfieldsと言ったStringsを拡張した
    データ型がある
    Lists
    • Stringのリスト
    • インサート順
    Sets
    • 一意のStringのコレクション
    • 順序付けなし
    Sorted Sets
    • 順序ありのSets
    Hashes
    • フィールドと値のコレクション
    • JavaのHashMapやPythonのdictionaryに似
    ている
    Streams
    • Append-only ログのように動作する
    • イベントの記録などに利用可能
    Geospatial Indexes
    • 座標の保存と計算
    HyperLogLogs
    • 大規模なセットのカーディナリティ(ユニークな値の
    数)の確率的推定を提供
    Redisのデータ型

    View full-size slide

  20. Copyright © 2023, Oracle and/or its affiliates.
    20
    マスター・レプリカ型のシンプルなHAソリューション
    • マスターはRead/Write、レプリカはRead Only
    • レプリカは複数構成可能
    レプリケーションは非同期
    • マスターとレプリカがうまく接続されている場合
    • マスターはレプリカにコマンドのストリームを送信
    • マスター側で発生したデータセットへの影響を複製し、レプリカの更新を維持
    • ネットワークの問題や、マスターやレプリカでタイムアウトを検知した場合
    • マスターとレプリカの間のリンクが切断されると、レプリカは再接続して部分的な再同期を試みる
    • 部分的な再同期が不可能な場合
    • レプリカは完全な再同期を要求する
    • マスターは全データのスナップショットを作成し、それをレプリカに送信
    • データセットの変更に合わせてコマンドのストリームを送信し続ける、より複雑なプロセスが必要
    Redisの可用性
    Replication
    Client
    master
    replica

    View full-size slide

  21. Copyright © 2023, Oracle and/or its affiliates.
    21
    人手を介さず、障害からの復旧を実現
    • 監視
    • マスターとレプリカが期待通りに動作して
    いるかを常にチェック
    • 通知
    • Redisインスタンスに問題があると、API
    を使ってシステム管理者などに通知
    • 自動フェイルオーバー
    • フェイルオーバープロセスを開始
    • マスターが期待通りに動作していない場合、
    レプリカがマスターに昇格
    • 他のレプリカは新しいマスターを利用するよ
    うに設定
    • Redisサーバを使っているアプリケーションが
    接続時に新しいアドレスを使うように通知
    Redisの可用性
    Sentinel
    Application
    Client
    master
    replica replica
    Sentinel
    Sentinel Sentinel
    相互監視
    通知
    Application
    Client
    replica ⇒ master replica
    Sentinel Sentinel
    マスターと認識
    アドレスを通知
    自動フェイルオーバー

    View full-size slide

  22. Copyright © 2023, Oracle and/or its affiliates.
    22
    マルチマスター構成による、より高度なクラスタ化
    • 拡張性
    • 最大1000ノード
    • 非同期レプリケーション
    • 書き込み安全性
    • マスターに接続されているクライアントからのすべての書き込みを保持
    • ベストエフォート方式
    • 可用性
    • マスターノードに障害が発生した場合は、同一Shard内のレプリカがマスターに昇格
    • レプリカ・マイグレーションによって、レプリカ・ノードをShard間でやり取り可能
    Redisの可用性
    Cluster Application
    Client
    master
    replica
    master master
    replica
    shard
    shard
    replica
    shard

    View full-size slide

  23. Copyright © 2023, Oracle and/or its affiliates.
    23
    • RDB(Redisデータベース)
    • 指定した間隔でデータセットのポイントインタイム・スナップショットを実行
    • AOF(Append Only File)
    • サーバーが受け取ったすべての書き込み操作をログに記録
    • これらの操作は、サーバ起動時に再度再生され、元のデータセットを再構築
    • Redisプロトコルそのものと同じフォーマットでログに記録
    • 永続化なし
    • キャッシュを行う場合などに使用
    • RDB + AOF
    • 同じインスタンスでAOFとRDBの両方を組み合わせる
    Redisのディスク永続化
    さまざまな永続化オプション

    View full-size slide

  24. Copyright © 2023, Oracle and/or its affiliates.
    24
    Redisのユースケース
    •事前定義の不正行為プロファイルとの比較
    •ユーザーのアクティビティ・データ
    •メタデータ
    •APIデータ
    リアルタイム不正検知
    •RDBの負荷を軽減し、高速な応答時間を確保
    •グラフィックス
    •画像
    •音楽
    モダン・ゲーミング
    •高速かつ柔軟なデータモデルによるリアルタイム在庫システム
    •商品
    •顧客
    •在庫/配送
    オムニチャネルEC
    •バックエンドのコスト軽減とユーザーの応答時間の短縮
    •ユーザコンフィグ
    •処理/計算の結果
    •静的アセット
    キャッシング
    •Pub/Subプロトコル
    •マイクロサービス間のメッセージ
    •チャット
    •フィード/コメント
    チャット/メッセージング/キュー
    •セッションデータを管理、認証/ユーザープロファイル/ロギングのパフォーマンス向上
    •ID
    •トークン
    •セッション・メタデータ
    セッションストア
    引用: Redis Use Case Examples for Developers

    View full-size slide

  25. Copyright © 2023, Oracle and/or its affiliates.
    25
    Getting Started
    Redisを始めてみる

    View full-size slide

  26. Copyright © 2023, Oracle and/or its affiliates.
    26
    デフォルトではv5がインストールされるので、v6をインストール(後にOCI Redisと接続するため)
    Redisのインストールと起動
    Oracle Linux 8
    $ sudo yum module list redis
    Last metadata expiration check: 2:15:30 ago on Tue 05 Dec 2023 05:55:52 AM GMT.
    Oracle Linux 8 Application Stream (x86_64)
    Name Stream Profiles Summary
    redis 5 [d] common [d] Redis persistent key-value database
    redis 6 common [d] Redis persistent key-value database
    $ sudo yum module enable redis:6
    === 中略 ===
    Is this ok [y/N]: y
    Complete!
    $ sudo yum module install redis

    View full-size slide

  27. Copyright © 2023, Oracle and/or its affiliates.
    27
    Redisの起動
    redis-cliを使って起動確認
    停止時はSAVEかSHUTDOWNを利用
    • SAVE: var/lib/redis(デフォルト)にdumpファイルを出力
    • SHUTDOWN: Redisを終了
    Redisのインストールと起動
    $ sudo systemctl start redis
    $ redis-cli ping
    PONG
    $ redis-cli save
    $ redis-cli shutdown

    View full-size slide

  28. Copyright © 2023, Oracle and/or its affiliates.
    28
    Redis CLIの起動
    SETコマンドでデータを保存
    GETコマンドでデータを取得
    Redisのデータ操作
    Redis CLI
    $ redis-cli
    $ SET bike:1 "Process 134“
    $ GET bike:1
    "Process 134"

    View full-size slide

  29. Copyright © 2023, Oracle and/or its affiliates.
    29
    Redis CLIでHashesを利用するのは分かりにくい・・・
    Redisのデータ操作
    Redis CLI
    $ HSET bike:2 model Deimos brand Ergonom type 'Enduro bikes' price 4972
    $ HGET bike:2 model
    "Deimos"
    $ HGETALL bike:2
    1) "model"
    2) "Deimos"
    3) "brand"
    4) "Ergonom"
    5) "type"
    6) "Enduro bikes"
    7) "price"
    8) "4972"

    View full-size slide

  30. Copyright © 2023, Oracle and/or its affiliates.
    30
    Java
    Redisのデータ操作
    Jedis
    • RedisのJava Client
    • Redis本体がスポンサー

    View full-size slide

  31. Copyright © 2023, Oracle and/or its affiliates.
    31
    Python
    Redisのデータ操作

    View full-size slide

  32. Copyright © 2023, Oracle and/or its affiliates.
    32
    Node.js
    Redisのデータ操作

    View full-size slide

  33. Copyright © 2023, Oracle and/or its affiliates.
    33
    Redisでは「foo」のような文字列から JPEG ファイルのコンテンツまで、任意のバイナリ シーケンスをキーとして使用可能
    キー設計の上で考えるべきこと:
    • 長いキーは避けるべき
    • 長いキーは、キーの検索の観点で、キーの比較にコストがかかる
    • 短すぎるキーも避けるべき
    • 一例として、「user:1000:followers」を「u1000flw」と短くする意味はない
    • キーを短くすることでメモリの消費量は確かに減るが、可読性と実装のし易さとのバランスを考える
    • スキーマ(=キー空間)を利用する形がプラクティス
    • 「object-type:id」のような形
    • 「.」や「-」を使って複数の単語はつなぐ
    • 最大キーサイズは512MB
    キー空間

    View full-size slide

  34. Copyright © 2023, Oracle and/or its affiliates.
    34
    OCI Cache with Redis
    Redisベースの新サービス

    View full-size slide

  35. フルマネージド・キャッシングサービス
    OCI Cache with Redis
    Copyright © 2023, Oracle and/or its affiliates.
    35
    ■ ユースケース
    • データをメモリにキャッシュし、低レイテンシでエンドユーザ
    にデータを提供
    ■ 特長
    • Redis 7.0.5 ベースのフルマネージドサービス
    • メモリ量とノード数のみ指定のシンプルなプロビジョニング
    • 1クラスタあたり5ノードまで
    • 1ノードあたり2GBから500GBまで
    • オンラインスケーリング
    • メトリクスの収集
    • 自動HA構成
    ■ 価格
    • 1GBメモリ利用1時間ごとに¥2.716(10GBまで)
    • 1GBメモリ利用1時間ごとに¥1.904(10GB以降)
    OCI Cache with
    Redis
    User
    API Service
    Containers
    Virtual
    Machine
    API Gateway
    AD/FD AD/FD AD/FD
    OCI Cache with
    Redis
    OCI Cache with
    Redis
    OCI Cache with
    Redis
    ユーザー
    アプリケーション
    /API
    キャッシュ層

    View full-size slide

  36. Copyright © 2023, Oracle and/or its affiliates.
    36
    OCI Cache with Redis の主な特長
    フルマネージド
    • 自動クラスタ構成
    • OSレベルパッチ
    • モニタリング
    • フェイルオーバー
    • SLA 99.95%
    圧倒的なシンプルさ
    • メモリ容量とノード数を指定する
    だけで、あとはすべてお任せ
    • ワークロードに合わせて正確な
    メモリ量を選択
    • 過剰プロビジョニングの必要なし
    スケーラビリティ
    • ダウンタイムなしでオンライン
    拡張
    • 1ノードあたり2GBから最大
    500GBまで、1クラスタあた
    り5ノードまで拡張可能
    自動HA
    • 2台以上のノードをデプロイす
    ると、OCIが自動的に分散
    • Multi-AD: AD分散
    • Single-AD: FD分散
    強力なインサイト
    •クラスタの健全性とパフォーマンス
    を監視するアウトオブボックス・メ
    トリクス
    •CPUとメモリの使用率にアクセス
    •ネットワーク・バイトの送受信を
    確認

    View full-size slide

  37. Copyright © 2023, Oracle and/or its affiliates.
    37
    クラスタの作成

    View full-size slide

  38. Copyright © 2023, Oracle and/or its affiliates.
    38
    クラスタの作成

    View full-size slide

  39. Copyright © 2023, Oracle and/or its affiliates.
    39
    ノードとメモリのリサイズ

    View full-size slide

  40. Copyright © 2023, Oracle and/or its affiliates.
    40
    現在(GA直後)の機能
    Feature Description
    マルチノードクラスター 単一のプライマリノードと複数のリードレプリカノードを持つクラスタを導入可能
    マルチAD/FD HAクラスタ パーティション・トレランスを持つ別ADのレプリカ・ノード
    自動障害検出 クラスタ内の1つ以上のノードがダウンすると、それを補うために新しいノードが自動的にクラスタに参加
    AD/FD停止時の
    自動フェイルオーバー
    マルチAD/FDシナリオの場合、AD/FDがクラスタから失われると、リード・レプリカが新しいプライマリに昇格し、DNSが新しいプライマリを指すように更新
    暗号化:in-transit ノード間通信のTLS暗号化とクライアント通信の暗号化をサポート
    リサイズ:クラスタサイズを小さくする オンデマンドでノードを削除
    リサイズ:クラスタ容量の拡大 ノードを追加してクラスタ全体のインメモリ・ストレージ容量を追加
    パフォーマンス:1ミリ秒の読み取り/
    書き込み動作
    1ミリ秒の読み取り/書き込み動作
    パッチ適用:ホストOSの自動パッチ
    適用
    顧客の操作なしでパッチを適用
    Redis API、コンソール、SDK、
    Terraformを介したクラスタとのイ
    ンターフェース
    Redis APIとの互換、標準的なRedis APIプロトコルをサポート、コンソール、SDK、TerraformからRedisにアクセス

    View full-size slide

  41. Copyright © 2023, Oracle and/or its affiliates.
    41
    現在(GA直後)の機能
    Feature Description
    インスタンスのヘルス・メトリクス OCI Monitoringとの統合
    コンプライアンス すべてのOCI基準コンプライアンスプログラムに準拠: FIPS、PCI、HIPAA、GDPR、SOC、ISO

    View full-size slide

  42. Copyright © 2023, Oracle and/or its affiliates.
    42
    シンプルで競争力のある価格設定で提供
    • ユーザが支払うのはノードあたりのGBのみ
    • ノード内の最初の10GBについては、1GB/時間あたり
    ¥2.716
    • 10GBを超える場合は、
    • 最初の10GBに対して¥2.716
    • そのノードの10GB以上のGBに対して¥1.904
    価格設定
    9GB Node
    9GB x ¥2.716 / GB / hr ->
    Total per
    node/h
    ¥24.444
    10GB Node
    10GB x ¥2.716 / GB / hr ->
    Total per
    node/h
    ¥27.16
    11GB Node
    10GB x ¥2.716 / GB / hr ->
    Total per
    node/h
    ¥29.064
    例:
    1GB x ¥1.904 / GB / hr ->

    View full-size slide

  43. Copyright © 2023, Oracle and/or its affiliates.
    43
    OCI Cache with Redis の使い方
    Back End
    Users
    エンドユーザーは、アプリケーション・イ
    ンターフェースを通じてデータの要求
    を開始
    Application
    アプリケーションは入ってくるリクエスト
    を受け、ユーザーとバックエンド間の
    データの流れを処理
    User
    API Service
    Application
    Virtual
    Machine
    Containers
    1 高速な処理: データ・リクエストを高速に処理、データがイン
    メモリで操作されるため、アプリケーションの応答性が向上
    2 適したデータ: 変更頻度が低く、頻繁に要求されるデータ、
    またはミッションクリティカル度が低く、頻繁に更新されるデータ
    3 データ・キャッシュ: データベースの負荷を軽減
    Redisはインメモリの速度
    を活用し、データベースや
    他のアプリケーションなどの
    バックエンドの負荷を軽減
    キャッシュヒット: Redisがデータを返す
    OCI Cache with
    Redis
    キャッシュミス:データベースなどを調べる
    Database
    etc.

    View full-size slide

  44. Copyright © 2023, Oracle and/or its affiliates.
    44
    アーキテクチャ
    OCI Region
    Availability Domain 1
    Fault Domain 1 Fault Domain 2 Fault Domain 3
    VCN
    Subnet A
    00.0.00.0/00
    Subnet B
    00.0.00.0/00
    Browser Load
    Balancer
    Microservices
    Microservices
    OCI Cache
    with Redis
    OCI Cache
    with Redis
    OCI Cache
    with Redis
    OCI Cache
    with Redis
    Cluster1
    Cluster2

    View full-size slide

  45. Copyright © 2023, Oracle and/or its affiliates.
    45
    プライマリ・エンドポイント
    • クラスタのプライマリ・ノードのエンドポイント
    • プライマリ・ノードとして構成されたインスタンスが変更された場合でも、常にプライマリとして構成されたノードに接続
    レプリカ・エンドポイント
    • クラスタのレプリカ・ノードのエンドポイント
    • このエンドポイントは常にレプリカとして構成されたノードに接続される
    • 複数のレプリカ・ノードを持つクラスタの場合は、毎回同じレプリカではない場合がある
    ノード・エンドポイント
    • 各ノード・インスタンスへのエンドポイント
    • プライマリ・ノードとなるインスタンスが変更されていることがあり得るので、このエンドポイントを利用する場合は、接続先のノードのタイプ
    (プライマリ or レプリカ)に注意する必要がある
    • 確実にプライマリ・ノードに接続したい場合は、プライマリ・エンドポイントを使用
    エンドポイント
    プライベート・エンドポイントを介してクラスタにアクセス

    View full-size slide

  46. 46 Copyright © 2023, Oracle and/or its affiliates.
    Business Challenge
    SmartVisit Solutions utilizes microservices architectures and need to enhance overall performance. By strategically
    caching frequently accessed data from diverse sources such as Oracle, MySQL, files, and other services, their
    solution effectively alleviates the burden on the backend database, resulting in substantial acceleration of read
    operations.
    With Redis acting as an intermediary layer between these disparate data sources and the microservices, SmartVisit
    Solutions optimizes data retrieval by storing commonly accessed information in memory. This approach eliminates
    the need for repetitive and potentially resource-intensive queries to the primary databases or file systems, thereby
    enhancing the speed and responsiveness of read operations.
    Results
    By implementing OCI Cache with Redis as a caching solution, SmartVisit Solutions empowers their microservices to
    efficiently serve data from the in-memory store, reducing latency and improving overall system performance. This
    caching strategy enables their solution to seamlessly handle a high volume of read requests while ensuring
    minimal strain on the backend infrastructure.
    - Enhanced Performance - Accelerated response times for read operations, elevating the overall application
    performance and enriching the user experience
    - Alleviated Database Burden: By efficiently delivering cached data from Redis, the strain on backend databases is
    substantially diminished.
    - Enhanced User Journey - Applications enjoy minimized waiting periods, resulting in a seamlessly responsive and
    exceptionally smooth user experience.
    Products Used
    OCI Cache with Redis
    serves as a reliable and
    high-performance
    caching layer within our
    microservices architecture
    at SmartVisit Solutions. By
    selectively caching
    frequently accessed data
    from diverse sources, we
    significantly optimize read
    operations, resulting in
    enhanced system
    efficiency and
    responsiveness.
    SmartVisit improves overall performance with OCI Cache with Redis
    Joon Daroy
    Development Manager – IT
    OCI Cache with Redis

    View full-size slide

  47. Copyright © 2023, Oracle and/or its affiliates.
    47
    Appendix: ロードマップ
    Feature Description
    Network Security Group (NSG) 顧客がVNICのイングレスとイグレスのルールを設定できるため、サブネット・アーキテクチャとアプリケーション・セキュリティ要件を分離可能
    Version 7.2 リリースノートを参照
    シャーディング データベース・キーのサブセットを別々のシャードに分散することで、スケーラビリティとパフォーマンスが向上
    Lua scriptのサポート luaスクリプト言語のサポートにより、Redisが実行可能な拡張機能を記述可能
    データの永続性 ディスク上にデータを永続化
    マイナーバージョンアップ
    自動マイナーアップグレード
    手動メジャーアップグレードと、メジャーアップグレードの前にテストが必要であることをお客様にお知らせ
    バックアップとパッチのための定期メンテナンス
    ウィンドウ
    バックアップとパッチのための顧客定義のメンテナンスウィンドウ
    Role-based Access Control (RBAC) ユーザーを作成し、特定のロールを割り当てることで、ユーザーグループによるクラスターアクセス制御が可能
    自動バックアップ
    データ紛失を防ぐための自動バックアップ作成機能
    ユーザーが選択したバックアップ頻度と保持期間で自動バックアップを作成
    エクスポートとリストア
    手動バックアップ
    データ紛失を防ぐための手動バックアップ作成機能
    エクスポートとリストア
    カスタムコンフィグ 動的および静的コンフィグ(ノードのリブートなどの定義)
    エクスポートとリストア バックアップをエクスポートし、Redisのバックアップから新しいクラスタにリストア
    オートスケール 必要に応じてクラスタをスケールアップ/ダウン
    クロスリージョン・レプリケーション リージョンをまたいだレプリケーション
    ベクターサーチ ベクトル検索対応
    サーバレスオプション ノードを意識しない構成オプション

    View full-size slide

  48. Copyright © 2023, Oracle and/or its affiliates.
    48
    Demo

    View full-size slide

  49. Copyright © 2023, Oracle and/or its affiliates.
    49
    クラスタの作成

    View full-size slide

  50. Copyright © 2023, Oracle and/or its affiliates.
    50
    クラスタの作成

    View full-size slide

  51. Copyright © 2023, Oracle and/or its affiliates.
    51
    redis-cli
    Redis CLIの起動
    SETコマンドでデータを保存
    GETコマンドでデータを取得
    python
    OCI Cache with Redisのデータ操作
    $ redis-cli --tls -h <プライマリ・エンドポイント>
    $ SET bike:1 "Process 134"
    $ GET bike:1
    "Process 134"

    View full-size slide

  52. Copyright © 2023, Oracle and/or its affiliates.
    52
    ご清聴ありがとうございました!

    View full-size slide