71
業務システムで使う Spring Dynamic Modules -Springとモジュールの行方 by OSGi- Japan Spring User Group こんぴろ

業務システムで使うSpring Dynamic Modules

Embed Size (px)

Citation preview

Page 1: 業務システムで使うSpring Dynamic Modules

業務システムで使うSpring Dynamic Modules

-Springとモジュールの行方 by OSGi-

Japan Spring User Group

こんぴろ

Page 2: 業務システムで使うSpring Dynamic Modules

自己紹介

Page 3: 業務システムで使うSpring Dynamic Modules

今日のお話の対象者

• Modularityって、なんでうれしいのかいまいちよくわからない。

• Spring DMって出てきたけど、どう使うのかよく分からない。

という方です。込み入った話は懇親会で☆

Page 4: 業務システムで使うSpring Dynamic Modules

まずは

Page 5: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesを導入すると何がうれしいの?

Page 6: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesを導入すると何がうれしいの?

へのSpringの導入レポートよりhttp://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf

Springを使って開発

Page 7: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesを導入すると何がうれしいの?

• Increased Productivity(生産性の向上)

• Superior User Experience(優れたUX)

• Improved Application Quality(品質の改善)

• Focus on Business Logic(ビジネスロジックに注力)

• Easier Migration to OSGi(OSGiへの移行が簡単)

へのSpringの導入レポートより

http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf

Page 8: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesを導入すると何がうれしいの?

• Increased Productivity(生産性の向上)

• Superior User Experience(優れたUX)

• Improved Application Quality(品質の改善)

• Focus on Business Logic(ビジネスロジックに注力)

• Easier Migration to OSGi(OSGiへの移行が簡単)

Springの利点

SpringDM

の利点

へのSpringの導入レポートより

http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf

Page 9: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesって何?

• OSGi用のSpringFramework

• OSGiに載せてモジュール化を促進

• 移行のためにはOSGiの知識が必要

→でもSpring DMを使えば学習コストを削減

→さらにPOJOを保てるのでテストしやすい

→とLinkedInのレポートに書かれてました。

Page 10: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesって何?

• OSGi用のSpringFramework

• OSGiに載せてモジュール化を促進

• 移行のためにはOSGiの知識が必要

→でもSpring DMを使えば学習コストを削減

→さらにPOJOを保てるのでテストしやすい

→とLinkedInのレポートに書かれてました。

Page 11: 業務システムで使うSpring Dynamic Modules

Spring Dynamic Modulesって何?

• OSGi用のSpringFramework

• OSGiに載せてモジュール化を促進

• 移行のためにはOSGiの知識が必要

→でもSpring DMを使えば学習コストを削減

→さらにPOJOを保てるのでテストしやすい

→とLinkedInのレポートに書かれてました

Page 12: 業務システムで使うSpring Dynamic Modules

なぜModulesをDynamicに

なのか?

Page 13: 業務システムで使うSpring Dynamic Modules

本日のポイント

• Modulesとは?

–ライブラリは Modulesの一つです

–ソフトウェアをModulesにすると…

– 構成を理解しやすく、保守しやすい

– 分業しやすい

–Dynamicとは?

– Modules間を動的に接続すること

– ModulesをDynamicにすると…

サービスをModulesから動的に注入できます

Page 14: 業務システムで使うSpring Dynamic Modules

2009年04月

Qcon Tokyoにて

Page 15: 業務システムで使うSpring Dynamic Modules

Qcon Tokyoにて

Spring dm Serverは未来への投資By Rod Johnson氏

注:dmはDynamic Modulesの略

Page 16: 業務システムで使うSpring Dynamic Modules

2009年08月

JSUG勉強会にて

Page 17: 業務システムで使うSpring Dynamic Modules

JSUG勉強会にて

「Modularityを考える-複雑系のアーキテクチャ」

by熊澤公平先生

Page 18: 業務システムで使うSpring Dynamic Modules

氏(熊沢先生)

曰く

Page 19: 業務システムで使うSpring Dynamic Modules

モジュール化は

Page 20: 業務システムで使うSpring Dynamic Modules

大変な仕事ネジですら400年かかった

簡単にはできるわけがない

Page 21: 業務システムで使うSpring Dynamic Modules

大変な仕事ネジですら400年かかった

簡単にはできるわけがない

Page 22: 業務システムで使うSpring Dynamic Modules

それじゃ

Page 23: 業務システムで使うSpring Dynamic Modules

自分達の開発の現場で

モジュール化は使えないのか?

Page 24: 業務システムで使うSpring Dynamic Modules

Page 25: 業務システムで使うSpring Dynamic Modules

自分達の現場で使う

モジュール

Page 26: 業務システムで使うSpring Dynamic Modules

それがRod氏の言う

未来への投資

だと思います。

