ISE Webインフラストラクチャー部...

78
WebSphere sMash ハンズオン © 2008 IBM Corporation © 2008 ISE Corporation 1.sMash 基本 ISE Webインフラストラクチャー部 水野 雅裕

Transcript of ISE Webインフラストラクチャー部...

Page 1: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

1.sMash 基本

ISE Webインフラストラクチャー部

水野 雅裕

Page 2: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

2

Agenda

登場の背景

WebSphere sMash 概要

機能概要

開発環境

ランタイム

Page 3: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

33

登場の背景

Page 4: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

4

Java EE 10年を振り返って

高機能

実績

信頼性

スキル

作業量

ランタイムの前提条件

Java言語仕様の制約

よりスピーディに!シンプルに!アジャイルに!

Page 5: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

5

Ajax

Asynchronous + JavaScript + XML ?

構成技術

– JavaScript (XMLHttpRequest)

– XML, JSON

– XHTML または HTML

– CSS

– Document Object Model (DOM)

Webブラウザを,端末から,インテリジェントなエージェントに!

Webシステムを変えるアーキテクチャ・パターン

Page 6: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

6

Ajaxの動作フロー 1 : 非同期でも通信できる

サーバークライアント

ユーザーの

画面操作待ち時間

処理

サーバークライアント

サーバー指向 Ajax

ユーザーの

画面操作

ユーザーの

画面操作

待ち時間

待ち時間

処理

処理

ユーザーの

画面操作

ユーザーの

画面操作

ユーザーの

画面操作

ユーザーの

画面操作

ユーザーの

画面操作

ユーザーの

画面操作

処理

処理

処理

処理

処理

処理

Page 7: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

7

Ajaxの動作フロー 2 : データのみの送受信ができる

サーバークライアント サーバークライアント

サーバー指向 Ajax

HTML #2 JavaScript

Data#2

HTML #1 JavaScript

Data#1

Data#1

Data#2

Data#3

HTTPリクエスト

HTTPリクエスト

HTTPリクエスト

HTTPリクエスト

HTML JavaScript

HTTPリクエスト

HTTPリクエスト

データ生成

画面生成

画面生成

と描画

データ生成

データ生成

画面生成

画面描画

画面描画

画面生成

と描画

画面生成

と描画

データ生成

データ生成

スクリプト

と画面雛形

の準備画面生成

と描画

Page 8: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

8

ViewView

View

Java EEにおけるMVCパターン

ViewView

View

ControllerController

Controller

ModelModel

Model

ServerClient

1.通常のHTTPリクエスト

2.View(画面)の生成

3.Viewの返信

Modelのハード・コピー

Page 9: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

9

ViewView

View

Ajaxを部分的に取り入れたJava EE MVC パターン

ViewView

View

ControllerController

Controller

ModelModel

Model

ServerClient

1.通常のHTTPリクエスト

2.View(画面)の生成

3.Viewの返信

Modelのハード・コピー

4.Ajaxコール

5.Viewの一部の変更

Page 10: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

10

Ajaxを全面的に取り入れたMVCパターン

ModelModel

Model

ServerClient1.通常のHTTPリクエスト

2.View(画面)の雛形と

Controllerを返信

4.Dataの返信

3.Ajaxコール

8.Dataの返信

7.Ajaxコール

5.

View描画

6.操作

ViewView

View

ControllerController

Controller

9.

View描画

ViewView

View

ControllerController

Controller

ViewView

View

Page 11: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

11

REST (Representational State Transfer)

WWWのソフトウェア・アーキテクチャ・スタイル

URIでリソースを表現 目的語;XXXを...

HTTPメソッドで操作を表現 述語;YYYする

– GET 取得|検索 (SELECT)– POST 作成|挿入 (INSERT)– PUT 更新 (UPDATE)– DELETE 削除 (DELETE)

Webサービス呼び出しのためのコンベンションとして利用可能

必要なものはWebサーバとHTTPクライアントだけ!

GET /developerworks/blogs/BobSutor HTTP/1.1

Host: www-128.ibm.com

………………………………………..

HTTPヘッダの抜粋(赤字がHTTPメソッド)

Page 12: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

12

JSON (JavaScript Object Notation)

データとその構造を表す表記法

– RFC 4627

– JavaScriptのオブジェクト表記法のサブセット

– シンプル,テキスト

JavaScriptにおける操作性が高い

– 容易にパース/アンパース可能

JavaScript以外の多くのプログラミング言語

で読み書き可能

Ajax環境で、XMLの代替として、非常に多く

使用される

{

“employee" : {

"name" : "John Doe",

“dateofbirth" : “1-1-1977”

}

}

Page 13: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

13

FeedWeb上で更新情報やサマリーなどを配信する仕組み

ユーザーはReaderを利用して欲しいFeedを入手

RSSやAtomを利用

– RSS ・・・ ブログやニュース等の更新情報を配信する文書フォーマット

– Atom ・・・ 新しいWeb上のリソース変更書式と、手続きに関する仕様

