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

Oracle Coherence 概要

Oracle Coherence 概要

oracle4engineer

December 21, 2023
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. 4 1 2 Appendix) Coherence Operator Oracle Coherence 国内採用事例 (一部)

    Oracle Coherence 新機能ハイライト Oracle Coherence とは Agenda Copyright © 2023, Oracle and/or its affiliates. 2 3
  2. Oracle Coherence とは? Oracle の KVS 型 インメモリ・データ・グリッド製品 Copyright ©

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

    複数マシン上で大量データを分散管理する分散 データ管理機能 分散データ管理 • 分散された大量データを効率的に処理するための データ処理機能 分散データ処理 • 複数マシンを管理しスケールさせるための クラスタ機能 クラスタ管理 大量データを効率的に扱うためのアーキテクチャ 3つの特長
  4. スケーラブルなインメモリ分散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 サービス データストア連携
  5. データキャッシュ用途からリアルタイム・イベント処理まで Coherence の主なユースケース アクセス性能改善、 バックエンドのオフロード アプリケーション イベント処理型 アプリケーション イベント処理ロジック イベント・ストリーム

    イベント・ストリーム 高速データ分析・判定 グリッド・コンピューティング データ集約型ロジック Copyright © 2023, Oracle and/or its affiliates. 8 大手ECサイト:カート/注文処理のDBオフロード 大手家電量販店:商品情報アクセスのDBオフロード 大手航空会社:空席照会のホスト負荷のオフロード メガバンク:為替レート情報のリアルタイム加工 大手通信業:ユーザ認証/契約サービス判定 インターネット・プロバイダ:課金処理の分散バッチ オンラインFX業:高速レート配信&取引 大手通信業:ネットワーク回線監視・異常検知 大手製造業:複合機監視・異常検知
  6. 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 データ容量 & 処理性能を動的かつ均一に拡張
  7. データアクセスとデータ可用性の維持 • ハッシュ・ベースで分散配置されたパーティション単位で管理され、配置ロジックがクラスタ全体で共有される • データ保持ノードをクライアントから直接特定してアクセス可能 • バックアップは異なるマシン上に配置 = マシン・セーフ •

    クラウドの場合:異なるベアメタル・サーバ / 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 A B B A Coherenceクラスタ パーティション データ B バックアップ P プライマリ
  8. 障害時の振る舞い • 障害時はバックアップからパーティション単位で復旧 • 障害復旧の最小単位はパーティション単位 • 無くなったプライマリをバックアップから復旧(インメモリで昇格) • マシンセーフのためのプライマリの均等化(ネットワーク経由で再配置) •

    バックアップの再作成(ネットワーク経由でコピー) 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 プライマリ
  9. データベースやバックエンドとの連携 • データ連携処理は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
  10. データの更新イベントに基づいた処理 • データ変更に伴うイベント処理 • データ更新によりトリガされる処理を登録 • データ更新(insert/update/delete)イベントを受け取 り、対象データを伴う任意のイベント処理を実行 • フィルタによる対象データの絞り込みも可能

    • データ操作の種類 • Key/Valueに対する条件 • サーバ・サイドで利用可能なイベント処理 • データ変更のイベント • EntryProcessorによるIn-Place処理イベント • Partitionの移動、etc. Coherenceのイベント処理 Copyright © 2023, Oracle and/or its affiliates. 13 イベントリスナー アプリケーション Coherenceデータグリッド JVM A JVM B JVM C JVM D ③ イベント通知 ① リスナー登録 ② データ変更 Listener Listener Filter Event Event Event
  11. データを保持するサーバ内での分散データ処理 • 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 ④ サーバ数分の 結果を集計
  12. 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
  13. 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セッションを格納)
  14. 専用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 A JVM B JVM C JVM D JVM Extend Proxy JVM Java Client Coherence API (JAVA) Memcached Adapter Coherenceクラスタ ① ② ② ② ③ ④
  15. スケーラブルなインメモリ分散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 サービス データストア連携
  16. データベース変更を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連携
  17. データセンタやクラウド間を跨いだクラスタ間連携 • クラスタ間でのデータ同期処理 • 双方向でのデータ更新が可能(競合解決のルールを組み込み可能) 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 ×
  18. ディスク・ストレージを利用したキャッシュ情報の永続化 • 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モード
  19. のコンテナによるプロダクション環境に対する商用サポートを提供 商用コンテナ環境に対する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
  20. 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
  21. 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は将来対応予定
  22. 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
  23. 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に対応 (今後拡充予定)
  24. 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での問い合わせも可能
  25. 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!
  26. ① IaaS 利用パターン OCI ComputeにCoherenceをイ ンストール • ライセンス持ち込みに対応 • OCI

    Computeで利用可能な OSを利用可能 • 従来と同様のインストール方法 • 従来と同様の管理方法 ② PaaS 利用パターン OCI Marketplace の WLSuite for OCI でCoherenceを利用 • ライセンス持ち込み/従量課金の 両方に対応 • Oracle Linuxのみ対応 • インストール工数の削減が可能 • WebLogicベースの管理 ③ コンテナ化 Kubernetesクラスタ(OKE)で Coherence Operatorを利用 • ライセンス持ち込みに対応 • コンテナベースの運用/管理 • 12.2.1.3以降 Coherenceのクラウド化パターン Copyright © 2023, Oracle and/or its affiliates. 30
  27. • 高い更新性能(0.5ms/件)を リニアに拡張できるスケーラ ビリティを検証フェーズで実証 → ユーザー数の増加や市況 変化に対して対応計画を 描きやすい • DBやディスクに永続化せずに

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

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

    Oracle Coherence、 WebLogic Server & Database • 毎秒数百件の外国為替レート更新を 受信し、連続的な加工・計算を ストレスなく安定的に処理 • 国内の災害対策拠点にインメモリ 通信で情報を複製 Fast Data 活用例 外国為替レート情報のリアルタイム加工・配信処理を実現 外部 レート情報 行内 システム 加工・計算処理 配信 処理 受信 データ 配信用 データ
  30. • インメモリグリッドの国内外の豊富 な実績 • 単一ボトルネック点のないアーキ テクチャ(アクセス増加に対し 安定した性能を確保) • 単なる性能改善だけでなく今後の サービス拡充に活用可能な柔軟性

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

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

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

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

    Event Processing/Coherence with Exalogic & Exadata • 世界中の機器をリアルタイムに監視 • 故障や、その前兆のトラブルを識別し、 早期かつ適切な施策を指示 • 機器の数の増加、情報収集頻度の 増加に追従可能な構造へシフト • レスポンス5倍、内部処理改善10倍 Internet of Things サービス基盤の実現 世界中の機器の監視・故障の早期検知から、さらなる付加価値サービスへ 遠隔モニタリング 診断・改善提案 … 稼働状況 エラー 機器情報
  35. 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. 41 Kubernetes Cluster REST Management Coherence Cluster POD 1 POD 5 Coh POD 2 Coh POD 3 Coh POD 4 Coh Coh Operator Kubernetes
  36. Coherence Operatorの利用の流れ Copyright © 2023, Oracle and/or its affiliates. 42

    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 <namespace> coherence coherence/coherence-operator $ kubectl create -f example-cluster-storage.yaml
  37. <Namespace> coherence-ns1 Coherence Operatorのトポロジの概要 Copyright © 2023, Oracle and/or its

    affiliates. 43 <Service> storage-a-metrics <Service> client-a-metrics cluster-a <StatefulsSet> storage-a <Pod> storage-a-0 <Pod> storage-a-1 <Pod> storage-a-2 <StatefulsSet> client-a <Pod> client-a-0 <Pod> client-a-1 <StatefulsSet> proxy-a <Pod> proxy-a-0 <Pod> proxy-a-1 <Service> proxy-a-metrics <Service> proxy-a-proxy Service Monitor scrape Coherenceクラスタ外部からのアクセス Coherenceクラスタ 内部からのアクセス 各Coherenceインスタンスの Podがmetricsを提供 各metrics用のサービスを経由して Service Monitor経由でスクレイピング ロール (サーバ、クライアント、etc) ごとの StatefulSetとしてデプロイされる Sidecarコンテナからログ転送 transfer
  38. 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. 44
  39. <Namespace> default サーバのみをデプロイした場合のトポロジ概要 Copyright © 2023, Oracle and/or its affiliates.

    45 <Service> example-cluster-storage-jmx example-cluster <StatefulsSet> example-cluster-storage <Pod> example-cluster -storage-0 <Pod> example-cluster -storage-1 <Pod> example-cluster -storage-2 kubectl port-forward SSH port-forward metrics と同様に各Coherence インスタンスのJMXアクセスを提供
  40. キャッシュ・サーバを構成する場合の標準的なYAML記述例 Copyright © 2023, Oracle and/or its affiliates. 46 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 クラスタ名
  41. デプロイされるKubernetesリソース (サーバのみ) Copyright © 2023, Oracle and/or its affiliates. 47

    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 <none> 9099/TCP 4d2h service/example-cluster-storage-metrics ClusterIP 10.96.190.120 <none> 9612/TCP 4d2h service/example-cluster-storage-sts ClusterIP None <none> 7/TCP 4d2h service/example-cluster-storage-wka ClusterIP None <none> 7/TCP 4d2h service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 55d NAME READY AGE statefulset.apps/example-cluster-storage 5/5 4d2h キャッシュ・サーバ・ インスタンスごとのPod JMX 用のService metrics 用のService StatefulSet, WKA(※) 用のHeadless Service クラスタを構成するStatefulSet
  42. <Namespace> default クライアント/サーバをデプロイした場合のトポロジの概要 Copyright © 2023, Oracle and/or its affiliates.

    49 <Service> example-cluster-storage-jmx <Service> example-cluster-client-jmx example-cluster <StatefulsSet> example-cluster-storage <Pod> example-cluster -storage-0 <Pod> example-cluster -storage-1 <Pod> example-cluster -storage-2 <StatefulsSet> example-cluster-client <Pod> example-cluster -client-0 <Pod> example-cluster -client-1 kubectl port-forward SSH port-forward
  43. クライアントを構成する場合の標準的なYAML記述例 Copyright © 2023, Oracle and/or its affiliates. 50 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 (クライアント) サーバとは異なるロール (=クライアント) を指定 同じクラスタを指定
  44. デプロイされるKubernetesリソース (クライアント含む) Copyright © 2023, Oracle and/or its affiliates. 51

    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 <none> 9099/TCP 53m service/example-cluster-client-metrics ClusterIP 10.96.1.161 <none> 9612/TCP 53m service/example-cluster-client-sts ClusterIP None <none> 7/TCP 53m service/example-cluster-client-wka ClusterIP None <none> 7/TCP 53m service/example-cluster-storage-jmx ClusterIP 10.96.196.10 <none> 9099/TCP 4d4h service/example-cluster-storage-metrics ClusterIP 10.96.190.120 <none> 9612/TCP 4d4h service/example-cluster-storage-sts ClusterIP None <none> 7/TCP 4d4h service/example-cluster-storage-wka ClusterIP None <none> 7/TCP 4d4h service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 55d NAME READY AGE statefulset.apps/example-cluster-client 3/3 53m statefulset.apps/example-cluster-storage 3/3 4d4h クライアントのインスタンスのPod サーバとは異なるサービス サーバとは異なるStatefulSet
  45. 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. 53
  46. Our mission is to help people see data in new

    ways, discover insights, unlock endless possibilities.