Page 27: 業務システムで使うSpring Dynamic Modules

熊沢さんも

モジュール化に対し大きく3点

指摘していました。

Page 28: 業務システムで使うSpring Dynamic Modules

現場でモジュール化を活用するなら、そのうち2つが大事

Page 29: 業務システムで使うSpring Dynamic Modules

子(熊沢先生)

曰く

Page 30: 業務システムで使うSpring Dynamic Modules

モジュール化は

Page 31: 業務システムで使うSpring Dynamic Modules

大変な仕事1.モジュールとして機能する

2.モジュールとして認められる(標準化)

Page 32: 業務システムで使うSpring Dynamic Modules

大変な仕事1.モジュールとして機能する

2.モジュールとして認められる(標準化)

Page 33: 業務システムで使うSpring Dynamic Modules

大変な仕事1.モジュールとして機能する

2.モジュールとして認められる(標準化)

また、

Page 34: 業務システムで使うSpring Dynamic Modules

モジュールを作るならばモジュール間でイノベーションの差が

激しいところで分割する

Page 35: 業務システムで使うSpring Dynamic Modules

モジュールを作るならばイノベーションの差が

激しいところで分割する

Page 36: 業務システムで使うSpring Dynamic Modules

モジュール化についての私見

• モジュールとして機能する単位で• モジュールはイノベーションの差が激しいところで分割する

• モジュールの標準化を目指さない→(最初はプロジェクトに閉じる)

これならモジュール化が進められると僕は思ったのです。

Page 37: 業務システムで使うSpring Dynamic Modules

それじゃ、

Page 38: 業務システムで使うSpring Dynamic Modules

そもそも

モジュール化ってなんだっけ?

Page 39: 業務システムで使うSpring Dynamic Modules

モジュール化とは?

オブジェクト指向をもう一歩進め、抽象的に物事を扱えるようにしたものです。(私見)

歴史をひもとくと理解できます。

Page 40: 業務システムで使うSpring Dynamic Modules

ソフトウェアの抽象化の歴史(1)

• ソフトウェアは何でできているか?– 極論すると0と1の2値で表現されます。

Page 41: 業務システムで使うSpring Dynamic Modules

ソフトウェアの抽象化の歴史(2)

• ソフトウェアは何でできているか?– 極論すると0と1の2値で表現されます。– メモリに書き込む段階で2値表現は扱い辛いので

16進値(01FF等)で扱われます。

Page 42: 業務システムで使うSpring Dynamic Modules

ソフトウェアの抽象化の歴史(3)

• ソフトウェアは何でできているか?– 極論すると0と1の2値で表現されます。– メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で扱われます。

– CPUの命令セットは16進値に対応し、より人が扱いやすいアセンブラ(機械語)で扱われます。

Page 43: 業務システムで使うSpring Dynamic Modules

ソフトウェアの抽象化の歴史(4)

• ソフトウェアは何でできているか?– 極論すると0と1の2値で表現されます。– メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で扱われます。– CPUの命令セットは16進値に対応し、より人が扱いやすいアセンブラ(機械語)で扱われます。

– アセンブラのまとまった処理やアドレスに対し、ラベルをつけ、関数や変数として扱う高級言語が登場。

– パッケージやクラス(オブジェクト指向)は、概念を認識しやすくするために登場したものです。

Page 44: 業務システムで使うSpring Dynamic Modules

ソフトウェアの抽象化の歴史(5)

• ソフトウェアは何でできているか?

ソフトウェアの抽象化とは、より大きなまとまりに対して人が認識するために名前をつける。

Page 45: 業務システムで使うSpring Dynamic Modules

Q.抽象化が必要な理由は何ですか?

• A.ソフトウェアで扱う概念や構造がどんどん大きくなっているから

By Phillip Capper

Page 46: 業務システムで使うSpring Dynamic Modules

XML地獄という言葉がありました…。

XMLを適切な単位で分割できない…。

でも今はそれももう過去の話です。By karmablue

Page 47: 業務システムで使うSpring Dynamic Modules

Q.なぜ分割できるとうれしいの?

A.人が認識できる大きさや量には限りがあります。システムをモジュールに分割することでモジュール→パッケージ→クラス…と言うように探索しやすくしているのです。

Page 48: 業務システムで使うSpring Dynamic Modules

オブジェクト指向の次の一歩

• システムを適当な大きさで分割して名前付け

→それがモジュール化

Left.tower gate wall Right.tower

Page 49: 業務システムで使うSpring Dynamic Modules

例えば機能単位でまとめて再利用

• 機能を抽出し、配布

• 機能要件が同じ場合に利用

→これっていわゆるライブラリ?

By Auntie P

Page 50: 業務システムで使うSpring Dynamic Modules

そうです。ライブラリは

モジュールの一種です。