Page 14: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

14

クライアント・サイド・マッシュアップ

Web

サービス

ベース・サーバー

兼 プロキシークライアント

HTML

JavaScript

外部サーバー

Web

サービス

Web

サービス

HTML

JavaScript

ダウンロード

REST

JSON or Feed

プロキシー

Page 15: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

15

クライアント・サイド・マッシュアップの課題

コントローラの実装

– 各サイトごとのプロトコルの管理• 宛先アドレス,URLフォーマット,データ・フォーマット,データ構造,他

– メディエーション

• プロトコル変換• データ・フォーマット変換• データ構造変換

– フロー制御• Web API 呼び出し順序の制御• Web API戻りデータの統合

Same origin policyに対する対応策

パフォーマンス

サーバー・サイド・マッシュアップの動機

Page 16: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

16

サーバー・サイド・マッシュアップ

Web

サービス

マッシュアップ

サーバークライアント

HTML

JavaScript

外部サーバー

Web

サービス

Web

サービス

ダウンロード

REST

JSON

シンプルな

インターフェース

複雑なコントローラ機能は

マッシュアップ・サーバーに委譲

プロトコル管理

メディエーション

フロー制御

様々なプロトコルで

多様なWebサービス呼び出し

簡単に統合データに

アクセス可能

HTML

JavaScript マッシュアップ

エンジン

サービス

統合処理

Page 17: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

17

WebSphere sMash 概要

Page 18: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

18

WebSphere sMash登場の背景

現行アプリケーション・プラットフォーム(Java EE)の課題– 例

• スキル育成コスト• 開発スピード• 重厚長大なS/W環境

– 解決策• Simple / Agile / Speedを兼ね備えた新たなWebプラットフォーム

クライアント・サイド・マッシュアップの課題– 例

• 複雑な実装• セキュリティ• パフォーマンス

– 解決策• サーバー・サイド・マッシュアップ

SOA / ビッグWebサービス(WS-*)の課題– 例

• デスクトップからWebサービスへの軽量アクセス方法– 解決策

• RESTful SOA

Page 19: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

19

WebSphere sMashアジャイル Webアプリケーション・プラットフォーム

– アプリケーション稼働環境

– 開発環境

新たなアーキテクチャ– スクリプト言語

– REST– JSON, Feeds (ATOM/RSS)– Ajax with Dojo toolkit– アセンブル・フロー

前提環境– Java SE 5.0 以上

– Eclipse 3.2 以上 (開発環境にEclipseを使用する場合)

Project Zeroとして2007年6月よりインキュベータ版を公開

Page 20: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

20

WebSphere Web 2.0技術戦略

1. エンタープライズ・システムへの容易なアクセス・インターフェース

– WebSphere 製品のREST対応

• WAS (Feature Pack), MQ, Commerce, DataPower, WESB, WPS

2. アジャイルWebアプリケーションによるエンタープライズ・システムのレバレッジ

– WebSphere sMash• バックエンド・エンタープライズ・システムやWeb上のリソースを活用したWebアプリケーショ

ンの迅速な開発

• データ(JSON, Feed)や部品(Widgets)をクライアントに提供

3. アジャイルWebアプリケーションのホスティング

– WebSphere sMash• アジャイルWebアプリケーションの稼働環境

– WebSphere XD• WebSphere ミドルウェアの運用管理

Page 21: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

21

全体像

エンタープライズ

システム

サービス

サービス

サービス

サービス

サービス

WWW

ライブラリ

リポジトリ

JavaScript

+ dojo

アセンブル

フロー

スクリプト

WSD

L

スクリプト

スクリプト

Java SE

JMSProvider

サービス

WebSphere sMash

クライアント

DBデータ

JSON

REST

HTML

ATOM

JMS

JMS

REST

SOAP

ATOM

RSS

SOAP

REST

REST

REST

JSON

JSON

HTTP

or

or

サーバー・サイド・マッシュアップ・エンジン

Page 22: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

22

適用シナリオ#1:Web アプリケーション

クライアント:ブラウザ等

– JavaScript,Dojo Toolkit, DOM API, HTML, CSS等で実装

– Ajax,REST等でリクエストを送信

サーバー:WebSphere sMash– HTTPプロトコル・スタック

– Groovy, PHPを利用して実装

• 必要に応じて– 既存のスクリプトやライブラリ,テンプレートを活用

– WWWの外部WebサービスやFeedsを活用

– DB等リソース・アクセス

– アセンブル・フローを活用

– JSON,Feeds(ATOM, RSS),またはHTMLを返信

Page 23: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

23

適用シナリオ#1:Web アプリケーション

サービス

サービス

WWW

ライブラリ

リポジトリ

JavaScript

+ dojo

WebSphere sMash

クライアント

DBデータ

JSON

REST

ATOM

RSS

REST

REST

JSON

Java SEHTTP

既存テンプレート

ライブラリを再利用

既存スクリプト

を活用

外部WWWの

Webサービス,Feeds

を活用

スクリプト

スクリプト

スクリプト

