• 検索結果がありません。

分散キャッシュ? キーバリュー ストア? KVS? Copyright Oracle Corporation Japan, All rights reserved. 2

N/A
N/A
Protected

Academic year: 2021

シェア "分散キャッシュ? キーバリュー ストア? KVS? Copyright Oracle Corporation Japan, All rights reserved. 2"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

<Insert Picture Here>

クラウド世代のWebアプリケーション設計

インメモリ分散技術による変革とは?

-日本オラクル株式会社

Fusion Middleware 事業統括本部

(2)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

分散キャッシュ

?

キーバリュー・ストア

? KVS?

(3)
(4)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

4

クラウド的発想で行こう

!

データ量を気にしない

メモリ制限を気にしない

システム規模を気にしない

同時ユーザー数を気にしない

ハードウェア障害を気にしない

(5)

ITリソースを気にしない」

アプリ開発者・アプリ利用者の

利便性向上のためのクラウド

Shared Infrastructure

App3

Server

App2

Server

App1

Server

JVM

JVM

JVM

OS

OS

OS

現行のサーバー仮想化

Silo’d Virtual Infrastructure

Virtualization

App3

Server

App2

Server

App1

Server

JVM

JVM

JVM

OS

OS

OS

Virtualization

Virtualization

Virtualization

(6)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

6

インメモリ分散技術

(7)

インメモリ・データグリッドでできること

「隣のサーバーのメモリと

CPUを活用する」

それによって

廉価なサーバーをつなげて高性能な処理を実現できる

遊休資産を活用できる(

IT資産を最適化できる)

テラバイト級の大規模メモリ空間を構築できる

(8)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

8

Application

Server

アプリケーション・グリッドの中核技術

インメモリ・データグリッドがもたらすもの

アプリ

ケーション

JVM JVM JVM JVM

データグリッド層

大容量かつ拡張可能な

インメモリ・データ保持領域

• データアクセスを実施

• メモリデータを高い

信頼性で保持可能

アプリ処理対象メモリデータ

を外部プロセスへ“逃がす

アプリケーション本来の

処理用のリソースを確保

• より多くのリクエストを

処理可能

• GCの影響を極小化

→ より安定した応答

アプリ

App

Process

処理の引継ぎ

• Appサーバー障害の

影響を極小化

• Appサーバーの追加

を容易に実現

Appサーバー層から

独立した層でデータを

インメモリ保持

共通データ処理をデータ

グリッド側で並列実行

• 処理のパラレル化

→ 高速化

• Appサーバー処理の

軽量化 → 高速化

JVM

(9)

Application

Server

アプリケーション・グリッドの中核技術

インメモリ・データグリッドがもたらすもの

アプリ

ケーション

JVM JVM JVM JVM

データグリッド層

大容量かつ拡張可能な

インメモリ・データ保持領域

• データアクセスを実施

• メモリデータを高い

信頼性で保持可能

アプリ処理対象メモリデータ

を外部プロセスへ“逃がす

アプリケーション本来の

処理用のリソースを確保

• より多くのリクエストを

処理可能

• GCの影響を極小化

→ より安定した応答

アプリ

App

Process

処理の引継ぎ

• Appサーバー障害の

影響を極小化

• Appサーバーの追加

を容易に実現

Appサーバー層から

独立した層でデータを

インメモリ保持

共通データ処理をデータ

グリッド側で並列実行

• 処理のパラレル化

→ 高速化

• Appサーバー処理の

軽量化 → 高速化

耐障害性・可用性

オンデマンドな拡張性

高スループット

+安定性

アプリケーション容量の改善

高速性

パフォーマンス

JVM

(10)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

10

サーバーの動的な再構成 + 耐障害性

(11)

Demonstration

データグリッド・サーバーの動的な増減

シナリオ

株取引アプリケーション

アプリケーション稼動中

① 取引量の増加に対応するため

メモリ処理可能な上限を

拡大したいが、どうするか

?

② 処理途中に

Coherence

サーバーがひとつダウン

した

場合、アプリケーションの処理

にどう影響が出るか

?

(12)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

12

データグリッドによって

(13)

Webアプリに対するデータグリッド適用のレベル

Java EE/ISV

アプリ

Application

Server

JVM

