狠狠撸

狠狠撸Share a Scribd company logo
業務システムで使う
Spring Dynamic Modules
 -Springとモジュールの行方 by OSGi-


    Japan Spring User Group
          こんぴろ
自己绍介
今日のお話の対象者
? Modularityって、なんでうれしいのかいまいち
  よくわからない。
? Spring DMって出てきたけど、どう使うのかよ
  く分からない。




という方です。込み入った話は懇親会で☆
まずは
Spring Dynamic Modulesを
導入すると何がうれしいの?
Spring Dynamic Modulesを
        導入すると何がうれしいの?
                                                                Springを使っ
                                                                て開発




                           へのSpringの導入レポートより
http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf
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
Spring Dynamic Modulesを
        導入すると何がうれしいの?
?   Increased Productivity(生産性の向上) Springの利点
?   Superior User Experience(優れたUX)
?   Improved Application Quality(品質の改善)
?   Focus on Business Logic(ビジネスロジックに注力)
?   Easier Migration to OSGi(OSGiへの移行が簡単)
                                                              SpringDM
                                                              の利点

                           へのSpringの導入レポートより
http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf
Spring Dynamic Modulesって何?
? OSGi用のSpringFramework
 ? OSGiに載せてモジュール化を促進
 ? 移行のためにはOSGiの知識が必要
 →でもSpring DMを使えば学習コストを削減
 →さらにPOJOを保てるのでテストしやすい
   →とLinkedInのレポートに書かれてました。
Spring Dynamic Modulesって何?
? OSGi用のSpringFramework
 ? OSGiに載せてモジュール化を促進
 ? 移行のためにはOSGiの知識が必要
 →でもSpring DMを使えば学習コストを削減
 →さらにPOJOを保てるのでテストしやすい
   →とLinkedInのレポートに書かれてました。
Spring Dynamic Modulesって何?
? OSGi用のSpringFramework
  ? OSGiに載せてモジュール化を促進
 ? 移行のためにはOSGiの知識が必要
 →でもSpring DMを使えば学習コストを削減
 →さらにPOJOを保てるのでテストしやすい
   →とLinkedInのレポートに書かれてました
なぜModulesを
 Dynamicに
  なのか?
本日のポイント
? Modulesとは?
 – ライブラリは Modules の一つです
 – ソフトウェアをModulesにすると…
   – 構成を理解しやすく、保守しやすい
   – 分業しやすい
– Dynamicとは?
 – Modules間を動的に接続すること
 – ModulesをDynamicにすると…
 サービスをModulesから動的に注入できます
2009年04月
Qcon Tokyoにて
Qcon Tokyoにて
Spring dm Serverは
未来への投資
By Rod Johnson氏

注:dmはDynamic Modulesの略
2009年08月
JSUG勉強会にて
JSUG勉強会にて
「Modularityを考える-複雑系のアーキテクチャ」




                  by熊澤 公平先生
氏(熊沢先生)
   曰く
モジュール化は
大変な仕事
ネジですら400年かかった
簡単にはできるわけがない
大変な仕事
 ネジですら400年かかった
簡単にはできるわけがない
それじゃ
自分達の開発の現場で
モジュール化は使えないのか?
否
自分達の現場で使う
  モジュール
それがRod氏の言う
 未来への投資
 だと思います。
熊沢さんも
モジュール化に対し大きく3点
   指摘していました。
現場でモジュール化を活用する
 なら、そのうち2つが大事
子(熊沢先生)
   曰く
モジュール化は
大変な仕事
   1.モジュールとして機能する
2.モジュールとして認められる(標準化)
大変な仕事
   1.モジュールとして機能する
2.モジュールとして認められる(標準化)
大変な仕事
   1.モジュールとして機能する
2.モジュールとして認められる(標準化)

      また、
モジュールを作るならば
モジュール間でイノベーションの差が
   激しいところで分割する
モジュールを作るならば
  イノベーションの差が
 激しいところで分割する
モジュール化についての私見
? モジュールとして機能する単位で
? モジュールはイノベーションの差が激しいとこ
  ろで分割する

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

これならモジュール化が進められる
            と僕は思ったのです。
それじゃ、
そもそも
モジュール化って
 なんだっけ?
モジュール化とは?

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


   歴史をひもとくと
   理解できます。
ソフトウェアの抽象化の歴史(1)
? ソフトウェアは何でできているか?
 – 极论すると0と1の2値で表现されます。
ソフトウェアの抽象化の歴史(2)
? ソフトウェアは何でできているか?
 – 极论すると0と1の2値で表现されます。
 – メモリに書き込む段階で2値表現は扱い辛いので
   16進値(01FF等)で扱われます。
ソフトウェアの抽象化の歴史(3)
? ソフトウェアは何でできているか?
 – 极论すると0と1の2値で表现されます。
 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で
   扱われます。
 – CPUの命令セットは16進値に対応し、より人が扱
   いやすいアセンブラ(機械語)で扱われます。