or

アセンブル

フロー

Page 24: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

24

適用シナリオ#2:拡張SOA RESTful SOA

クライアント:ブラウザ等

– JavaScript,Dojo Toolkit, DOM API, HTML, CSS等で実装

– Ajax,REST等でリクエストを送信

サーバー:WebSphere sMash– HTTPプロトコル・スタック

– Groovy, PHPを利用して実装

• 必要に応じて

– 既存のスクリプトやライブラリ,テンプレートを活用

– WWWの外部WebサービスやFeedsを活用

– DB等リソース・アクセス

– アセンブル・フローを活用

– 既存SOA資産の再利用

– エンタープライズ・システムの再利用

– JSON,Feeds(ATOM, RSS),またはHTMLを返信

Page 25: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

25

適用シナリオ#2:拡張SOA

エンタープライズ

システム

サービス

サービス

サービス

サービス

サービス

WWW

ライブラリ

リポジトリ

JavaScript

+ dojo

スクリプト

WSD

L

スクリプト

スクリプト

Java SE

JMSProvider

サービス

WebSphere sMash

クライアント

DBデータ

JSON

REST

ATOM

JMS

JMS

REST

SOAP

ATOM

RSS

SOAP

REST

REST

REST

JSON

JSON

HTTP

アセンブル

フロー

or

Web技術でSOAシステムにアクセス

RESTful SOA !

アセンブル・フローを活用して

既存のSOA資産,

エンタープライズ・システムを再利用

Page 26: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

26

パッケージング

パッケージ名 説明

WebSphere sMash WebSphere sMashの製品版.

WebSphere sMash Reliable Transport Extensions

WebSphere sMashの拡張機能の製品版.

メッセージング等,拡張通信機能の提供.

WebSphere sMash Developer Edition (DE)

WebSphere sMashのコミュニティ版.

Project Zero

コードネーム:Silverstone

新実装のコミュニティ版.

Page 27: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

27

Community Driven Commercial Development

商用ソフトウェア製品開発プロセス

– 開発プロセスをオープン化

– ソフトウェア製品の事前評価

– ニーズに基づいたソフトウェアの迅速な提供

www.projectzero.org– 開発チームとのインターフェース

– 新コード, ドキュメントのダウンロード

Page 28: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

28

ハードウェア/OS 前提環境

28

OS種別 OS ハードウェア

Linux SuSE ES 10 32 bit, 64 bitRHEL 5.0 32bit, 64bit

Intel/AMD アーキテクチャのみサポート

配備に必要なディスク・スペース(JDK含む):250MB + 1 アプリケーションあたり1MB

開発に必要なディスク・スペース(IDEとJDKを含む):275MB + 1 アプリケーションあたり1MB

Windows Windows Server 2003 32 bit, 64 bit

配備に必要なディスク・スペース(JDK含む):250MB + 1 アプリケーションあたり1MB

開発に必要なディスク・スペース(IDEとJDKを含む):275MB + 1 アプリケーションあたり1MB

Page 29: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

2929

機能概要

Page 30: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

30

WebSphere sMashの特長

スピード

シンプル

アジャイル

Simpleness

Agility

Speed

Page 31: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

31

アプリケーションの構成要素

作る

– 動的スクリプト言語

– イベント・ベース・ランタイム

– RESTフレームワーク

– シンプルなデータ構造

• JSON• Feeds – ATOM, RSS –

– コンベンション・オーバー・コンフィギュレーション

– モジュラー・アーキテクチャ

• リポジトリ

– Eclipseプラグイン

– アプリケーション・ビルダー

組み合わせる

– アセンブル・フロー

実行する

– アプリケーション・セントリック・ランタイム

Page 32: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

32

作る:スクリプト言語

WebSphere sMash はスクリプト言語のランタイムを提供

スクリプト言語を使ってアプリケーションを開発

– Groovy

– PHP

Javaはシステム基盤開発言語という位置づけ

– システム拡張やアプリケーション・ライブラリ開発に利用

– アプリケーション実装に利用することも可能 (要追加構成)

AgilitySpeed

Page 33: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

33

作る:RESTSimpleness

Firstname:Bill

Dateofbirth:1976-09-25

クライアント サーバー

JavaScript

POSTメソッドでリソースを作成する

GETメソッドでリソースを検索

POST /employees/people

{

"firstname": "Bill",

“dateofbirth": "1976-09-25"

}

GET /employees/people/Bill

{

"firstname": "Bill",

"dateofbirth": "1976-09-25"

}

Page 34: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

34

作る:WebSphere sMash REST フレームワーク

操作HTTP

メソッドURI スクリプト名

スクリプトの

メソッド

検索 GET /resources/employees employees onList()

検索 GET /resources/employees/1 employees onRetrieve()

挿入 POST /resources/employees employees onCreate()

更新 PUT /resources/employees/1 employees onUpdate()

削除 DELETE /resources/employees/1 employees onDelete()

Simpleness

Page 35: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

35

作る:Zeroリソース・モデル - ZRM -