JVM JVM JVM

データグリッド層

セッション

/ステート・データの

格納領域としての利用

従来手法では

httpsession.getAttribute(…);

httpsession.setAttribute(…);

または、カスタム・コードによって

ステート管理を実装

共通データアクセス処理としての適用

従来手法では

O/Rマッピング

Hibernate、TopLink JPA

その他のデータアクセス

フレームワークの利用

JDBCによる個別コーディング

特性

- 対象 : 単一データ

- データの信頼性が課題

- Appサーバーの

メモリ領域を圧迫しない

管理手法が必要

特性

- 対象 : 複数行データ

- DBに依存した処理

+ ネットワーク転送

+ O/R変換コスト

- 他セッションでも同様の

リクエストが発生する

可能性あり

(14)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

14

変わる常識・考え方

セッション

/ステート管理に対する考え方

データアクセスの方法・考え方

GC に対する考え方

耐障害性に対する考え方

サイジング・システム増強時

(15)

セッション

/ステート管理に対する考え方

これまでの手法・常識

HTTPセッションであまり大きな

オブジェクトを保持すべきではない

セッション

/ステートの信頼性の

ためには、

DB に書き込む

DB負荷の増加、O/R変換コスト)

ステートレスなアプリでなければ

スケールしない

with インメモリ・データグリッド

データの大きさにかかわらず、

HTTPセッションでステート管理可能

信頼性はデータグリッドで確保

効果

セッション・データの取り扱いを統一

アプリはステートレスのようにスケール

DB負荷を増大させない

or

(16)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

16

セッション

/ステート管理

従来型の限界に縛られない処理性能

スループット比較(テストケース2) 0 500 1000 1500 2000 2500 3000 同時仮想端末数 ス ルー プ ット

WLS+COH 同一筐体 WLS+COH 別ノード配置 WLS Cluster theoretical max.

スループット

セッションサイズ 10K

総メモリ量 3G 制限での

検証テスト結果

従来型 クラスタ構成

1G

WebLogic

1G

1G

1G

512M

1G

WebLogic

512M Coherence

Coherence*Web構成

同時

ユーザー数

繰り返し

実行数

処理時間

(秒)

コメント

通常のセッション管理

20

10

0.741

Coherence*Web (front)

20

10

0.702

Coherence*Web (near)

20

10

0.741

通常のセッション管理

100

20

測定不能(OutOfMemory)

Coherence*Web (front)

100

20

2.186

Coherence*Web (near)

100

20

1.961

海外顧客の

事前テスト結果

(17)

セッション

/ステート管理

統合セッション管理層としての

Coherenceの適用

WebLogic Server

WebSphere

JBoss

Tomcat …

Oracle WebLogic 9.x、10.x、11g

Oracle OC4J 10.1.2、10.1.3

IBM WebSphere 5.x、6.x、7

Sun GlassFish 2.x

Tomcat 5.5、6.0

JBoss

Resin 3.1

Jetty 5.1、6.1

ASP.NET

2.0 以上)

Java EE 標準API

VB or C#

CoherenceSessionProvider for .NET Web.config で設定

Coherence*Web

インストーラによって

Javaアプリに組み込み

Coherence : 高信頼性メモリ領域

httpsession.setAttribute(

"count"

, integer );

Session(

“count”

)=Counter.Text

Coherence API

ver. 3.6

(18)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

18

身近なところで効果がでるかも

アイディア

Struts とともに使ってみる

JSF とともに使ってみる

期待される効果

信頼性の向上

メモリ利用効率の向上

同時ユーザー数向上

このケースでの効果は

“速さ”ではない

アイディア

.NET アプリケーション

特に、

SQL Server で

セッション管理をやっている場合

はすぐにやってみるべし

!

期待される効果

SQL Server 不要

(速さ

+ コスト)

ディスクストレージの節約

(19)

変わる常識・考え方

セッション

/ステート管理に対する考え方

データアクセスの方法・考え方

GC に対する考え方

耐障害性に対する考え方

サイジング・システム増強時

(20)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

20

データアクセスの方法・考え方

これまでの手法

with インメモリ・データグリッド

アプリケーション

B

アプリケーション

A

アプリケーション

B

アプリケーション

A