Page 51: 業務システムで使うSpring Dynamic Modules

ライブラリの利点

• ライブラリは開発を分離できる

→ライブラリが公開するIFの変更に気をつければ開発速度を上げられる

• ライブラリは責任が明確

→物理的な境界があるので障害の切分けが楽

• ライブラリごとにバージョンを管理

→障害のライフサイクルをバージョンで管理

Page 52: 業務システムで使うSpring Dynamic Modules

ライブラリの利点は

そのままモジュールの利点です。

Page 53: 業務システムで使うSpring Dynamic Modules

モジュールの利点

• モジュールごとに開発を分離できる

→モジュールが公開するIFの変更に気をつければ開発速度を上げられる

• モジュールごとの責任が明確

→物理的な境界があるので障害の切分けが楽

• モジュールごとにバージョンを管理

→障害のライフサイクルも管理

Page 54: 業務システムで使うSpring Dynamic Modules

実はSpringはModulesに分割済みこれってライブラリでしょ?

•Spring-aop

•Spring-aspects

•Spring-beans

•Spring-context

•Spring-core

•…

•Spring-ORM

•Spring-MVCJAR:プロジェクトが1:1

Page 55: 業務システムで使うSpring Dynamic Modules

FAQ.ModulesとComponentどう違うんですか?

A.大抵の場合、どちらもシステムを分割した構成要素とという、概念を指しています。

言語仕様とかで定義された用語でなければ…

Page 56: 業務システムで使うSpring Dynamic Modules

Q.なんでModulesをDynamicにする必要があるの?

• ライブラリの組み合わせでは新しいサービスを追加できない。

• 瓶を並べるだけじゃ機能の注入は難しい

• A.Modulesの追加でサービスを追加したい

Page 57: 業務システムで使うSpring Dynamic Modules

Modulesの追加でサービスを追加とは?

例えば

追加するだけでサービスを増やせる

Page 58: 業務システムで使うSpring Dynamic Modules

ModulesをDynamicにするとは?-SpringDMではどうなっているの?-

OSGiの場合、ModuleをBundleと呼びます

Page 59: 業務システムで使うSpring Dynamic Modules

Spring DM対応のBundleにするには

1. プロジェクトを適切な機能で分割

2. 依存関係をMANIFEST.MFに記述

×クラスパスでの解決

○Import-packageでの解決

3. application-context.xmlを分割

4. 分割したXMLをMETA-INFに配置

1. 名前での明示(springで始まる か *.xml)

2. ヘッダーにSpring-Contextと明示

Page 60: 業務システムで使うSpring Dynamic Modules

MANIFEST.MFの例

Page 61: 業務システムで使うSpring Dynamic Modules

Q.DynamicなModuleを組み合わせると何ができるの?

A.モジュールの組み合わせで新製品開発

夢のようですが、現実★です。

Page 62: 業務システムで使うSpring Dynamic Modules

ゆえに

Page 63: 業務システムで使うSpring Dynamic Modules

DynamicなModuleの構成は、

アプリケーションのSOAと

言われることもあります。

Page 64: 業務システムで使うSpring Dynamic Modules

OSGiの補足

• モダンな商用APサーバは大抵OSGiをサポートしてます。

• Oracle WebLogic

• Remoteのモジュールを読み込むr-OSGiと言う仕様もあります。

• RMI等とは違って特殊な例外を使わない、POJOスタイルを保てます。

Page 65: 業務システムで使うSpring Dynamic Modules

まとめ

Page 66: 業務システムで使うSpring Dynamic Modules

Modulesとは?

• ライブラリは Modules の一つ

• ソフトウェアをModulesに分割すると…

–構成を理解しやすい

–保守しやすい

–分業しやすい

–機能追加しやすい

Page 67: 業務システムで使うSpring Dynamic Modules

Dynamicとは?

• モジュール間を動的に接続

• 起動している間のモジュールの追加/削除も

• 新しいサービスを追加できる

• サービスの更新もお手の物

• モジュールを組み合わせて新しいシステム

Page 68: 業務システムで使うSpring Dynamic Modules

今日話さなかったこと

• Spring DMの仕様詳細• http://static.springsource.org/osgi/docs/1.2.0/reference/html/

• ソフトウェアモジュールの標準化

• 仕様→実装(JSR等)、実装→仕様(Spring→blueprint spec)

• モジュールを統合したテスト手法

Page 69: 業務システムで使うSpring Dynamic Modules

質問はございますか?

Does anyone have questions?

Page 70: 業務システムで使うSpring Dynamic Modules

ご清聴ありがとうございました

Page 71: 業務システムで使うSpring Dynamic Modules

ライセンスについて

• JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。

• 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。

• 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。

Qcon Tokyoでの写真は櫻庭祐一さんによるものです。