Your SlideShare is downloading. ×
業務システムで使うSpring Dynamic Modules
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

2,002
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,002
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
21
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 業務システムで使う Spring Dynamic Modules -Springとモジュールの行方 by OSGi- Japan Spring User Group こんぴろ
  • 2. 自己紹介
  • 3. 今日のお話の対象者 • Modularityって、なんでうれしいのかいまいち よくわからない。 • Spring DMって出てきたけど、どう使うのかよ く分からない。 という方です。込み入った話は懇親会で☆
  • 4. まずは
  • 5. Spring Dynamic Modulesを 導入すると何がうれしいの?
  • 6. Spring Dynamic Modulesを 導入すると何がうれしいの? Springを使っ て開発 へのSpringの導入レポートより http://www.springsource.com/files/uploads/datasheets/Linkedin-Case-Study.pdf
  • 7. 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
  • 8. 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
  • 9. Spring Dynamic Modulesって何? • OSGi用のSpringFramework • OSGiに載せてモジュール化を促進 • 移行のためにはOSGiの知識が必要 →でもSpring DMを使えば学習コストを削減 →さらにPOJOを保てるのでテストしやすい →とLinkedInのレポートに書かれてました。
  • 10. Spring Dynamic Modulesって何? • OSGi用のSpringFramework • OSGiに載せてモジュール化を促進 • 移行のためにはOSGiの知識が必要 →でもSpring DMを使えば学習コストを削減 →さらにPOJOを保てるのでテストしやすい →とLinkedInのレポートに書かれてました。
  • 11. Spring Dynamic Modulesって何? • OSGi用のSpringFramework • OSGiに載せてモジュール化を促進 • 移行のためにはOSGiの知識が必要 →でもSpring DMを使えば学習コストを削減 →さらにPOJOを保てるのでテストしやすい →とLinkedInのレポートに書かれてました
  • 12. なぜModulesを Dynamicに なのか?
  • 13. 本日のポイント • Modulesとは? – ライブラリは Modules の一つです – ソフトウェアをModulesにすると… – 構成を理解しやすく、保守しやすい – 分業しやすい – Dynamicとは? – Modules間を動的に接続すること – ModulesをDynamicにすると… サービスをModulesから動的に注入できます
  • 14. 2009年04月 Qcon Tokyoにて
  • 15. Qcon Tokyoにて Spring dm Serverは 未来への投資 By Rod Johnson氏 注:dmはDynamic Modulesの略
  • 16. 2009年08月 JSUG勉強会にて
  • 17. JSUG勉強会にて 「Modularityを考える-複雑系のアーキテクチャ」 by熊澤 公平先生
  • 18. 氏(熊沢先生) 曰く
  • 19. モジュール化は
  • 20. 大変な仕事 ネジですら400年かかった 簡単にはできるわけがない
  • 21. 大変な仕事 ネジですら400年かかった 簡単にはできるわけがない
  • 22. それじゃ
  • 23. 自分達の開発の現場で モジュール化は使えないのか?
  • 24.
  • 25. 自分達の現場で使う モジュール
  • 26. それがRod氏の言う 未来への投資 だと思います。
  • 27. 熊沢さんも モジュール化に対し大きく3点 指摘していました。
  • 28. 現場でモジュール化を活用する なら、そのうち2つが大事
  • 29. 子(熊沢先生) 曰く
  • 30. モジュール化は
  • 31. 大変な仕事 1.モジュールとして機能する 2.モジュールとして認められる(標準化)
  • 32. 大変な仕事 1.モジュールとして機能する 2.モジュールとして認められる(標準化)
  • 33. 大変な仕事 1.モジュールとして機能する 2.モジュールとして認められる(標準化) また、
  • 34. モジュールを作るならば モジュール間でイノベーションの差が 激しいところで分割する
  • 35. モジュールを作るならば イノベーションの差が 激しいところで分割する
  • 36. モジュール化についての私見 • モジュールとして機能する単位で • モジュールはイノベーションの差が激しいとこ ろで分割する • モジュールの標準化を目指さない →(最初はプロジェクトに閉じる) これならモジュール化が進められる と僕は思ったのです。
  • 37. それじゃ、
  • 38. そもそも モジュール化って なんだっけ?
  • 39. モジュール化とは? オブジェクト指向をもう一歩進め、抽象的 に物事を扱えるようにしたものです。(私見) 歴史をひもとくと 理解できます。
  • 40. ソフトウェアの抽象化の歴史(1) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。
  • 41. ソフトウェアの抽象化の歴史(2) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。 – メモリに書き込む段階で2値表現は扱い辛いので 16進値(01FF等)で扱われます。
  • 42. ソフトウェアの抽象化の歴史(3) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で 扱われます。 – CPUの命令セットは16進値に対応し、より人が扱 いやすいアセンブラ(機械語)で扱われます。
  • 43. ソフトウェアの抽象化の歴史(4) • ソフトウェアは何でできているか? – 極論すると0と1の2値で表現されます。 – メモリに書き込む段階で2値表現は扱い辛いので16進値(01FF等)で扱われます。 – CPUの命令セットは16進値に対応し、より人が扱いやすいアセンブラ(機械語)で扱わ れます。 – アセンブラのまとまった処理やアドレスに対し、ラベルをつけ、関数や変数として扱う高 級言語が登場。 – パッケージやクラス(オブジェクト指向)は、概念を 認識しやすくするために登場したものです。
  • 44. ソフトウェアの抽象化の歴史(5) • ソフトウェアは何でできているか? ソフトウェアの抽象化とは、より大きなまとまりに 対して人が認識するために名前をつける。
  • 45. Q.抽象化が必要な理由は何ですか? • A.ソフトウェアで扱う概念や構造がどんどん 大きくなっているから By Phillip Capper
  • 46. XML地獄という言葉がありました…。 XMLを適切な単位で分割できない…。 でも今はそれももう過去の話です。 By karmablue
  • 47. Q.なぜ分割できるとうれしいの? A.人が認識できる大きさや量には限りがありま す。システムをモジュールに分割することでモ ジュール→パッケージ→クラス…と言うように 探索しやすくしているのです。
  • 48. オブジェクト指向の次の一歩 • システムを適当な大きさで分割して名前付け Left.tower gate wall Right.tower →それがモジュール化
  • 49. 例えば機能単位でまとめて再利用 • 機能を抽出し、配布 • 機能要件が同じ場合に利用 →これっていわゆるライブラリ? By Auntie P
  • 50. そうです。ライブラリは モジュールの一種です。
  • 51. ライブラリの利点 • ライブラリは開発を分離できる →ライブラリが公開するIFの変更に気をつけれ ば開発速度を上げられる • ライブラリは責任が明確 →物理的な境界があるので障害の切分けが楽 • ライブラリごとにバージョンを管理 →障害のライフサイクルをバージョンで管理
  • 52. ライブラリの利点は そのままモジュールの利点です。
  • 53. モジュールの利点 • モジュールごとに開発を分離できる →モジュールが公開するIFの変更に気をつけ れば開発速度を上げられる • モジュールごとの責任が明確 →物理的な境界があるので障害の切分けが楽 • モジュールごとにバージョンを管理 →障害のライフサイクルも管理
  • 54. 実はSpringはModulesに分割済み これってライブラリでしょ? •Spring-aop •Spring-aspects •Spring-beans •Spring-context •Spring-core •… •Spring-ORM •Spring-MVC JAR:プロジェクトが1:1
  • 55. FAQ.ModulesとComponent どう違うんですか? A.大抵の場合、どちらもシステムを分割した構 成要素とという、概念を指しています。 言語仕様とかで定義された用語でなければ…
  • 56. Q.なんでModulesをDynamicに する必要があるの? • ライブラリの組み合わせでは新しいサービス を追加できない。 • 瓶を並べるだけじゃ機能の注入は難しい • A.Modulesの追加でサービスを追加したい
  • 57. Modulesの追加でサービスを追加と は? 例えば 追加するだけでサービスを増やせる
  • 58. ModulesをDynamicにするとは? -SpringDMではどうなっているの?- OSGiの場合、 Moduleを Bundleと呼びます
  • 59. Spring DM対応の Bundleにするには 1. プロジェクトを適切な機能で分割 2. 依存関係をMANIFEST.MFに記述 ×クラスパスでの解決 ○Import-packageでの解決 3. application-context.xmlを分割 4. 分割したXMLをMETA-INFに配置 1. 名前での明示(springで始まる か *.xml) 2. ヘッダーにSpring-Contextと明示
  • 60. MANIFEST.MFの例
  • 61. Q.DynamicなModuleを組み合わせる と何ができるの? A.モジュールの組み合わせで新製品開発 夢のようですが、現実★です。
  • 62. ゆえに
  • 63. DynamicなModuleの構成は、 アプリケーションのSOAと 言われることもあります。
  • 64. OSGiの補足 • モダンな商用APサーバは大抵OSGiをサポ ートしてます。 • Oracle WebLogic • Remoteのモジュールを読み込むr-OSGiと言 う仕様もあります。 • RMI等とは違って特殊な例外を使わない、 POJOスタイルを保てます。
  • 65. まとめ
  • 66. Modulesとは? • ライブラリは Modules の一つ • ソフトウェアをModulesに分割すると… – 構成を理解しやすい – 保守しやすい – 分業しやすい – 機能追加しやすい
  • 67. Dynamicとは? • モジュール間を動的に接続 • 起動している間のモジュールの追加/削除も • 新しいサービスを追加できる • サービスの更新もお手の物 • モジュールを組み合わせて新しいシステム
  • 68. 今日話さなかったこと • Spring DMの仕様詳細 • http://static.springsource.org/osgi/docs/1.2.0/reference/html/ • ソフトウェアモジュールの標準化 • 仕様→実装(JSR等)、実装→仕様 (Spring→blueprint spec) • モジュールを統合したテスト手法
  • 69. 質問はございますか? Does anyone have questions?
  • 70. ご清聴ありがとうございました
  • 71. ライセンスについて • JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを 元にした派生作品)の複製・頒布・表示・上演を認めます。 • 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認 めます。 • 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。 Qcon Tokyoでの写真は櫻庭祐一さんによるものです。