データ・アクセス・フレームワーク

シンプルなデータ・アクセス・インターフェースを提供

– プログラマティックAPI– RESTful HTTP API

• /resources/employees?firstname__contains=Jo&birthdate__day=25 • /resources/employees?firstname__contains=Jo&start=5&count=5

JSON, ATOM形式でデータを提供

AgilitySpeed Simpleness

Page 36: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

36

作る:Zeroリソース・モデル - ZRM -AgilitySpeed Simpleness

JavaScript

+ dojo

スクリプト

WebSphere sMash

クライアント

JSON

RESTful HTTP API

ATOMor

DBデータ

ZRM

プログラマティックAPICollection

SQL

リザルトセット

DBテーブルの

スキーマ定義

リソース・ハンドラ

ZRM.delegate();

Page 37: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

37

作る:モジュラー・アーキテクチャ

スモール・コア

– 5.4MB (Groovy)• PHPサポートには加えて14.5MB必要

– HTTPサーバー機能込み

依存性解決

– 拡張機能はダウンロード

• 開発者は、必要な拡張機能を定義

• パッケージ管理システムが拡張機能を管理

Agility Simpleness

Page 38: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

38

作る:モジュラー・アーキテクチャ

<appRoot>

+ config

+ivy.xml

+ Zero Resolve Library

zero. assemble.flowdojo

zero.wbtoolszero.data

……

springapache-ds

commons-httpcommons-lang

commons-io

……

Ivy

Implementation

ローカル・リポジトリ

リモート・リポジトリ -sMash-

リモート・リポジトリ -Maven-

1.依存性解決

2.ローカル・リポジトリ

検索

3.リ

モー

ト・リ

ポジ

トリ

検索

4.モジュールのコピー

5.参照

Agility Simpleness

Page 39: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

39

【参考】 依存性解決に関連した設定項目

リモート・リポジトリの参照先

– CLI版: <zero.home>/config/bootstrap.properties で設定

– Eclipse版: Window > Preferences > WebSphere sMash から

設定

ローカル・リポジトリの格納先

– CLI版: <zero.home>/config/local.properties で設定デフォルトは <zero.home>/zero-repository

– Eclipse版: Window > Preferences > WebSphere sMashデフォルトは <user.home>/zero-repository/experimental

Page 40: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

40

作る:利用可能なモジュール

65以上のモジュールが利用可能 (2008年4月)– データ・フォーマット関連

• JSON, ATOM, RSS, XML

– データ・アクセス関連

– リソース・モデリング関連

– セキュリティ関連

– アセンブル・フロー関連

– サービス呼び出し関連• Amazon ECS, Flickr, Weather, 他

– ユーティリティ

• HTML パース等

– 管理ツール

– 開発ツール

– Reliable Transport Engine for Messaging Interactions

Agility Simpleness

Page 41: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

41

組み合わせる:WebSphere sMash Activities

アセンブル・フロー

– ビジュアルにマッシュアップ• Webサービス

– REST– SOAP

ビルトイン・アクティビティ

– Feedsの取得

– サービスの呼び出し

– データ変換• XSLT, …

– ループ等の制御構文

– 条件構文

– フィルター / ソート / マージ / …– メール送信

カスタム・アクティビティ

– スクリプトとして実装

Agility

Page 42: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

42

1 アプリケーション : 1 Java Virtual Machine– HTTPサーバ機能包含

– プロキシー・サーバーと組み合わせることも可能

• クラスタリング

• 複数アプリケーションへのルーティング

アプリケーションの配備は不要

JVMプロセスのリサイクル

– アイドル・タイムアウトまたは 大リクエスト数

Simpleness実行する:アプリケーション・セントリック・ランタイム

Page 43: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

43

実行する:ランタイムの特徴

高速起動

クリーン

– 比較的短時間でリサイクル

– アプリケーション・バグの影響を 小化

スモール・フットプリント

幅広いJVMで稼動

Speed Simpleness

Page 44: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

44

実行する:ランタイム・モデル

ポートポート

Zero アプリケーション

Zero Socket Opener

(ZSO)

初回のリクエスト

2回目以降のリクエスト

ZSO がリクエストを処理

ZSO がアプリケーションを開始

ポートのオーナーシップを委譲 アプリケーションは、アイドル・タイムアウトまたは 大リクエスト数に達するまで稼動.

その後JVMは、正常に終了.

リクエストをZeroアプリケーションに直接転送

ZSO がポートの

オーナーシップを

要求

Speed Simpleness

Page 45: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

45

仮想ディレクトリ

拡張モジュールによって提供されるリソースをシームレスに統合

例)アプリケーションのデフォルト画面表示

public/(ファイルなし)

public/index.gt

[アプリケーション]

[zero.core.webtools]

拡張モジュール内を探索

http://loalhost:8080/index.gt

表示

public/index.gtが存在すれば、

こちらが優先される

http://www.projectzero.org/sMash/1.0.x/docs/zero.devguide.doc/zero.core/VirtualizedDirectories.html