画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 デ ー タ グリ ッド層 アプリに特化した データ処理 アプリに特化した データ処理 共通データ処理 Ap p サ ー バ ー 層 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理

その他のデータソース

(ホスト、Webサービス …)

企業内

統合マスターDB

データ 処理 データ 処理 データ 処理 データ 処理 データ 処理 データ アクセス 処理 データ アクセス 処理

(21)

データアクセス

データグリッド適用の場合に意識すべきポイント

with インメモリ・データグリッド

アプリケーション

B

アプリケーション

A

デ ー タ グリ ッド層 アプリに特化した データ処理 アプリに特化した データ処理 共通データ処理 Ap p サ ー バ ー 層 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理

その他のデータソース

(ホスト、Webサービス …)

企業内

統合マスターDB

データ アクセス 処理 データ アクセス 処理

結果の再利用処理を検討すべき

データアクセスのチューニングより

効果的なこともある

オブジェクト化コストを意識すべき

アプリ側で処理するデータ量が多い

(オブジェクト数が多い)場合は

「問合せ

→オブジェクト化」よりも

「オブジェクト集合

→データ絞込み」

のほうが効率的

データソースへのアクセスは

Coherence に委譲することも可能

この場合、アクセスエラーでは

Coherence でリトライしてくれる

(22)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

22

データアクセス

典型的な適用パターン

アプリケーション

アプリケーション

画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 データ 処理 データ アクセス 処理

アプリケーション

画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 データ アクセス 処理

TopLink JPA

Hibernate

データ処理層としてフル活用

- DAOの再設計

- データグリッド機能をもっとも

効果的に利用

既存データ処理の活用

- 処理された結果の共有に

よって、後続のデータ処理

リクエストを高速・効率化

データグリッド連携機能の利用

- Coherence の連携が可能な

フレームワーク機能の背後で

透過的に利用

(23)

Oracle Coherence

3.6

Coherence Query Language

アプリケーション

画面・ フロー 画面・ フロー 画面・ フロー

DB

アクセス処理

Access API

Class

Product {

private int id;

private

String name;

private int price;

private

String detail;

private

String pictureUrl;

...

public

String getName();

...

}

SQLのwhere句に類似の表現によって

条件を設定して処理を分散実行可能

(パラレル問合せ、集計、データ変換

etc)

コマンドラインツールからクエリを実行

例:

- select name from products

where price between 2000 and 10000

- select avg(price) from products

where name like ‘%リンゴ%’

CohQL>

(24)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

複数サーバーのリソースを統合利用

J.Crew オンラインストア

App

Server ServerApp ServerApp ServerApp

ピーク時期の処理のためにノード数を伸縮

24

実際の顧客例

関連サイトのセッション共有化による利便性向上

セッション管理

+ データ処理

北米 流通小売企業

ヨーロッパ カジノサイト

App

Server ServerApp ServerApp

ファミリー向け

高級ブランド

廉価ブランド

(25)

変わる常識・考え方

セッション

/ステート管理に対する考え方

データアクセスの方法・考え方

GC に対する考え方

耐障害性に対する考え方

サイジング・システム増強時

(26)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

26

GC/メモリに対する考え方

これまでの手法・常識

メモリに載り切れない

データをファイル書き出し

大きなヒープを確保

or

Javaアプリ Javaアプリ Javaアプリ

with インメモリ・データグリッド

複数

JVM による仮想共有メモリ領域を構成

効果

一つ一つの

JVMヒープは大きくしなくても良い

GCの影響が小さいままで

大規模メモリ環境を実現

ディスクIO →性能を犠牲に 大きなヒープ領域 →大規模GCを誘発

(27)

常識を覆す

3つのさらなる革新

Javaアプリ  レ ス ポ ンス タ イム (ms ) 100 150 200 250 300 100 150 200 250 300

不測のGC処理

→処理の滞留、タイムアウト…

無駄な障害の回避

機会損失の防止

“ヒープ外” のメモリ領域を活用する

Oracle Coherence)

Full GC を制御する

Oracle JRockit Real Time)

ヒープサイズを稼動中に変更する

Oracle JRockit)

1

2

3

3

1

2

Java NIO 機能を利用した “ヒープ外” の

メモリ領域でのデータ管理

GC の影響を受けずに大きなメモリ領域を

