Recommended
PDF
PDF
17-D-1 Azure開発の極意 ~2011年版~
PDF
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
PPTX
Developer summit continuous deliveryとjenkins
PDF
App controllerとwindows azure packで作る大規模プライベートクラウド
PPTX
Relationship betweenddd and mvc
PPTX
Interact 2018:PowerShell of Microsoft SDN v2 101
PDF
App controllerとSPFで実現するハイブリッドクラウド
PPTX
PPTX
Windows Server Community Meetup#1 : Windows Server 2019 networking update
PPTX
PPTX
N211 sc12 sp1概要_osamut_公開版
PPTX
Windows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
PPT
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PPTX
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
PDF
Flex開発を加速するFlash Builder 4新機能紹介
PPTX
Interact 2019:Microsoft SDN v2 よもやま話
PPTX
20180630 data transformationusinglogicflow
PDF
PPTX
Windows Admin Center 2103.2 and Windows Admin Center on Azure
PDF
Introduction to web development 1
PDF
XPagesDay 2014 - What's new in XPages NOW!
PPTX
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
PDF
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
PDF
HCL Domino REST API 利用ガイド
PPTX
これぞ最強!? Windows Virtual Desktop の使い方
PPTX
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
PPTX
Windows Admin Center -Project Honolulu改め-
PDF
PDF
More Related Content
PDF
PDF
17-D-1 Azure開発の極意 ~2011年版~
PDF
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
PPTX
Developer summit continuous deliveryとjenkins
PDF
App controllerとwindows azure packで作る大規模プライベートクラウド
PPTX
Relationship betweenddd and mvc
PPTX
Interact 2018:PowerShell of Microsoft SDN v2 101
PDF
App controllerとSPFで実現するハイブリッドクラウド
What's hot
PPTX
PPTX
Windows Server Community Meetup#1 : Windows Server 2019 networking update
PPTX
PPTX
N211 sc12 sp1概要_osamut_公開版
PPTX
Windows Server 2008 / R2とWindows Admin CenterとAzure Site Recovery
PPT
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PPTX
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
PDF
Flex開発を加速するFlash Builder 4新機能紹介
PPTX
Interact 2019:Microsoft SDN v2 よもやま話
PPTX
20180630 data transformationusinglogicflow
PDF
PPTX
Windows Admin Center 2103.2 and Windows Admin Center on Azure
PDF
Introduction to web development 1
PDF
XPagesDay 2014 - What's new in XPages NOW!
PPTX
Windows Admin Center 2020年7月のお話 / Windows Admin Center July 2020 Story
PDF
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
PDF
HCL Domino REST API 利用ガイド
PPTX
これぞ最強!? Windows Virtual Desktop の使い方
PPTX
IBM Bluemix Node-REDを使って簡単アプリ作成を体験する
PPTX
Windows Admin Center -Project Honolulu改め-
Viewers also liked
PDF
PDF
PPTX
How the Bosch Group is making use of OSGi for IoT - Kai Hackbarth
PPTX
Internet of Things with Bosch: From Concept to Code
PDF
OSGi & Java in Industrial IoT - More than a Solid Trend - Essential to Scale ...
PDF
Similar to 成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
デブサミ2010 これからのアーキテクチャを見通す
PDF
Symfony2でより良いソフトウェアを作るために
PDF
PDF
PDF
PDF
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
PDF
Scrum alliance regional gathering tokyo 2013 pub
PDF
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
PDF
デブサミ2013【15-D-4】Opsから挑むDevOps
PPTX
PPTX
PPTX
PDF
ソーシャルコーディング革命後の開発委託の世界〜QA@ITの事例
PDF
Redmine Applied for Large Scale
PDF
Intalio japan special cloud workshop
PDF
Agility@Scale(アジャイル開発のスケールアップ)を実現する14のベストプラクティス
PDF
18-D-1 .Net Framework 4 概要
PDF
2011年マイクロソフト テクノロジー振り返り~開発編~
PDF
PPTX
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
More from Hiroki Kondo
PDF
PDF
PDF
Coderetreat in KITスポンサー資料
PDF
Eclipseデバッガを活用するための31のtips
KEY
KEY
KEY
KEY
KEY
モジュール指向勉強会-コードリーディングを始める前に-
PDF
業務システムで使うSpring Dynamic Modules
PDF
PPT
PPT
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
PDF
PPT
PDF
ODP
ODP
ODP
PDF
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現- 1. 3. 4. アジェンダ
• システムを継続的に成長させるには?
• OSGiとは?
• Bundle設計の六個の勘どころ
• デモ
• OSGiがもたらす未来
Developers Summit 2010
5. 6. システムはそもそも複雑なもの
http://www.flickr.com/photos/adc/411821495/
7. 8. 9. 10. 11. 12. モジュール型アーキテクチャ
http://www.flickr.com/photos/37hz/1247083341/
13. スモールイズビューティフル
http://www.flickr.com/photos/mdpettitt/2665598298/
14. スモールイズビューティフル
• 柔軟な構成を取れる
• 保守しやすい
• 理解が簡単
• 再利用しやすい
• … 等々
Developers Summit 2010
15. 16. 17. 18. Java のクラスロードモデル
依存 拡張 ブート
クラスローダ クラスローダ
JAR
アプリケーションクラスローダ
A B C
G
D
E F
Developers Summit 2010
19. 20. 21. アプリケーション
クラスローダの中
http://www.flickr.com/photos/shareski/3481154470/
22. 23. 再利用の二つの軸
空間軸
( 機能 : ライブラリ等 )
時間軸
Developers Summit 2010
24. 25. 26. 27. 28. 29. 30. 31. 32. どうやって?
http://www.flickr.com/photos/oddwick/1765661986/
33. 34. 35. モジュール型システムの問題
• 開発コスト
– 意識しない時の3倍
• 独立性の担保
• 依存関係の整理
• 規模が小さい時は×
→例:設計したら1モジュール
使うべき場所を
見誤らないように 宮本武蔵・五輪書より
武器や流派にこだわるな
Developers Summit 2010
36. 37. OSGi とは
• Open Service Gateway initiativeの略
• 「オープンなサービスゲートウェイの推進」
• Dynamic Module Systems for Java
• Javaのための動的なモジュールシステム
Developers Summit 2010
38. 39. 増える OSGi の利用例
• King of Java Application's infrastructure
• By Neil Bartlett
Developers Summit 2010
40. どんなところで有効なの?
• 継続して成長させたいシステム
– ツール
– Webサービス
– エンタープライズシステム
• お客さん毎に違う機能セットを提供したい
– パッケージのカスタム
• プラグインシステムを提供したい
Developers Summit 2010
41. OSGi の 3 大要素
モジュールシステム
サービス連携
動的 ( Dynamic )
http://www.flickr.com/photos/yourdon/2921734152/
42. OSGi の 3 大要素
モジュールシステム
サービス連携
動的 (Dynamic)
http://www.flickr.com/photos/yourdon/2921734152/
43. 44. OSGi のクラスロードモデル
System G
A B C
JAR+メタデータ
• Bundle(バンドル) D E F
Developers Summit 2010
45. 利点
• 依存するBundleごと他のシステムへ
– →Eclipseのプラグインのインストール
• 依存の宣言がないBundle同士は分離
• →Bundle内の変更が他に影響しにくい
• →Bundleごとに独立できる
Developers Summit 2010
46. Bundle = JAR + メタデータ
今まで通りの環境でも使える
Developers Summit 2010
47. 欠点
• 独自のクラスロード構造
– Class.forName()が使えない
– →クラスローダが異なるクラスは読めない
– リソースが読めない
– →クラスローダが(同上) System G
• 対処法:
A B C
• →クラスローダの入れ替え
D E F
Developers Summit 2010
48. 49. 50. メタデータがあるので・・・
• パッケージによる公開・非公開の制御
• JARに必要なパッケージの宣言
• →パッケージを公開しているJAR必要
• →依存関係を定義できる
Developers Summit 2010
51. 依存の定義方法
• パッケージによる依存定義
– Import-Package
• Bundleによる依存定義
– Require-Bundle
• それぞれ依存するバージョンを範囲で指
定
Developers Summit 2010
52. バージョン (1)
定義方法
• Mavenとはちょっと違うバージョン定義
• メジャー.マイナー.パッチ.識別子
–例:1.2.0.beta1
• 識別子には文字列が使える
–ただし、識別子がついている方が上位として認識
–例:1.2.0よりも、1.2.0.beta1の方が上位
• 定義されていない場合は0.0.0
Developers Summit 2010
53. バージョン (2)
範囲指定
• 「開区間」、「閉区間」、「暗黙」の3種
• [1.0.0, 2.0.0] → 1.0.0 ≦バージョン
≦2.0.0
• [1.0.0, 2.0.0) → 1.0.0 ≦バージョン<
2.0.0
• バージョン “1.*” を指す
• 1 → [1.0.0, ∞)
• 未指定 → [0.0.0, ∞)
Developers Summit 2010
54. バージョンの異なる
JAR への依存
• java -cp a.jar b.jar c.jar a_v2.jar
• (通常フラットなクラスパスの場合)
app Ext Boot
a b c a2
先に宣言された JAR で解決 Developers Summit 2010
55. 56. OSGi の 3 大要素
モジュールシステム
動的 (Dynamic)
サービス連携
http://www.flickr.com/photos/yourdon/2921734152/
57. 58. 59. Declartive Service
( サービスの宣言 )
• Consumer(要求側)とProvider(供給側)
• Consumerは、必要なIFを宣言
• Providerは供給できるIFと、実装を宣言
• 特別なIF、アノテーションは不要
Developers Summit 2010
60. Declarative Service
( サービスの宣言 )
• 実装間で相互運用可
– Declarative Service(XML/Annotation)
– Blueprint Service(Spring DM/Aries)
– Google Guice Peaberry
– iPOJO
Developers Summit 2010
61. OSGi の 3 大要素
モジュールシステム
サービス連携
動的 (Dynamic)
http://www.flickr.com/photos/yourdon/2921734152/
62. Dynamic
• 稼働中にBundleの構成を変更できる
• →install,update,uninstall,start,stop,refresh
• 必要になったBundleを更新
• →こんな事ができるのは、Bundleごとに独立
してるからこそ。
Developers Summit 2010
63. 64. Bundle 設計の勘どころ
一 . 大きくしすぎない
• 大きくなったら分割を検討
• →複数の役目を担当?
• →新機能のためにライブラリ追加?
• これらは大きくなる兆候です。
Developers Summit 2010
65. Bundle 設計の勘どころ
二 . 登録サービスを限定
• 複数のサービスを登録
• →Bundleが複数の責務を担っている
• Bundleが大きくなる兆候
• Bundleを小さくするために
• →登録サービスは限定する
Developers Summit 2010
66. Bundle 設計の勘どころ
三 . 役割を明確に
• 3種別のBundle(by うじょさん)
• API Bundle → インタフェースのみ
• Library Bundle → これまでのJAR
• Service Bundle → サービス登録/利用
• その他
– Mock Bundle → API Bundleを空実装
Developers Summit 2010
67. Bundle 設計の勘どころ
四 . 公開パッケージを限定する
• 他のBundle開発中の、間違えを防ぐ
– 不要な依存を増やしやすい。
– 依存が増える→独立性が悪化
– 変更による影響を及ぼしやすくする。
非公開パッケージ名の規約として、パ
ッケージ名を”*.internal.*”と明示
Developers Summit 2010
68. Bundle 設計の勘どころ
五 .Bundle= 独立したシステム
• 隣の芝生は青い
• システムまたげばDRYは通用せず
– 非公開クラスを利用
– →コピーを検討
– →別途Bundleにする
– 良い垣根は良いお隣さんを育む
– By Jeff Mcaffer
Developers Summit 2010
69. Bundle 設計の勘どころ
六 .Bundle をまたいだ継承、
静的参照は ×
• 期待した通りに動作しない事が多いです。
• →デモ作成でハマりました。
• →思い返すといい思い出がありません。
– →publicなのに、参照できず落ちる
• →やろうと思えばやれる=バッドノウハウ
Developers Summit 2010
70. Bundle 設計の勘どころ
まとめ
• 一.大きくしすぎない
• 二.登録サービスを限定 小さい
• 三.種別毎に分割する
• 四.公開パッケージを限定
• 五.Bundle=独立したシステム
独立
• 六.不要な継承、静的参照はしない
Developers Summit 2010
71. 72. 73. こんぴろ書店 ( デブサミ支店 )
• 書籍登録
• 書籍検索
• それぞれ別々のBundleで開発
動的に切り替えます。Bundleが
独立している事を実感してください。
(開発環境:Spring DM(1.2.1)+Maven)
http://github.com/kompiro/osgi-demo-bookstore.git
Developers Summit 2010
74. 初期構成
web.
books. web
admin
domain
books
依存
books
mock サービス
System 提供
Developers Summit 2010
75. 一 .mock から impl に
web.
books. web
admin
domain
books books books
mock 2
依存
books
サービス
impl System 提供
Developers Summit 2010
76. 二 .mock と impl を共存
( システムの一部が旧バージョン )
web.
books. web
admin
domain
books books books
mock 2
依存
books
サービス
impl System 提供
Developers Summit 2010
77. 78. 79. 80. 参考文献
Developers Summit 2010
81. 本日盛り込まなかった内容
• 標準化
• スクリプト言語との対応
• 実装毎の細かな差異
• 具体的なテスト方法(UnitTest等)
Developers Summit 2010
82. Editor's Notes #14 システムをいくつかのモジュールに分割 モジュールを組み合わせてシステムを構築 -> 「 Modularity 」 モジュール毎に独自に発展が可能 -> インタフェースに互換があれば OK -> モジュールごとにパフォーマンス改善 構成要素によって、振る舞いを変えられる #43 前の話とつながりが悪い . サービスの連携 ( 宣言敵に ) #44 前の話とつながりが悪い . サービスの連携 ( 宣言敵に ) #58 前の話とつながりが悪い . サービスの連携 ( 宣言敵に ) #59 Declartive Service とは、 Bundle からシステムに対し、どういうサービスが必要なのか、はたまたどういうサービスを提供できるのか、宣言するというものです。ピンと来た方も大勢いらっしゃるとおもいますが、この考え方は DI 、依存性を注入する、というところに非常に近いものと言えるでしょう。言い換えると、 Bundle がどういうサービスに依存していて、どういうサービスが提供できるのか、を宣言するわけです。 依存するサービスはインタフェースでの宣言、実装は POJO というあたりも DI と同じです。 Di との違いは、あくまで DI は静的な条件で行われるもので、起動時に構築された県連性は、変更できませんが、 Declartive Service では、宣言も含め動的に変更できます。インタフェースに基づく開発 #60 Declartive Service とは、 Bundle からシステムに対し、どういうサービスが必要なのか、はたまたどういうサービスを提供できるのか、宣言するというものです。ピンと来た方も大勢いらっしゃるとおもいますが、この考え方は DI 、依存性を注入する、というところに非常に近いものと言えるでしょう。言い換えると、 Bundle がどういうサービスに依存していて、どういうサービスが提供できるのか、を宣言するわけです。 依存するサービスはインタフェースでの宣言、実装は POJO というあたりも DI と同じです。 Di との違いは、あくまで DI は静的な条件で行われるもので、起動時に構築された県連性は、変更できませんが、 Declartive Service では、宣言も含め動的に変更できます。インタフェースに基づく開発 #63 前の話とつながりが悪い . サービスの連携 ( 宣言敵に ) #78 バージョンをあげると、動かなくなる例