Page 46: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

46

WebSphere sMash が提供するサービス

WebSphere sMash V1.0 には以下のサービスを含む

–Timer• スケジューラーやタイマーイベントの機能を提供

–Kicker• HTTPリクエストを送信する機能を提供

–File Kicker / Receiver• ファイル更新のポーリングと送受信の機能を提供

Page 47: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

47

開発環境

Page 48: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

48

WebSphere sMash アプリケーション開発環境

開発環境(開発ツール)のストラテジー概要

– スモール・フットプリント

– 初期導入の 小化

– 必要に応じてモジュールをダウンロード

– 直感的で修得が容易 “intuitive and easy to learn”• 自分に適した開発環境(開発ツール)を選択可能

WebSphere sMash の開発環境(開発ツール)

– CLI (コマンド・ライン・インターフェース)

– アプリケーション・ビルダー (AppBuilder)– Eclipse: WebSphere sMash が Eclipse プラグインを提供

– Groovy および Java 用– PHP 用

Web ツール

– アプリケーション開発で役立つユーティリティー機能群を提供

Page 49: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

49

開発環境(開発ツール)概要

CLI (コマンド・ライン・インターフェース)

– コマンド・ベース(non GUI)の作業環境

アプリケーション・ビルダー (AppBuilder)– sMash アプリケーションとして実装された Web ベースの IDE

• sMash DE に含まれ、Project Zero コミュニティーでサポート

– Web ブラウザー・ベースの完全な開発環境で、以下の機能も提供

• アセンブル・フロー・エディター• Dojo 対応のページ・エディター

Eclipse– WebSphere sMash がプラグインを提供

• Groovy およびJava• PHP

– アセンブル・フロー・エディターも使用可

– 現状では、Project Zero コミュニティーでサポート

Page 50: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

50

開発環境(開発ツール)比較

アプリケーション・ビルダーGUI による操作

言語対応のエディター

ページ・エディター (Dojo対応)

GUI による操作

言語対応のエディター、HTMLエディター

デバッガーによるデバッグ

他の Plug-in による機能拡張

Eclipse

CLIモジュール(アプリケーション)の作成・起動・停止

モジュールの管理(依存性解決・更新、パッケージ化、・・・)

モジュール・グループの管理

・・・

アセンブル・フロー・エディター

Page 51: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

51

CLI の概要

コマンド・ベース(non GUI)の作業環境で、アプリケーション開発とアプリケーション実行用の基本機能を提供

CLI タスクのカテゴリー

– 依存性管理

– モジュール・クラスパス

– モジュール・タスク

– モジュール・グループ・タスク

– リポジトリー・タスク

独自の CLI タスクを作成することも可能

Command line interface taskshttp://publib.boulder.ibm.com/infocenter/wsmashin/v1r0/topic/com.ibm.websphere.sMash.doc/core/zero.cli.tasks/docs/en/CliTasks.html

Page 52: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

52

CLI の使用準備

前提

– sMash または sMash DE

準備

• PATH に JDK と sMash のパスを設定

• sMash の製品版の場合は、以下のディレクトリーを PATH に設

– <sMash導入先>jre¥bin (JDK)– <sMash導入先> (sMash)

Page 53: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

53

CLI の使用方法

zero コマンド:

タスク 説明compile モジュールの /java ディレクトリーにあるすべての Java ソース・ファイルをコンパイルします。create 現行ディレクトリーに新規モジュールを作成します。encode パスワードなどのストリングを構成ファイル内で使用するためにエンコードします。help 指定したコマンドに関する文書を出力します。info ベース URL などの、アプリケーションに関する基本情報を返します。modulegroup モジュール・グループを管理します。package モジュールを zip ファイルとしてパッケージ化します。publish モジュールをローカル・リポジトリーに公開します。recycle アプリケーションを再利用します。repository リポジトリーを管理します。resolve モジュールの依存関係を判別します。 →モジュールの依存関係を解決します。restdoc This command runs the RESTdoc tool and generates HTML documentation

for the application's REST APIs.rollback 前回実行した resolve または update の結果を元に戻します。runsql データベースに対して SQL ファイルを実行しますsearch リポジトリー内の一致するすべてのモジュールを検出し、出力します。start アプリケーションを開始します。stats アプリケーションについて収集された現在の統計情報を返します。status アプリケーションのステータスを返します。stop アプリケーションを停止します。switch モジュール・グループを切り替えます。update モジュールを 新の依存関係に解決します。user ユーザーを作成および編集します。version バージョン情報を表示します。

青文字のタスクは、アプリケーション・ルート・ディレクトリーでのみ実行可能です。

> zero [main-opts] <task> [task-args]

restdoc タスクは、zero.restdoc を追加する

と表示されます。

Page 54: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

54

アプリケーション・ビルダーの概要

ブラウザー・ベースのIDE– Web 上で直接アプリケーションを構築可能

sMash アプリケーションとして実装

開発ライフサイクル全体をカバー

– 作成、修正、テスト