利用可能。特に

64bit 環境で有効。

JVMのリアルタイム状況を可視化

さまざまなJVMパラメータを動的に変更可能

ヒープサイズだって増減可能

(28)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

28

耐障害性に対する考え方

これまでの手法・常識

冗長化構成を別途設計

→ 待機系部分からくるコスト増

HW/SWコスト

設計・構築コスト

テスト工数

待機系の正常系テスト

障害テスト

障害時の運用手順の準備が必要

with インメモリ・データグリッド

遊休リソースのないフル・アクティブ構成

耐障害性・フェールオーバー処理は

データグリッドに委譲

効果

アプリケーション開発者は

処理ロジックと性能向上に集中

障害時処理の多くが自動化

どのサーバーが

“落ちてもよい前提” の

アプリケーションになる

and/or

(29)

サイジング・システム増強時

with インメモリ・データグリッド

厳密な見積もりは不要

: ざっくりと見積もって、後からノード数で調整

スモールスタート時は

Appサーバーと同一筐体でデータグリッドを起動

→ 規模の拡大に応じて、物理的に独立したデータグリッド層を構築可能

効果

HWリソースの有効活用が可能(特にメモリ)

アプリケーション・コードは変更不要

: 構成変更はデータグリッドが吸収

オンライン状態でもシステム増強可能

Coherence

インスタンス

物理的に独立化

データグリッドを

(30)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

30

国内のお客様の取り組み(抜粋)

国内オンラインショップ

ECサイトの中核として採用

ヨドバシカメラ様

画面を構成するオブジェクトを高速収集

国内ゲーム企業

ユーザープロファイル管理基盤

国内製造業

BOMデータの逆展開システム

国内公共

月次のデータ集計処理の高速化

国内大手オンラインストア

カートの高信頼性メモリ保持として

ヒロセ通商様 LION FX

スケーラブルなFX注文処理基盤

国内大手証券

自己売買取引システム

国内証券

証券トレーディング・システム

国内金融機関

(構築中)

アルゴリズム取引基盤

国内小売流通業

在庫状況に基づく配送の最適化計算

楽天証券様

フル板情報配信セッション管理基盤

(31)

• コンテンツ管理システム

のデータソースから

サイトに必要なデータを

高速収集する機能を実現

- 透過的にDBとも連携

• 性能と共に可用性を両立

(オープンソースの

キャッシュでは実現不可)

• アクセス数が増えても

DBの負荷に直結しない

• パフォーマンス

約10倍

の速度向上

• 省リソース:

従来の

半分

程度での実現

