$30 off During Our Annual Pro Sale. View Details »

Coherence 概要

Coherence 概要

oracle4engineer
PRO

August 25, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. 日本オラクル株式会社
    Aug, 2023
    Oracle Coherence ご紹介

    View Slide

  2. 4
    1
    2
    Appendix) Coherence Operator
    Oracle Coherence 国内採用事例 (一部)
    Oracle Coherence 新機能ハイライト
    Oracle Coherence とは
    Agenda
    Copyright © 2023, Oracle and/or its affiliates.
    2
    3

    View Slide

  3. Copyright © 2023, Oracle and/or its affiliates.
    3
    Oracle Coherence とは

    View Slide

  4. 一般的なKVS
    インメモリ・キャッシュによる
    KVSアクセスn提供
    データベース負荷を下げ
    性能をの向上などに寄与
    Copyright © 2023, Oracle and/or its affiliates.
    4
    インメモリ
    キャッシュ
    データベース
    クライアント
    アプリケーション

    View Slide

  5. Oracle Coherence とは?
    Oracle の KVS 型
    インメモリ・データ・グリッド製品
    Copyright © 2023, Oracle and/or its affiliates.
    5
    インメモリ
    ストレージ
    データ処理
    アプリケーション
    連携システム
    クライアント
    アプリケーション
    大量データの高速処理を実装
    するためのアプリケーション基盤

    View Slide

  6. データ・グリッドの機能とは
    Copyright © 2023, Oracle and/or its affiliates.
    6
    • 複数マシン上で大量データを分散管理する分散
    データ管理機能
    分散データ管理
    • 分散された大量データを効率的に処理するための
    データ処理機能
    分散データ処理
    • 複数マシンを管理しスケールさせるための
    クラスタ機能
    クラスタ管理
    大量データを効率的に扱うためのアーキテクチャ
    3つの特長

    View Slide

  7. スケーラブルなインメモリ分散KVSをベースとしたJava VMベースのデータ処理アプリケーション・プラットフォーム
    • 分散データ管理
    • インメモリ分散Key-Value Store(KVS)
    • インメモリ・データ可用性
    • 拡張・縮退時の自律的なデータ・リバランス
    • 分散データ処理
    • データアフィニティ
    • In-Place Processing
    • データストア連携
    • イベント処理
    • .NET、C/C++、他豊富なクライアント言語に対応
    etc
    • クラスタ管理
    • 専用のクラスタ管理プロトコル(TCMP)
    • 動的な拡張・縮退
    • 自律分散型でSPOF/SPOBなし
    • 高速な障害検知
    Oracle Coherence
    Copyright © 2023, Oracle and/or its affiliates.
    7
    Native Client
    (Java, .NET, C++)
    WAN
    DB
    Native I/F JCache I/F
    JCache Client
    (Java)
    REST API
    Polyglot App
    Client
    サーバを跨る分
    散KVS
    In-Place
    Processing
    (処理の分散
    実行)
    他サイトの
    クラスタ
    データ
    ストア
    Web
    サービス
    データストア連携

    View Slide

  8. データキャッシュ用途からリアルタイム・イベント処理まで
    Coherence の主なユースケース
    アクセス性能改善、
    バックエンドのオフロード
    アプリケーション
    イベント処理型
    アプリケーション
    イベント処理ロジック
    イベント・ストリーム
    イベント・ストリーム
    高速データ分析・判定
    グリッド・コンピューティング
    データ集約型ロジック
    Copyright © 2023, Oracle and/or its affiliates.
    8
    大手ECサイト:カート/注文処理のDBオフロード
    大手家電量販店:商品情報アクセスのDBオフロード
    大手航空会社:空席照会のホスト負荷のオフロード
    メガバンク:為替レート情報のリアルタイム加工
    大手通信業:ユーザ認証/契約サービス判定
    インターネット・プロバイダ:課金処理の分散バッチ
    オンラインFX業:高速レート配信&取引
    大手通信業:ネットワーク回線監視・異常検知
    大手製造業:複合機監視・異常検知

    View Slide

  9. Partitioned Cache による分散データ管理
    • Partitioned Cache
    • データを格納するPartitionを複数のJVMに分散配置
    • 自動分散配置による動的スケール変更に対応
    • クライアントを含む全メンバがアクセス・ロジックを所持
    • 1 hop でデータアクセスが可能
    • データアクセスをパラレルに実施
    • データ更新、集計、フィルタ、In-Place Processing、etc.
    • Map型APIによる透過的なデータアクセス
    • java.util.Map を継承したシンプルなアクセス
    • クラスタ全体のデータに対してMapのみでアクセス
    • サーバ側へのアクセス・ロジックはAPI内部で隠蔽
    • 自動的にデータをリバランス
    Coherenceのデータ管理の基本的な仕組み
    Copyright © 2023, Oracle and/or its affiliates.
    9
    アプリケーション
    A B C D
    位置を意識しない
    透過的なアクセス
    JVM JVM JVM JVM JVM
    サーバ追加
    Coherenceデータグリッド
    E
    データ容量 & 処理性能を動的かつ均一に拡張

    View Slide

  10. データアクセスとデータ可用性の維持
    • ハッシュ・ベースで分散配置されたパーティション単位で管理され、配置ロジックがクラスタ全体で共有される
    • データ保持ノードをクライアントから直接特定してアクセス可能
    • バックアップは異なるマシン上に配置 = マシン・セーフ
    • クラウドの場合:異なるベアメタル・サーバ / FD / AD など
    • Get操作 (参照処理) はプライマリに対して実行、Put操作 (更新処理) はプライマリの更新とバックアップ更新を実行
    Coherenceの可用性担保の仕組み
    Copyright © 2023, Oracle and/or its affiliates.
    10
    Machine 1
    JVM 1
    P
    B
    JVM 2
    P
    B
    1 2
    3 5
    Machine 2
    JVM 3
    P
    B
    JVM 4
    P
    B
    3 4
    1 7
    Machine 3
    JVM 5
    P
    B
    JVM 6
    P
    B
    5 6
    2 8
    Machine 4
    JVM 6
    P
    B
    JVM 8
    P
    B
    7 8
    6 4
    Client JVM
    Coherence
    API
    Application
    get
    put

    B
    B A
    Coherenceクラスタ
    パーティション
    データ
    B バックアップ
    P プライマリ

    View Slide

  11. 障害時の振る舞い
    • 障害時はバックアップからパーティション単位で復旧
    • 障害復旧の最小単位はパーティション単位
    • 無くなったプライマリをバックアップから復旧(インメモリで昇格)
    • マシンセーフのためのプライマリの均等化(ネットワーク経由で再配置)
    • バックアップの再作成(ネットワーク経由でコピー)
    Coherenceの可用性担保の仕組み
    Copyright © 2023, Oracle and/or its affiliates.
    11
    1
    2
    3
    Machine 1
    JVM 1
    P
    B
    JVM 2
    P
    B
    1 2
    3 5
    Machine 2
    JVM 3
    P
    B
    JVM 4
    P
    B
    3 4
    1 7
    Machine 3
    JVM 5
    P
    B
    JVM 6
    P
    B
    5 6
    2 8
    Machine 4
    JVM 6
    P
    B
    JVM 8
    P
    B
    7 8
    6 4
    5
    6
    2
    8
    2
    6 5
    1
    1
    2 3
    3
    3
    3
    パーティション
    B バックアップ
    P プライマリ

    View Slide

  12. データベースやバックエンドとの連携
    • データ連携処理はCacheStoreの実装クラスを利用
    • 事前定義済みの JPA CacheStoreの利用
    • カスタムで実装した任意のCacheStore
    • 同期パターンを設定してCacheStoreの呼び出しタイ
    ミングを制御して外部データソースと連携
    • 読み取り
    • キャッシュ・ミス時にDBからデータを取得してキャッシュに格納
    (Read-Through)
    • 有効期限切れ前にデータをリフレッシュする設定可能
    (Refresh-Ahead)
    • 書き込み
    • 同期更新(Write-Through)
    • 非同期更新(Write-Behind)
    外部データソースとの連携
    Coherenceのデータソース連携
    Copyright © 2023, Oracle and/or its affiliates.
    12
    Object load(Object key)
    void store(Object key, Object value)
    void erase(Object key)
    アプリケーション
    put
    JVM
    A
    CacheStore
    JVM
    CacheStore
    JVM
    CacheStore
    JVM
    CacheStore
    B D
    A C
    insert/update
    Write-Through
    or
    Write-Behind
    DB
    get
    select
    Read-Through
    or
    Refresh-Ahead

    View Slide

  13. データの更新イベントに基づいた処理
    • データ変更に伴うイベント処理
    • データ更新によりトリガされる処理を登録
    • データ更新(insert/update/delete)イベントを受け取り、
    対象データを伴う任意のイベント処理を実行
    • フィルタによる対象データの絞り込みも可能
    • データ操作の種類
    • Key/Valueに対する条件
    • サーバ・サイドで利用可能なイベント処理
    • データ変更のイベント
    • EntryProcessorによるIn-Place処理イベント
    • Partitionの移動、etc.
    Coherenceのイベント処理
    Copyright © 2023, Oracle and/or its affiliates.
    13
    イベントリスナー
    アプリケーション
    Coherenceデータグリッド
    JVM

    JVM
    B
    JVM
    C
    JVM
    D
    ③ イベント通知
    ① リスナー登録
    ② データ変更
    Listener Listener
    Filter
    Event
    Event
    Event

    View Slide

  14. データを保持するサーバ内での分散データ処理
    • EntryProcessorによるIn-Place Processing
    • データの存在する場所(JVM)で処理を実行
    • クライアントによる無駄なデータ送受信や大量のデータ展
    開が不要
    • Partitioned Cacheではデータの分散に沿ったパラレ
    ル処理が可能
    • データの分散と合わせてデータの処理量も分散
    • スケール・アウトによりデータ量と処理性能を同時に拡張
    CoherenceにおけるIn-Place Processing
    Copyright © 2023, Oracle and/or its affiliates.
    14
    JVM
    Logic
    ① データを全件取得
    ② 全件データを展開 ④ 結果を格納
    ③ 全件データを集計
    【クライアント・サイドの集計処理】
    【EntryProcessorによるIn-Place集計処理】
    JVM
    ① 処理のInvoke
    ② キャッシュサーバ単位で
    並列に結果を集計
    ③ サーバ数分の結果を取得
    Logic
    ④ サーバ数分の
    結果を集計

    View Slide

  15. In-Place Processingによるパラレル処理を活用したクエリ機能
    • クエリ機能 = Key以外の条件によりデータを抽出する機能
    • クエリ条件をFilter APIで指定して該当データのコレクションを取得
    • 内部的にIn-Place Processingで実現される並列クエリ
    • データを持つ各ノード上でそのノードがもつデータのみに対してクエリ処理をパラレルで実施
    • クライアント側で結果がマージされる (マージ処理はAPI内で隠蔽)
    • 検索高速化のためのIndex作成も可能
    クエリ機能
    Copyright © 2023, Oracle and/or its affiliates.
    15
    JVM
    A
    クエリ
    実行
    Index
    Result
    A
    JVM
    クエリ
    実行
    Result
    A
    App
    JVM
    クエリ
    実行
    Index
    Result
    JVM
    E
    クエリ
    実行
    Index
    Result
    G
    D
    B
    C
    G
    G
    クエリ
    結果
    D
    D
    F

    View Slide

  16. Java EE/ASP.NETのHTTPセッション管理のスケーラビリティを向上
    • Coherenceの分散キャッシュを使用したHTTPセッ
    ション管理機能
    • アプリケーションの修正不要
    • HTTPセッション格納用のキャッシュをAPサーバとは別
    のJVMに構成
    • APサーバの負荷軽減
    • HTTPセッションのメモリ上限の向上
    • さまざまなAPサーバをサポート
    • WebLogic/GlassFish/JBoss/Websphere etc
    • ASP.NETセッション管理用にSession Providerを提

    Coherence*Web
    Copyright © 2023, Oracle and/or its affiliates.
    16
    ブラウザ
    Java EE
    Web App
    Java EE
    Web App
    Java EE
    Web App
    Java EE
    Web App
    ロードバランサ
    Webサーバ
    APサーバ
    Coherence分散キャッシュ
    (HTTPセッションを格納)

    View Slide

  17. 専用APIやREST APIなど任意のアプリケーションから容易にアクセス
    Extend Proxyを経由することで様々な言語のクライアントからのアクセスを実現
    クラスタ内からのクライアントアクセス
    ① Coherence API によるアクセス
    • Javaクライアントのみ対応
    Extend Proxyを経由したクラスタ外からのアクセス
    ② Coherence API によるアクセス
    • Java、C/C++、.NETに対応
    ③ REST APIによるアクセス
    • RESTアクセス可能な任意の言語に対応
    ④ Memcached APIによるアクセス
    • Memcached APIが利用可能な言語 (PHP、Perlなど)
    多言語アプリケーションからのアクセス
    Copyright © 2023, Oracle and/or its affiliates.
    17
    Coherenceデータグリッド
    JVM
    Java Client
    Coherence API
    (JAVA) JVM
    C/C++ Client
    Coherence API
    (C/C++) JVM
    .NET Client
    Coherence API
    (.NET) JVM
    Generic Client
    JVM
    PHP/Perl Client
    Memcached API
    JVM

    JVM
    B
    JVM
    C
    JVM
    D
    JVM
    Extend Proxy
    JVM
    Java Client
    Coherence API
    (JAVA)
    Memcached
    Adapter
    Coherenceクラスタ

    ② ② ② ③ ④

    View Slide

  18. スケーラブルなインメモリ分散KVSをベースとしたJava VMベースのデータ処理アプリケーション・プラットフォーム
    • 分散データ管理
    • インメモリ分散Key-Value Store(KVS)
    • インメモリ・データ可用性
    • 拡張・縮退時の自律的なデータ・リバランス
    • 分散データ処理
    • データアフィニティ
    • In-Place Processing
    • データストア連携
    • イベント処理
    • .NET、C/C++、他豊富なクライアント言語に対応
    etc
    • クラスタ管理
    • 専用のクラスタ管理プロトコル(TCMP)
    • 動的な拡張・縮退
    • 自律分散型でSPOF/SPOBなし
    • 高速な障害検知
    Oracle Coherence
    Copyright © 2023, Oracle and/or its affiliates.
    18
    Native Client
    (Java, .NET, C++)
    WAN
    DB
    Native I/F JCache I/F
    JCache Client
    (Java)
    REST API
    Polyglot App
    Client
    サーバを跨る分
    散KVS
    In-Place
    Processing
    (処理の分散
    実行)
    他サイトの
    クラスタ
    データ
    ストア
    Web
    サービス
    データストア連携

    View Slide

  19. データベース変更をCoherence上にプッシュ
    • GoldenGate HotCache
    • バックエンドDBが直接更新された場合、Coherence上のデータとの不整合が発生
    • GoldenGate HotCache機能を利用することで、リアルタイムにDB変更をCoherenceに反映
    Oracle Coherence GoldenGate HotCache
    Copyright © 2023, Oracle and/or its affiliates.
    19
    Tables
    Coherence Cache
    Database
    HotCache
    TopLink
    Capture
    DBアクセス・
    アプリケーション
    SQL
    Insert/update/delet
    e
    REDO
    GoldenGate
    GoldenGate
    JVM JVM JVM
    Coherence
    アプリケーション
    Get
    Coherence
    レイヤー
    DB
    レイヤー
    Trail
    DB更新の
    Push連携

    View Slide

  20. データセンタやクラウド間を跨いだクラスタ間連携
    • クラスタ間でのデータ同期処理
    • 双方向でのデータ更新が可能(競合解決のルールを組み込み可能)
    Federated Cache: メモリデータの拠点間レプリケーション
    Copyright © 2023, Oracle and/or its affiliates.
    20
    Coherence Coherence
    ×
    Active
    Application
    Coherence Coherence
    Active Active
    2つの用途の両立
    業務継続性、DR 各拠点の性能最適化
    Coherence Coherence
    Active Active
    Coherence
    ×

    View Slide

  21. ディスク・ストレージを利用したキャッシュ情報の永続化
    • Coherence上のインメモリ・データおよび関連するメタ
    データを耐久性の高いDisk上に保存
    • メタデータ: Index、Lock、Listenerなど
    • クラスタ障害時には、Disk上のデータから高速に復旧
    可能
    • 2種類の永続化モード
    • On-Demand: 必要時にスナップショットをストレージに
    保存。スナップショットをアーカイブし、任意のスナップショッ
    トに復元可能
    • Active: データ更新はリアルタイムアトミックにDiskに保存
    • トポロジ
    • ローカルDisk / SAN
    • 操作ツール・監視ツールを各種提供
    • Mbean/JVisualVM-PlugIn/CohQL/WLST
    Persistence
    Copyright © 2023, Oracle and/or its affiliates.
    21
    Application
    In-Memory
    On-Disk
    SAN
    Archiver
    Snap
    shot
    Snap
    shot
    Snap
    shot
    Snap
    shot
    Snapshot
    Archive
    Coherence Cluster
    JVisualVM-PlugIn
    モニター/操作
    On-Demandモード

    View Slide

  22. Copyright © 2023, Oracle and/or its affiliates.
    22
    Oracle Coherence 新機能ハイライト

    View Slide

  23. のコンテナによるプロダクション環境に対する商用サポートを提供
    商用コンテナ環境に対するCertification
    • Coherence 12.2.1.3 以降のバージョンからサポート
    • CRI-O/Docker/Kubernetesに対応 (※1)
    Oracle 公式レジストリにてイメージを提供 (※2)
    • Oracle 公式レジストリ:https://container-registry.oracle.com
    • [Middleware]->[coherence] から取得可能
    コンテナ環境上でのライセンス条件
    • 従来のOracle Partitioning Policyに準拠
    • Kubernetes環境の場合ラベルによる制御によりライセンス対象の絞り込みが可能
    https://www.oracle.com/a/tech/docs/running-and-licensing-programs-in-containers-and-kubernetes.pdf
    Coherenceのコンテナ化対応
    Copyright © 2023, Oracle and/or its affiliates.
    23
    ※1:Supported Virtualization and Partitioning Technologies for Oracle Fusion Middleware
    https://www.oracle.com/middleware/technologies/ias/oracleas-supported-virtualization.html
    ※2:後述の Coherence CE版のイメージは GitHub 上にて公開
    https://github.com/oracle/coherence/pkgs/container/coherence-ce

    View Slide

  24. https://github.com/oracle/coherence-operator
    • Kubernetesに対する操作でCoherence構成をデプロイ
    • Coherenceイメージにアプリケーションを組み込み利用
    • クラスタ・メンバ・ロールごとのスケール制御に対応
    • Cache Sevrer/Client/Extend Proxy, etc.
    • クラウド上での利用を想定した可用性構成に対応
    • Kubernetesゾーンを考慮した可用性構成
    • Kubernetesクラスタを跨ぐフェデレーション構成
    • 標準的なOSSスタックによるCoherenceクラスタの管理
    • Prometheus/Grafanaによるメトリクス監視
    • Fluentd/Elastic Stackによるログ連携
    Coherence Operator for Kubernetes
    Copyright © 2023, Oracle and/or its affiliates.
    24
    Kubernetes Cluster
    REST Management
    Coherence Cluster
    POD 1 POD 5
    Coh
    POD 2
    Coh
    POD 3
    Coh
    POD 4
    Coh Coh
    Operator
    Kubernetes

    View Slide

  25. Subscriber Group
    Coherenceデータグリッドを活用したPublish/Subscribe型のメッセージング
    • NamedTopicによる透過的なメッセージング
    • トピック・メッセージはデータグリッド上に分散配置
    • NamedTopicでメッセージ配置を意識せずにアクセス
    • 100,000~ msg/sec 規模の高速メッセージング
    • 2つのモードのメッセージング
    • アクティブ・サブスクライバ全体への配信
    • キューを経由したサブスクライバ・グループへの配信
    • サブスクライバ・グループ・メンバの1つに対してのみ配信
    • ローカル・ストレージを利用した永続化に対応
    • Publisher/Subscriber共にクラスタ・メンバのみ (※)
    Coherence Topics
    Copyright © 2023, Oracle and/or its affiliates.
    25
    JVM JVM JVM JVM
    Coherenceデータグリッド
    Subscriber
    Group
    Named Topic
    Subscriber
    Publisher
    Subscriber
    ※Extend Proxyによるクラスタ外のPublisher/Subscriberは将来対応予定

    View Slide

  26. Coherenceに対する操作に対するトレーサビリティ
    • Coherenceに対する各操作のトレース情報を出力
    • NamedCacheやイベント・リスナーによる処理イベント
    • CacheStore処理や永続化の操作、etc.
    • OpenTracing 対応ライブラリと連携したトレーシング
    • TracerResolverにより検出したTracerを利用 (Jaeger client等)
    • TracerFactoryによるTracerも組み込み利用も可能
    • 2種類のトレースのモード
    • アプリケーション開始の外部Trace Spanへの抽入
    • Coherence側で開始するTrace Spanでの収集
    OpenTracing 対応
    Copyright © 2023, Oracle and/or its affiliates.
    26

    View Slide

  27. GraalVMランタイムのサポートとPolyglot Coherenceアプリケーション
    GraalVM サポートと多言語対応
    Copyright © 2023, Oracle and/or its affiliates.
    27
    VMランタイムとしてのGraalVMサポート
    • Coherenceサーバ、クライアントでのGraalVMサポート
    • GraalVM Enterprise Editionと組み合わせて利用
    Coherenceアプリケーションの多言語対応
    • Coherenceサーバに組み込むアプリケーションをJava以外で
    記述して呼出し可能
    • Filter
    • EntryProcessor
    • ValueExtractor
    • Aggregator
    • 現時点ではJavaScriptに対応 (今後拡充予定)

    View Slide

  28. Coherenceの基本機能を無償で利用可能なオープンソース版として提供
    • GitHubより任意に入手可能:https://github.com/oracle/coherence
    • Maven CentralやDocker Hubでもアーティファクト/イメージを提供
    • Coherence CommunityによるSlackチャネルでのサポート (※)
    • オープンソースとしてのリリースサイクル
    • 6か月単位でリリース (開発中の機能含む)
    • 次期リリースが提供されるまでサポート
    Coherence Enterprise Edition 機能のサブセットを利用可能
    • Coherenceのコア機能を全て利用可能
    • Partitioned Cache, クエリ、イベント通知、In-place Processing、Cache Storeによるデータ連携、etc.
    • 利用できない機能
    • WebLogic Serverとの連携機能
    • Grid Editionの機能 (HotCache、Federated Cache、etc.)
    Coherence Community Edition (Coherence CE)
    Copyright © 2023, Oracle and/or its affiliates.
    28
    ※Coherence Enterprise Edition等の商用ライセンスによりMyOracle Supportでの問い合わせも可能

    View Slide

  29. Coherence 各エディションの主要機能
    主要機能
    Standard
    Edition One
    Community
    Edition
    Enterprise
    Edition
    Grid
    Edition
    高い可用性のデータキャッシュ機構 Y Y Y Y
    データ管理 - 非同期更新(Write-Behind), データアフィニティ, イベントによる処理 Y Y Y Y
    複数のキャッシュ実装 (Local cache, Near cache, Continuous Query Cache) Y Y Y Y
    完全にレプリケート(複数化)されたデータ運用管理 Y Y Y Y
    データの分散管理 (Partitioned Cache) ※2 ノードまで Y Y Y
    外部データソースとの自動連携 (Read-Through/Write-Through/Write-Behind Caching) Y Y Y Y
    データの安定保存とリカバリー可能なキャッシング Y Y Y Y
    Hibernate連携 Y Y Y Y
    REST API /memcached API / JChashe によるクライアントアクセス Y Y Y Y
    Java のリアルタイム・データ・クライアント Y Y Y Y
    .Net および C++ のリアルタイム・クライアント N Y Y Y
    キャッシュのスケールアウト、クエリ、アグリゲーション N Y Y Y
    JTAトランザクション処理(インメモリでの高速トランザクション処理) N N Y Y
    WebLogic Server Management Framework の利用 N N Y Y
    Grid Archive (GAR) の生成とデプロイ N N Y Y
    アプリケーションサーバのHTTPセッション管理(Coherence*Web) N N Y Y
    TopLinkとの連携によるリレーショナルデータへの高速アクセス N N Y Y
    ワークマネージャ機能(アプリケーションの自動安定運用) N N Y Y
    無制限のリアルタイム・コンピュート・クライアント N N N Y
    Elastic Data N N N Y
    GoldenGate ホットキャッシュ N N N Y
    マルチテナント N N N Y
    WANサポート(Federated Cache)による拠点間レプリケーション N N N Y
    Copyright © 2023, Oracle and/or its affiliates.
    29
    New!

    View Slide

  30. Copyright © 2023, Oracle and/or its affiliates.
    30
    Oracle Coherence 国内採用事例 (一部)

    View Slide

  31. • 高い更新性能(0.5ms/件)を
    リニアに拡張できるスケーラ
    ビリティを検証フェーズで実証
    → ユーザー数の増加や市況
    変化に対して対応計画を
    描きやすい
    • DBやディスクに永続化せずに
    高可用性を実現
    • 国内外での稼動実績とコンサル
    ティング実績
    • Coherence、WebLogic、
    JRockit Mission Control
    Oracle RAC を活用
    世界最高レベルのFXシステムにむけた超高速オンライン処理
    ヒロセ通商様「LION FX」 - フラクタルシステムズ株式会社様 「U-Forex1」-
    31
    ビジネス側のニーズ
    • 顧客サービスの拡充並びに顧客ディーリング収益の追求
    • 約定性能向上
    • リスク管理の徹底(ロスカット、値洗処理の短縮)
    • ポジションの高速集計と敏速なカバー取引の実行
    システム側のニーズ
    • データベースに依存した設計によるボトルネック解消
    • 大量トランザクションへの対応
    • 高拡張性と高可用性、システムの安定化を実現
    • 計算処理の高速化
    増加する外国為替取引に追従するシステムの拡張性、IT監査に対応する運用システムモデル
    LION FX (ヒロセ通商様のFXサービス) として U-Forex1 を採用
    イベントリスナー
    フロント処理
    バック処理
    • Coherenceのデータパーティショニングに
    より注文リクエスト受付を負荷分散
    →ノード追加でスループット向上
    • WebLogic Server を経由して
    注文を受付(1000TPS)
    • マッチング、ポジション更新を高速化
    • ポジション集計を秒間100回で実行
    • データをインメモリ保持して高速性を維持
    しながら高信頼性も担保
    - フロント :レート、注文データ
    - バック :ポジション、注文データ
    レート配信
    2000レート/秒
    注文
    管理
    注文
    管理
    RAC
    RAC
    発注
    マッチング
    エンジン
    • Coherenceのイベントリスナーで
    注文のマッチング処理を呼び出し
    プロジェクトの背景と目的
    オラクル選定理由 オラクル導入範囲
    Copyright © 2023, Oracle and/or its affiliates.

    View Slide

  32. • 複数サーバーを横断する共有
    メモリ層を容易に構築できた
    - 評価版をダウンロードした後、
    サンプルを見ながら1時間
    程度で使える目途がついた
    - 本実装も1.5カ月で完了
    • 十分な性能と可用性、拡張性を
    実証
    • ミッションクリティカルに応えられる
    ベンダーのサポート力
    東証「arrowhead」対応サービス基盤
    楽天証券様 「マーケット・スピード」 フル板情報サービス
    32
    ビジネス側のニーズ
    • 東証「arrowhead」に対応した新サービスを提供したい
    • プロの証券マンが使うようなフル板情報(各銘柄における売り
    買いの全情報)を、他社に先駆けて個人投資家にも提供したい
    システム側のニーズ
    • 可用性と高い処理性能は必須要件
    • 新しいサービスに巨大な投資は避けたい
    • 今後の利用会員数の増加に容易に対応できるアーキテクチャで検討したい
    東京証券取引所の取引システム強化に対応した新サービスの提供
    フル板情報配信
    フロント処理
    サーバー 認証セッション管理
    顧客/
    契約情報
    • 利用会員数の増加に容易に対応可能
    • 内部的な冗長化による高い耐障害性
    • 契約状況と認証
    チェックの後、
    認証キーを取得
    配信ベンダー
    発注
    リクエスト処理
    • キーで認証された
    クライアントへ情報
    配信を実施
    東京証券取引所
    プロジェクトの背景と目的
    オラクル選定理由 オラクル導入範囲
    Copyright © 2023, Oracle and/or its affiliates.

    View Slide

  33. Copyright © 2023, Oracle and/or its affiliates.
    33
    三菱東京UFJ銀行様
    • Oracle Coherence、
    WebLogic Server & Database
    • 毎秒数百件の外国為替レート更新を
    受信し、連続的な加工・計算を
    ストレスなく安定的に処理
    • 国内の災害対策拠点にインメモリ
    通信で情報を複製
    Fast Data 活用例
    外国為替レート情報のリアルタイム加工・配信処理を実現
    外部
    レート情報
    行内
    システム
    加工・計算処理
    配信
    処理
    受信
    データ
    配信用
    データ

    View Slide

  34. • インメモリグリッドの国内外の豊富
    な実績
    • 単一ボトルネック点のないアーキ
    テクチャ(アクセス増加に対し
    安定した性能を確保)
    • 単なる性能改善だけでなく今後の
    サービス拡充に活用可能な柔軟性
    • 無停止アプリ入れ替え
    (WebLogicプロダクション
    再デプロイメント機能)
    収益を左右する重要な顧客フロントシステムの改善
    全日空様 「ANA SKY WEB」 (www.ana.co.jp)
    34
    システム上のニーズ
    • バックエンド・ホストへのアクセス負荷を軽減したい。(ホストの増強はもうストップしたい)
    • メンテナンス時もサービス影響を最小化したい。
    • 今後のビジネスを支え続けられるシステム基盤を確立したい。
    突発的な大量アクセスによるバックエンド負荷対策 → データグリッドによる確実かつ安定したレスポンスの維持
    ホスト
    WebLogic • セッション管理層
    - 大量アクセスに対処
    可能なキャパシティ
    - セッションの
    信頼性向上
    • 空席情報を
    ホストからロード
    • 応答性能: 約10倍の改善
    • ピーク時処理の安定化
    (バーゲン時の空席照会
    リクエストに十分に対応)
    プロジェクトの背景と目的
    オラクル選定理由 オラクル導入範囲
    Copyright © 2023, Oracle and/or its affiliates.

    View Slide

  35. • DBメンテナンス時にも、インメモリ
    をバッファとして使用できる仕組みを簡
    単に構築できた
    • バッファ領域を拡張できるため、
    停止時間を長く取れる
    • インメモリにカート情報を長時間保持
    していても、障害に対して可用性があ
    るため、データロストしない
    定期メンテナンス時にも注文受注 – カート情報を長期間保持
    国内某ショッピング・サイト
    35
    ビジネス側のニーズ
    • 無停止運用により売上を確保する
    • システム無停止による顧客・出展店舗双方の満足度を向上
    • カート情報の長期間保持により、購入機会を向上
    システム側のニーズ
    • 月1回3時間の受注DBの定期メンテナンスが必須であるが、その間もシステムを稼動
    させたい
    • カートへのアクセスをインメモリで高速化しつつ、長期間保持+障害時にも
    ロストしないようにしたい
    データベースの定期メンテナンス時にも、システムを止めず、オンラインの受注を継続して受け付けられる仕組みを構築
    また、カート情報を長期間保持することで、購入機会を向上
    注文データの
    受付
    ショッピング
    カート
    • DBメンテナンス時にも、注文データを継続的に
    受付可能
    • DBへの書き込みデータは、グリッド内の
    キュー領域に格納
    • ノード追加により、バッファ量を拡張可能
    ⇒メンテナンス時間の増加
    • 障害時にも、インメモリ上のキューは
    バックアップから復元しデータロストしない
    • グリッド上にカート情報を長期間保持、
    データ容量、可用性向上
    プロジェクトの背景と目的
    オラクル選定理由 オラクル導入範囲
    Copyright © 2023, Oracle and/or its affiliates.

    View Slide

  36. Copyright © 2023, Oracle and/or its affiliates.
    36
    国内通信事業者様
    • サービス認証用顧客プロファイル管理
    • Oracle Coherence /
    WebLogic Server
    • ユーザー認証された後、後続サービスに
    必要なプロファイルをインメモリ保持
    • 効果
    - 年末年始のバーストトラフィック時も
    平均 5ms レスポンス
    - ピーク時 15,000TPS を処理
    顧客プロファイルのインメモリ共有
    契約者数の順調な伸長、トラフィック増加に対応
    各種サービス・システム
    (メール、Web、GPS…)
    :
    :
    顧客プロファイル
    契約情報
    Appサーバー(WebLogic)
    ユーザー認証
    サービス個別の
    ユーザープロファイル
    ・・・

    View Slide

  37. Copyright © 2023, Oracle and/or its affiliates.
    37
    NTTコミュニケーションズ様
    • Event Processing/Coherence
    Oracle BI with Exalogic &
    Exadata
    • 複数レイヤの通信状況を複合的に
    リアルタイム判定
    • 毎秒 140万トラフィックの連続処理
    • 履歴データの分析情報を補完して
    精度向上
    • 状況変化に応じて迅速に調整可能
    Fast Data 活用例
    変化対応力の高い次世代の予兆監視へ
    可視化 アクション

    View Slide

  38. Copyright © 2023, Oracle and/or its affiliates.
    38
    キヤノン株式会社様
    • Event Processing/Coherence
    with Exalogic & Exadata
    • 世界中の機器をリアルタイムに監視
    • 故障や、その前兆のトラブルを識別し、
    早期かつ適切な施策を指示
    • 機器の数の増加、情報収集頻度の
    増加に追従可能な構造へシフト
    • レスポンス5倍、内部処理改善10倍
    Internet of Things サービス基盤の実現
    世界中の機器の監視・故障の早期検知から、さらなる付加価値サービスへ
    遠隔モニタリング
    診断・改善提案 …
    稼働状況
    エラー
    機器情報

    View Slide

  39. Copyright © 2023, Oracle and/or its affiliates.
    39
    Appendix) Coherence Operator

    View Slide

  40. https://github.com/oracle/coherence-operator
    • Kubernetesに対する操作でCoherence構成をデプロイ
    • Coherenceイメージにアプリケーションを組み込み利用
    • クラスタ・メンバ・ロールごとのスケール制御に対応
    • Cache Sevrer/Client/Extend Proxy, etc.
    • クラウド上での利用を想定した可用性構成に対応
    • Kubernetesゾーンを考慮した可用性構成
    • Kubernetesクラスタを跨ぐフェデレーション構成
    • 標準的なOSSスタックによるCoherenceクラスタの管理
    • Prometheus/Grafanaによるメトリクス監視
    • Fluentd/Elastic Stackによるログ連携
    再掲) Coherence Operator for Kubernetes
    Copyright © 2023, Oracle and/or its affiliates.
    40
    Kubernetes Cluster
    REST Management
    Coherence Cluster
    POD 1 POD 5
    Coh
    POD 2
    Coh
    POD 3
    Coh
    POD 4
    Coh Coh
    Operator
    Kubernetes

    View Slide

  41. Coherence Operatorの利用の流れ
    Copyright © 2023, Oracle and/or its affiliates.
    41
    1. Coherence Operator のインストール
    • YAMLを利用してインストール
    • Helm を利用してインストール
    2. Coherenceイメージのビルド (Jibを利用)
    • アプリケーション、構成ファイルを含むCoherenceイメージのビルド
    3. コンテナ・イメージをレジストリにPush
    4. Kubernetes上にYAMLでデプロイ
    $ kubectl apply -f https://github.com/oracle/coherence-operator/releases/download/v3.2.4/coherence-operator.yaml
    $ helm repo add coherence https://oracle.github.io/coherence-operator/charts
    $ helm repo update
    $ helm install –namespace coherence coherence/coherence-operator
    $ kubectl create -f example-cluster-storage.yaml

    View Slide


  42. coherence-ns1
    Coherence Operatorのトポロジの概要
    Copyright © 2023, Oracle and/or its affiliates.
    42

    storage-a-metrics

    client-a-metrics
    cluster-a

    storage-a

    storage-a-0

    storage-a-1

    storage-a-2

    client-a

    client-a-0

    client-a-1

    proxy-a

    proxy-a-0

    proxy-a-1

    proxy-a-metrics

    proxy-a-proxy
    Service Monitor
    scrape
    Coherenceクラスタ外部からのアクセス
    Coherenceクラスタ
    内部からのアクセス
    各Coherenceインスタンスの
    Podがmetricsを提供
    各metrics用のサービスを経由して
    Service Monitor経由でスクレイピング
    ロール (サーバ、クライアント、etc) ごとの
    StatefulSetとしてデプロイされる
    Sidecarコンテナからログ転送
    transfer

    View Slide

  43. Coherence キャッシュ・サーバのデプロイとスケール・アウト & データ再配置の確認
    Examples – Coherence Deployment Example
    https://oracle.github.io/coherence-operator/docs/latest/#/examples/021_deployment/README
    • 代表的なデプロイ・パターンのチュートリアル
    • キャッシュ・サーバのみ、Proxyを追加したクラスタ外からのアクセス、etc.
    Management Diagnostics – Using VisualVM
    https://oracle.github.io/coherence-operator/docs/latest/#/docs/management/030_visualvm
    • VisualVM からのCoherence接続のチュートリアル
    Coherence Operator デモ
    Copyright © 2023, Oracle and/or its affiliates.
    43

    View Slide


  44. default
    サーバのみをデプロイした場合のトポロジ概要
    Copyright © 2023, Oracle and/or its affiliates.
    44

    example-cluster-storage-jmx
    example-cluster

    example-cluster-storage

    example-cluster
    -storage-0

    example-cluster
    -storage-1

    example-cluster
    -storage-2
    kubectl port-forward
    SSH port-forward
    metrics と同様に各Coherence
    インスタンスのJMXアクセスを提供

    View Slide

  45. キャッシュ・サーバを構成する場合の標準的なYAML記述例
    Copyright © 2023, Oracle and/or its affiliates.
    45
    apiVersion: coherence.oracle.com/v1
    kind: Coherence
    metadata:
    name: example-cluster-storage
    spec:
    cluster: example-cluster
    image: phx.ocir.io/orasejapan/sy_coherence/deployment-example:1.0.0
    imagePullSecrets:
    - name: ocirsecret
    imagePullPolicy: Always
    replicas: 3
    coherence:
    cacheConfig: storage-cache-config.xml
    metrics:
    enabled: true
    jvm:
    args:
    - -Dcoherence.management=all
    - -Dcoherence.management.remote=true
    - -Dcom.sun.management.jmxremote.ssl=false
    - -Dcom.sun.management.jmxremote.authenticate=false
    jmxmp:
    enabled: true
    port: 9099
    memory:
    heapSize: 512m
    ports:
    - name: jmx
    port: 9099
    - name: metrics
    Coherence カスタムリソース
    利用するイメージCoherenceのイメージ
    クラスタ・サイズ
    キャッシュ構成ファイル
    metrics の有効化
    JMXMPの有効化
    インスタンスあたりのJVMヒープ
    Coherence クラスタ名

    View Slide

  46. デプロイされるKubernetesリソース (サーバのみ)
    Copyright © 2023, Oracle and/or its affiliates.
    46
    NAME READY STATUS RESTARTS AGE
    pod/example-cluster-storage-0 1/1 Running 0 4d2h
    pod/example-cluster-storage-1 1/1 Running 0 4d2h
    pod/example-cluster-storage-2 1/1 Running 0 4d2h
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    service/example-cluster-storage-jmx ClusterIP 10.96.196.10 9099/TCP 4d2h
    service/example-cluster-storage-metrics ClusterIP 10.96.190.120 9612/TCP 4d2h
    service/example-cluster-storage-sts ClusterIP None 7/TCP 4d2h
    service/example-cluster-storage-wka ClusterIP None 7/TCP 4d2h
    service/kubernetes ClusterIP 10.96.0.1 443/TCP 55d
    NAME READY AGE
    statefulset.apps/example-cluster-storage 5/5 4d2h
    キャッシュ・サーバ・
    インスタンスごとのPod
    JMX 用のService
    metrics 用のService
    StatefulSet, WKA(※)
    用のHeadless Service
    クラスタを構成するStatefulSet

    View Slide

  47. デプロイ&データ投入後のデータの配置の様子
    Copyright © 2023, Oracle and/or its affiliates.
    47

    View Slide


  48. default
    クライアント/サーバをデプロイした場合のトポロジの概要
    Copyright © 2023, Oracle and/or its affiliates.
    48

    example-cluster-storage-jmx

    example-cluster-client-jmx
    example-cluster

    example-cluster-storage

    example-cluster
    -storage-0

    example-cluster
    -storage-1

    example-cluster
    -storage-2

    example-cluster-client

    example-cluster
    -client-0

    example-cluster
    -client-1
    kubectl port-forward
    SSH port-forward

    View Slide

  49. クライアントを構成する場合の標準的なYAML記述例
    Copyright © 2023, Oracle and/or its affiliates.
    49
    apiVersion: coherence.oracle.com/v1
    kind: Coherence
    metadata:
    name: example-cluster-client
    spec:
    cluster: example-cluster
    image: phx.ocir.io/orasejapan/sy_coherence/deployment-example:1.0.0
    imagePullSecrets:
    - name: ocirsecret
    imagePullPolicy: Always
    replicas: 2
    coherence:
    cacheConfig: storage-cache-config.xml
    storageEnabled: false
    metrics:
    enabled: true
    jvm:
    args:
    - -Dcoherence.management=all
    - -Dcoherence.management.remote=true
    - -Dcom.sun.management.jmxremote.ssl=false
    - -Dcom.sun.management.jmxremote.authenticate=false
    jmxmp:
    enabled: true
    port: 9099
    memory:
    heapSize: 512m
    ports:
    - name: jmx
    port: 9099
    - name: metrics
    strageEnabled = false (クライアント)
    サーバとは異なるロール (=クライアント) を指定
    同じクラスタを指定

    View Slide

  50. デプロイされるKubernetesリソース (クライアント含む)
    Copyright © 2023, Oracle and/or its affiliates.
    50
    NAME READY STATUS RESTARTS AGE
    pod/example-cluster-client-0 1/1 Running 0 53m
    pod/example-cluster-client-1 1/1 Running 0 53m
    pod/example-cluster-storage-0 1/1 Running 0 4d4h
    pod/example-cluster-storage-1 1/1 Running 0 4d4h
    pod/example-cluster-storage-2 1/1 Running 0 4d4h
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    service/example-cluster-client-jmx ClusterIP 10.96.131.59 9099/TCP 53m
    service/example-cluster-client-metrics ClusterIP 10.96.1.161 9612/TCP 53m
    service/example-cluster-client-sts ClusterIP None 7/TCP 53m
    service/example-cluster-client-wka ClusterIP None 7/TCP 53m
    service/example-cluster-storage-jmx ClusterIP 10.96.196.10 9099/TCP 4d4h
    service/example-cluster-storage-metrics ClusterIP 10.96.190.120 9612/TCP 4d4h
    service/example-cluster-storage-sts ClusterIP None 7/TCP 4d4h
    service/example-cluster-storage-wka ClusterIP None 7/TCP 4d4h
    service/kubernetes ClusterIP 10.96.0.1 443/TCP 55d
    NAME READY AGE
    statefulset.apps/example-cluster-client 3/3 53m
    statefulset.apps/example-cluster-storage 3/3 4d4h
    クライアントのインスタンスのPod
    サーバとは異なるサービス
    サーバとは異なるStatefulSet

    View Slide

  51. スケール・アウト( 3 → 5 )後のデータの配置の様子
    Copyright © 2023, Oracle and/or its affiliates.
    51

    View Slide

  52. Oracle Coherence 14.1.1.0:https://docs.oracle.com/cd/F32751_01/coherence/14.1.1.0/index.html
    Coherence Community Edition:https://coherence.community/
    • GitHub:https://github.com/oracle/coherence
    Coherence Operator
    • ドキュメント:https://oracle.github.io/coherence-operator/docs/latest/#/docs/about/01_overview
    • GitHub:https://github.com/oracle/coherence-operator
    Oracle Coherence 参考情報
    Copyright © 2023, Oracle and/or its affiliates.
    52

    View Slide

  53. Copyright © 2023, Oracle and/or its affiliates.
    53
    Thank you

    View Slide

  54. View Slide

  55. Our mission is to help people see data in new ways,
    discover insights, unlock endless possibilities.

    View Slide