アセンブル・フロー・エディター

– アセンブル・フロー作成用のビジュアル・エディターを提供

Web ページ作成用のビジュアル・エディターを提供

– Dojo 対応のページ・エディターを含む

sMash DE でのみ使用可能

Page 55: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

55

アプリケーション・ビルダーの使用

前提

– sMash DE– Mozilla Firefox v 2

起動

– sMash DE のインストール先ディレクトリーで startAppBuilder を実行• 初の起動時に、モジュールのダウンロードが行われる• インターネットに接続できる状態で初期起動する

使用方法

– ブラウザーで http://localhost:8070 にアクセス

> startAppBuilderアプリケーションが始動して、http://localhost:8070/ で要求を処理していますCWPZT0600I: コマンド start は正常に完了しました

補足: Silverstoneの 新 ビルドでは、起動・停止コマンドが以下のように変更されています。

起動: AppBuilder start停止: AppBuilder stop

Page 56: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

56

初期画面

Page 57: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

57

【参考】 アプリケーション・ビルダーの更新

アプリケーション・ビルダーは改良が続けられている

新のアプリケーション・ビルダーに更新する場合は

– アプリケーション・ビルダーを停止• stopAppBuilder

(Silverstone ビルドの場合は、AppBuilder stop)

– アプリケーション・ビルダーのディレクトリーに移動• <sMashDE導入ディレクトリー>¥appbuilder

– 以下の CLI コマンドを実行

• zero modulegroup update• zero update

App Builderhttp://www.projectzero.org/zero/silverstone/latest/docs/zero.gettingstarted.doc/zero.gettingstarted.doc/AppBuilder.html

Page 58: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

58

Eclipse - Java と Groovy 用のプラグイン

前提環境

– Windows, Linux または Mac– Java SE Development Kit (JDK) 5.0 または 6.0– Eclipse IDE for Java Developers 3.2.2 以降

Java と Groovy 用のプラグインをインストール

– WebSphere sMash Update Site からプラグインをインストール

• http://www.projectzero.org/zero/silverstone/latest/update/zero.eclipse

Project Zero Downloads > Project Zero Eclipse Plug-in for Java and Groovyhttp://www.projectzero.org/download/eclipse_java.php

Installing and configuring: Eclipse for Java and Groovyhttp://www.projectzero.org/zero/silverstone/latest/docs/zero.gettingstarted.doc/zero.gettingstarted.doc/Eclipse.html

– 新の前提環境などは、下記 URL を参照

Page 59: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

59

Eclipse - PHP 用のプラグイン

前提環境

– Windows, Linux または Mac– Java SE Development Kit (JDK) 5.0 または 6.0– Eclipse PHP Development Tools (PDT) 1.0.3

PHP 用のプラグインをインストール

– WebSphere sMash Update Site からプラグインをインストール

• http://www.projectzero.org/zero/silverstone/latest/update/zero.eclipse.php

Project Zero Downloads > Project Zero Eclipse Plug-in for PHPhttp://www.projectzero.org/download/eclipse_php.php

Installing and configuring: Eclipse for PHPhttp://www.projectzero.org/zero/silverstone/latest/docs/zero.gettingstarted.doc/zero.gettingstarted.doc/EclipsePHP.html

– 新の前提環境などは、下記 URL を参照

Page 60: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

60

Eclipse - アセンブル・フロー・エディターの使用

準備

– アプリケーションに以下の依存性を追加