• 短期実装(

3ヶ月弱

ECサイトのユーザビリティ改善

ヨドバシカメラ様 (

www.yodobashi.com

ビジネス側のニーズ

• ユーザー・レスポンス改善

• リアルタイムに情報を提供したい

• 1ページでより多くの情報を提供したい

システム側のニーズ

• 高速化のためにキャッシュ機能は必須

→ 膨大なコンテンツを格納できる大容量を実現したい

• リクエスト数の増加に依存しない安定したレスポンス性能

• 障害時の復旧コストを下げたい

ECサイトのレスポンス劣化 → データグリッドによるレスポンス改善プロジェクト

プロジェクトの背景と目的

オラクル選定理由

オラクル導入範囲

• キャッシュ内に存在しないデータを

データベースから透過的に取得

• ノード追加により、バッファ量を拡張可

能⇒将来の商品増加に対応可能

• 最低限の通信回数で多種・大量の

データを取得し、画面を構築

• 障害時にもインメモリ上のデータは

自動復旧

- データロストしない

- アプリ側でエラー制御不要

コンテンツ管理システム

(32)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

32

まとめ

: アプリケーション・グリッドによる効果

アプリケーション

B

アプリケーション

A

デ ー タ グリ ッド層 Ap p サ ー バ ー 層 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理 画面系 処理 フロー 処理

その他のデータソース

(ホスト、

Webサービス …)

企業内

統合マスターDB

アプリケーション・グリッド・アーキテクチャ

処理結果の共有

【効果】

レスポンス性能、処理効率(

CPU使用効率)

データソース依存度の軽減

セッション・データのオフロード

【効果】

同時ユーザー数向上、メモリ利用効率改善

突発的な高負荷への対応

データベース保守からの独立

【効果】

- 保守作業の改善、機会損失の防止

データソース性能からアプリケーションを解放

【効果】

- 安定したサービスレベルの維持

処理対象データのインメモリ保持

(33)

スペシャル・サイトのご案内

アプリケーション・グリッド

/ Coherence

http://www.oracle.co.jp/appgrid/

CIO for Tomorrow

http://www.oracle.co.jp/campaign/cio/

Oracle WebLogic Server マニアックス

http://www.oracle.co.jp/weblogic/

- 業種や課題別の解決策のご紹介

- 効果をわかりやすくアニメーションで紹介

- 事例動画(字幕付き)

- その他、関連ライブラリ

【連載コラム】

- CIOのミッション

- アナリストの提言

【ソリューション】 他

【3つの迷信】

【伝説のエキス

パートが語る】

【ライブラリ】 他

(34)

Copyright Oracle Corporation Japan, 2010. All rights reserved.

JRockit VE

OS

WebLogic VE: OS不要の効率的なソフトウェアスタック

標準ゲストOSとJVM

WebLogic Virtualization Option

JVM

WebLogic Server

WebLogic Server or

Other Java App Server

ファイル ネットワーク

仮想化ソフトウェア

Oracle VM

仮想化環境での処理性能

20-40%のオーバーヘッド

通常OS環境より

チューンされた環境より

20%程度高速

JVM層までの必要容量

1GB以上

50MB

JVM層までの構成ファイル数

膨大なOS設定

1つ

OS保守(パッチ、入れ替え)

必要

不要

OSセキュリティ・ホール/不正ログイン

可能性あり

なし

Coming Soon!

高速

シンプル

セキュア

V.S.

34

(35)

アプリケーション実行基盤ラインアップ

ITリソース

利用の最大化

WebLogic Server

Java EE フル機能

アプリ毎に優先度設定/流量制御

実稼動に基づく動的スレッド配分

クラスタリング機能

クラスタとしての配分制御

MAN/WANレプリケーション

Oracle Coherence

隣のサーバーのCPU/メモリ活用

ヒープ外領域メモリの利用

インメモリセッション共有

保守作業の

簡素

/均一化

プロダクション再デプロイメント機能

アプリを新版に無停止入れ替え

本番環境を間借りしたテスト実施

Oracle Database連携機能

サービス名によるDB接続

マルチデータソース機能

クラスタリング機能

ローリング・アップグレード

一括デプロイ

JRockit Mission Control

JVM内部動作までを

ドリルダウンして診断・分析

JRockit Real Time

不測のトラブル防止(

GC制御)

Oracle Coherence

データソースの計画停止時も

システムを継続稼動

運用監視

定常作業のスクリプト化

複数JVMの詳細を一元監視

障害回復の自動処理

WebLogic Server

Standard Edition

Enterprise Edition

WebLogic Server

アプリケーショングリッド

/

WebLogic Suite

複数サーバー構成による

可用性・管理性・保守性

複数サーバーを共用化

リソースの全体最適化

単一サーバー資産の最大活用

アプリ集約環境の実現

(36)

参照

関連したドキュメント

「JSME S NC-1 発電用原子力設備規格 設計・建設規格」 (以下, 「設計・建設規格」とい う。

Should Buyer purchase or use ON Semiconductor products for any such unintended or unauthorized application, Buyer shall indemnify and hold ON Semiconductor and its officers,

第1章 総論 第1節 目的 第2節 計画の位置付け.. 第1章

(参考)埋立処分場の見学実績・見学風景 見学人数 平成18年度 55,833人 平成19年度 62,172人 平成20年度

原子炉建屋から採取された試料は、解体廃棄物の汚染状態の把握、発生量(体 積、質量)や放射能量の推定、インベントリの評価を行う上で重要である。 今回、 1

竣工予定 2020 年度 処理方法 焼却処理 炉型 キルンストーカ式 処理容量 95t/日(24 時間運転).

処理処分の流れ図(図 1-1 及び図 1-2)の各項目の処理量は、産業廃棄物・特別管理産業廃 棄物処理計画実施状況報告書(平成

分別 保管 収集 運搬 再生 処分 排出事業者