ソフトウェアの抽象化の歴史(4)
? ソフトウェアは何でできているか?
 – 极论すると0と1の2値で表现されます。
 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で扱われます。
 – CPUの命令セットは16進値に対応し、より人が扱いやすいアセンブラ(機械語)で扱わ
   れます。
 – アセンブラのまとまった処理やアドレスに対し、ラベルをつけ、関数や変数として扱う高
   級言語が登場。
 – パッケージやクラス(オブジェクト指向)は、概念を
   認識しやすくするために登場したものです。
ソフトウェアの抽象化の歴史(5)
? ソフトウェアは何でできているか?




ソフトウェアの抽象化とは、より大きなまとまりに
対して人が認識するために名前をつける。
Q.抽象化が必要な理由は何ですか?
? A.ソフトウェアで扱う概念や構造がどんどん
  大きくなっているから




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




XMLを適切な単位で分割できない…。
      でも今はそれももう過去の話です。
                 By karmablue
Q.なぜ分割できるとうれしいの?
A.人が認識できる大きさや量には限りがありま
  す。システムをモジュールに分割することでモ
  ジュール→パッケージ→クラス…と言うように
  探索しやすくしているのです。
オブジェクト指向の次の一歩
? システムを適当な大きさで分割して名前付け
 Left.tower   gate   wall    Right.tower




                            →それがモジュール化
例えば機能単位でまとめて再利用
? 機能を抽出し、配布
? 機能要件が同じ場合に利用




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

                  By Auntie P
そうです。ライブラリは
モジュールの一種です。
ライブラリの利点
? ライブラリは開発を分離できる
→ライブラリが公開するIFの変更に気をつけれ
  ば開発速度を上げられる
? ライブラリは責任が明確
→物理的な境界があるので障害の切分けが楽
? ライブラリごとにバージョンを管理
→障害のライフサイクルをバージョンで管理
ライブラリの利点は
そのままモジュールの利点です。
モジュールの利点
? モジュールごとに開発を分離できる
→モジュールが公開するIFの変更に気をつけ
  れば開発速度を上げられる
? モジュールごとの責任が明確
→物理的な境界があるので障害の切分けが楽
? モジュールごとにバージョンを管理
→障害のライフサイクルも管理
実は厂辫谤颈苍驳は惭辞诲耻濒别蝉に分割済み
   これってライブラリでしょ?
?Spring-aop
?Spring-aspects
?Spring-beans
?Spring-context
?Spring-core
?…
?Spring-ORM
?Spring-MVC
                JAR:プロジェクトが1:1
贵础蚕.惭辞诲耻濒别蝉と颁辞尘辫辞苍别苍迟
      どう違うんですか?
A.大抵の場合、どちらもシステムを分割した構
  成要素とという、概念を指しています。




           言語仕様とかで定義された用語でなければ…
蚕.なんで惭辞诲耻濒别蝉を顿测苍补尘颈肠に
      する必要があるの?
? ライブラリの組み合わせでは新しいサービス
  を追加できない。
? 瓶を並べるだけじゃ機能の注入は難しい




? A.Modulesの追加でサービスを追加したい
惭辞诲耻濒别蝉の追加でサービスを追加と
        は?
例えば




追加するだけでサービスを増やせる
ModulesをDynamicにするとは?
 -SpringDMではどうなっているの?-


                   OSGiの場合、
                   Moduleを
                   Bundleと呼びます
Spring DM対応の
         Bundleにするには
1. プロジェクトを適切な機能で分割
2. 依存関係をMANIFEST.MFに記述
 ×クラスパスでの解決
 ○Import-packageでの解決
3. application-context.xmlを分割
4. 分割したXMLをMETA-INFに配置
 1. 名前での明示(springで始まる か *.xml)
 2. ヘッダーにSpring-Contextと明示
惭础狈滨贵贰厂罢.惭贵の例
蚕.顿测苍补尘颈肠な惭辞诲耻濒别を组み合わせる
        と何ができるの?
A.モジュールの組み合わせで新製品開発




       夢のようですが、現実★です。
ゆえに
DynamicなModuleの構成は、
  アプリケーションのSOAと
  言われることもあります。
OSGiの補足
? モダンな商用APサーバは大抵OSGiをサポ
  ートしてます。
? Oracle WebLogic
? Remoteのモジュールを読み込むr-OSGiと言
  う仕様もあります。
? RMI等とは違って特殊な例外を使わない、
  POJOスタイルを保てます。
まとめ
Modulesとは?

? ライブラリは Modules の一つ
? ソフトウェアをModulesに分割すると…
 – 構成を理解しやすい
 – 保守しやすい
 – 分業しやすい
 – 機能追加しやすい
Dynamicとは?
? モジュール間を動的に接続
 ? 起動している間のモジュールの追加/削除も
 ? 新しいサービスを追加できる
 ? サービスの更新もお手の物
? モジュールを組み合わせて新しいシステム
今日話さなかったこと
? Spring DMの仕様詳細
 ? http://static.springsource.org/osgi/docs/1.2.0/reference/html/

? ソフトウェアモジュールの標準化
 ? 仕様→実装(JSR等)、実装→仕様
   (Spring→blueprint spec)
? モジュールを統合したテスト手法
質問はございますか?

Does anyone have questions?
ご清聴ありがとうございました
ライセンスについて
?   JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを
    元にした派生作品)の複製?頒布?表示?上演を認めます。

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

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

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

More Related Content

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