• <dependency name=”zero.assemble.tooling” org=”zero” rev=”[1.1.0.0, 1.2.0.0[”/>– 依存性を解決

使用

– アプリケーションを起動

– Webブラウザで、以下のURL にアクセス

Project Zero ブログ >> Blog Archive >> Assemble Flow Editor起動方法:Eclipse編

http://www.projectzero.org/jblog/index.php/2008/07/07/assemble-flow-editor%e8%b5%b7%e5%8b%95%e6%96%b9%e6%b3%95%ef%bc%9aeclipse%e7%b7%a8/

http://localhost:8080/tooling/

–依存性の追加と解決、アプリケーションの起動方法は、以下の使用例を参照

Page 61: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

61

Eclipse - モジュール・グループに関して

モジュール・グループは experimental のみ

– sMash DE と異なり、デフォルトではモジュール・グループ stable のモジュールを使用できない

sMash DE と同様に stable のモジュールを利用したい場合は、Preferences 画面で以下の設定を変更

– ローカル・リポジトリー・ホーム

• 別ディレクトリーを指定

– リモート・リポジトリー・チェーン

Project Zero ブログ >> Blog Archive >>WebSphere sMash Developer Edition (DE) のEclipseプラグインを導入する

http://www.projectzero.org/jblog/index.php/2008/07/07/websphere-smash-developer-edition-de-%e3%81%aeeclipse%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%99%e3%82%8b/

https://www.projectzero.org/sMash/1.0.x/repo/base/https://www.projectzero.org/sMash/1.0.x/repo/rte/https://www.projectzero.org/sMash/1.0.x/repo/samples/

Page 62: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

62

Eclipse - Groovy サポートの有効化

Groovy サポート

– デバッガーによる Groovy スクリプトのデバッグ

• デバッガーでは、sMash のグローバル・コンテキスト

の内容も確認可

– コード・アシスト機能

Groovy サポートを有効にする

– プロジェクトのポップアップ・メニューで「Add Groovy Nature」を選択

– Groovy スクリプトがコンパイルされ、bin-groovy ディレクトリー内にクラス・ファイルが作成され、ブレークポイントが設定できるようになる

Page 63: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

63

Web ツール概要

zero.core.webtools

– アプリケーション開発時に役立つユーティリティーを提供

– 本番用のアプリケーションではセキュリティーなどの観点から使用しない

• config/ivy.xml から zero.core.webtools の依存定義を除去

提供する機能

– アプリケーションのデフォルト・インデックス・ページ (Web ツール用)

– リクエスト・データ・ ビューアー

– ユーザー・サービス・アプリケーション

• ファイル・ベースのユーザー・レジストリーの、Web ベースの管理機能

– 仮想ディレクトリー・ブラウザー

– 開発者向けのデフォルト・エラー・ページ (zero.core の機能)

– Groovy コンパイル・エラー用のエラー・ページ (zero.core の機能)

Page 64: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

64

Web ツール(1)

アプリケーションのデフォルト・インデックス・ページ

– Web ツール提供のもの

– 独自のインデックス・ページを作成すると、このデフォルト・ページの表示が抑止される

– http://localhost:8080/

リクエスト・データ・ ビューアー

– ヘッダー、クッキー、パラメーターなどのリクエスト情報を表示

– http://localhost:8080/zero/webtools/snoop.gt

Page 65: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

65

Web ツール(2)

ユーザー・サービス・アプリケーション

– ファイル・ベースのユーザー・レジストリーの、Web ベースの管理機能

– http://localhost:8080/zero/webtools/user

仮想ディレクトリー・ブラウザー

– 仮想ディレクトリー内のファイル一覧と、選択したファイルの内容を表示

– 集積したファイルの一覧を表示

• ファイル一覧には、ファイルの提供元モジュールの名前も表示

– App Builder の「Explorer」タブも同様の機能を提供

– http://localhost:8080/zero/webtools/browser.gt

Page 66: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

66

デバッグ:デバッガーの使用 (Eclipse)

デバッガーによるデバッグ

– ブレーク・ポイント

– ステップ実行

– 変数値の表示

– グローバル・コンテキストの表示

アプリケーション・ロジックの詳細なデバッグ向き

Page 67: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

67

デバッグ:AJAX / Dojoクライアント

Firebug によるデバッグ (Firefox のみ)

– Firebug: http://getfirebug.com/– 以下の機能を持つ強力なデバッグ・ツール

• コンソール出力• HTML の表示/編集• スクリプト、CSSの表示/編集

• ブレーク・ポイントの設定によるデバッグ、変数値の表示

Firebug Lite (Dojo同梱)によるデバッグ

– コンソール出力機能とコマンドによる変数値の表示機能などを提供

– Dojo の djConfig に "isDebug: true" を指定

ログ出力によるデバッグ

– Java Script 内にデバッグ用のログ出力を埋め込む• console.<出力レベル>( "メッセージ" )• 例: console.debug( "Hello world." )

– 出力先• Firebug または Firebug Lite のコンソール

Page 68: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

68

ランタイム

Page 69: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

69

Web2.0 向けランタイムへの要請

迅速な起動

– アジャイルな開発に対応し、透過的なエラーリカバリーを実現するために、ランタイムは素早く(数秒程度)で起動する必要がある

グレースフル・リカバリー

– エラーによるランタイムの停止とリスタートの過程において、セッションが透過的に継続していなければならない

アプリケーションの分離

– お行儀の悪いアプリケーションが、他のアプリケーションに対して破壊的な影響を与えてはならない

プログラミングモデル

– ニーズをベースにしたアプリケーション開発(プロトタイプ)に適したシンプルさ

スケーラビリティ

– 比較的低コストで多くのアプリケーションを実行する能力

– アプリケーションやトラフィックに応じた課金のサポートやコスト事前見積もり

Page 70: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

70

WebSphere sMash ランタイム・アーキテクチャ

WebSphere sMash Core

New Reality RuntimeJava SE, PHP エンジン

Libraries,Service Wrappers

Applications, Services

JSON, Atom, メディエーション, データアクセス, …

Timer, Queue, …

REST, Event, スニペット, Global Context

Page 71: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

71

sMashのランタイム・モデル

ポートポート

Zero アプリケーション

Zero Socket Opener

(ZSO)

初回のリクエスト

2回目以降のリクエスト

ZSO がリクエストを処理

ZSO がアプリケーションを開始

ポートのオーナーシップを委譲 アプリケーションは、アイドル・タイムアウトまたは 大リクエスト数に達するまで稼動.

その後JVMは、正常に終了.

リクエストをZeroアプリケーションに直接転送

ZSO がポートの

オーナーシップを

要求

Page 72: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

72

sMashランタイムの特徴

迅速な起動

–アプリケーションJVMは非常に短時間で起動

–アプリケーションサービスは直ちに利用可能

クリーン

–グレースフル・リカバリー、アプリケーション分離、「悪い」コードを許容

–短寿命プロセス

• 指定した数のリクエストを実行後、またはアイドルタイムアウト後に再起動

• 再起動後もステートは保たれる

安価

–小規模から大規模まで、効率的なコストで実行可能

–極めて小さいメモリーフットプリント

「既存」JVMで対応可能

– IBM, Sun, Macなど: 任意の JavaSE 5/6 JVM

Page 73: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

73

Web2.0向け Java ランタイムのチューニング

WebSphere sMash は「既存の」JDKをサポート

–IBM JVM 開発チームは、sMashへの 適化を研究中

IBM JDKの場合、sMashは2つの機能を活用

–-Xquickstart• 高速起動のためにJITを 適化

–-Xshareclasses• 複数JVMプロセス間でクラス情報を共有可能に

特定のsMashアプリケーションに対して

–追加のチューニングが可能

Page 74: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

74

ZSOの設定

ランタイム・モード

– アプリケーションの実行モードを指定• /config/runtime/mode = "develpoment" | "production"

アイドル・タイムアウト

– 後のリクエストからの経過時間を指定 ("-1"=タイムアウトなし)• /config/zso/recycle/production/idleTimeout = 300• /config/zso/recycle/development/idleTimeout = 60

大リクエスト

– JVMが処理するリクエストの 大値(累計)

• /config/zso/recycle/production/maxRequests = 10000イミディエイト・スタートの有効化

– zero start実行後、直ちにアプリケーションを起動

• /config/zso/immediateStart = true• 通常はリクエスト受付までアプリケーションは起動されない

http://www.projectzero.org/sMash/1.0.x/docs/zero.devguide.doc/zero.management.zso/ZSOManagementExtensions.html

Page 75: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

75

JVM

JVM

JVM

JVM

sMash特有のJavaオプション

Java6 SR1 ではsMash専用オプションを提供 (-Xzero)–このオプションにより、新しい機能を有効化

• zipデータのキャッシュを共有

• Stringリテラルデータを共有

–既存の共有クラス機能をベースに実装

zip cache zip cachezip cache

.jar

JVM JVM

Page 76: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

76

sMash セキュリティ 概要

sMashはHTTP処理における一般的なセキュリティ手法を標準機能でサポート

sMashのセキュリティは Java Authentication and Authorization Service (JAAS) ベースで実装

以下のサービスを提供:

– 認証

– 認可 (ユーザー/グループ 又はロールベース)

– シングルサインオン: Lightweight Third-Party Authentication (LTPA) のみ対応

– カスタムセキュリティ

セキュリティ設定は zero.config に記述

OpenIDに対応

Page 77: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

77

セキュリティ : ACF(Active Content Filtering)

WebSphere sMashの主なターゲットは次世代のダイナミックWebアプリケーション(典型的にはWeb 2.0という言葉で代表される)であり、マッシュアップ/Wiki/Blogといった、ユーザーが提供するコンテンツを活用する対話型Webアプリケーションにフォーカスしている

これらのアプリケーションをサポートするために、sMashはACF(Active Content Filetering) ライブラリを提供しており、アプリケーション開発者はsMashアプリケーションの一部としてその機能を

利用することができる

ACFによって、アプリケーション開発者はWeb2.0向けアプリケーションで発生しがちなクロスサイトスクリプティング(XSS)などの問題を回

避しやすくなる

Page 78: ISE Webインフラストラクチャー部 水野雅裕public.dhe.ibm.com/software/dw/jp/websphere/smash/smash...Client Server 1. 通常のHTTPリクエスト 2.View(画面)の生成

WebSphere sMash ハンズオン

© 2008 IBM Corporation© 2008 ISE Corporation

78

【参考】 WebSphere sMash 関連サイト

WebSphere sMashメイン・ページ (日本語)• http://www-06.ibm.com/jp/software/websphere/apptransaction/smash/

WebSphere sMashマイクロ・サイト (日本語)• http://www-06.ibm.com/jp/software/websphere/smash/index.html

WebSphere sMashドキュメンテーション (英語)• http://publib.boulder.ibm.com/infocenter/wsmashin/v1r0/index.jsp

Project Zeroメイン・ページ (英語)• http://www.projectzero.org/

Project Zero 日本語Blog• http://www.projectzero.org/jblog/

developerWorks Project Zero 関連リンク集 (日本語)• http://www.ibm.com/developerworks/jp/offers/projectzero/

developerWorks WebSphere sMash (英語)• http://www.ibm.com/developerworks/websphere/zones/smash/

WebSphere sMash アナウンスメントW/S 資料 (日本語)• http://www-06.ibm.com/jp/domino01/mkt/websphere.nsf/doc/002760F2