Recommended
PDF
SCUGJ第12回勉強会:今だから再確認:Windows Azure Pack で作る IaaS 基盤(仮)
PDF
Recap: Windows Server 2019 Failover Clustering
PDF
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
PDF
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
PPTX
PPTX
Mirantis OpenStack 5.0で作るOpenStack Icehouse構築入門
ODP
GNU AGPLv3について(On GNU AGPLv3)
PDF
Mirantis超簡単Fuel Openstack インストール
PPTX
PPTX
PPTX
Interop Tokyo 2021 - ShowNet を陰で支えた Azure Virtual WAN
PDF
PPTX
PDF
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
PPTX
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
PPTX
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
PPTX
PDF
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
PPTX
Azure 10 周年の節目に見直したい、azure インフラのちょっと大事な話
PDF
Fuelを利用したOpenStack簡単セットアップ
PDF
PDF
PDF
第2回JAZUG総会 LT - FreeBSD on Azure
PDF
SCUGJ第14回勉強会:Shielded VMってなに?
PDF
App controllerとwindows azure packで作る大規模プライベートクラウド
PDF
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
PDF
PPTX
PDF
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
More Related Content
PDF
SCUGJ第12回勉強会:今だから再確認:Windows Azure Pack で作る IaaS 基盤(仮)
PDF
Recap: Windows Server 2019 Failover Clustering
PDF
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
PDF
最近のJuju/MAASについて 〜 15分版 - OpenStack最新情報セミナー 2017年11月
PPTX
PPTX
Mirantis OpenStack 5.0で作るOpenStack Icehouse構築入門
ODP
GNU AGPLv3について(On GNU AGPLv3)
PDF
Mirantis超簡単Fuel Openstack インストール
What's hot
PPTX
PPTX
PPTX
Interop Tokyo 2021 - ShowNet を陰で支えた Azure Virtual WAN
PDF
PPTX
PDF
KubernetesとFlannelでWindows上にPod間VXLAN Overlayネットワークを構成
PPTX
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
PPTX
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
PPTX
PDF
データホテル・フルマネージドホスティング サービスを支えるOSSと、活用事例
PPTX
Azure 10 周年の節目に見直したい、azure インフラのちょっと大事な話
PDF
Fuelを利用したOpenStack簡単セットアップ
PDF
PDF
PDF
第2回JAZUG総会 LT - FreeBSD on Azure
PDF
SCUGJ第14回勉強会:Shielded VMってなに?
PDF
App controllerとwindows azure packで作る大規模プライベートクラウド
PDF
Interop2014 - OpenStackの概要と最新技術動向(Icehouse)
PDF
PPTX
Similar to 成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
PPTX
PDF
業務システムで使うSpring Dynamic Modules
PDF
PDF
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
PDF
PDF
Scrum alliance regional gathering tokyo 2013 pub
PPTX
Glassfish勉強会(JavaEE6について)
PDF
Intalio japan special cloud workshop
PDF
PDF
PPTX
DevLOVE 20100823 EnterpriseOSGi
PPTX
Continuous delivery chapter13
PPTX
PPTX
PDF
Symfony2でより良いソフトウェアを作るために
PDF
DDD 20121106 SEA Forum November
PDF
Public 20100828 j_ruby_kaigi_10things_jror_with_javaee
KEY
関ジャバ JavaOne Tokyo 2012報告会
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現- 1. 2. 3. 4. [ 宣伝 / お仕事 ]astah* ブースへお立ち寄りください astah* community ブースありマス。 3/31 まで動く特別評価版進呈中 お手元のチラシをご覧ください 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. OSGi とは Open Service Gateway initiative の略 「オープンなサービスゲートウェイの推進」 Dynamic Module Systems for Java Java のための動的な モジュールシステム 39. 40. 増える OSGi の利用例 King of Java Application's infrastructure By Neil Bartlett 41. 42. OSGi の 3 大要素 モジュールシステム サービス連携 動的 ( Dynamic ) http://www.flickr.com/photos/yourdon/2921734152/ 43. OSGi の 3 大要素 モジュールシステム サービス連携 動的 (Dynamic) http://www.flickr.com/photos/yourdon/2921734152/ 44. 45. 46. 利点 依存する Bundle ごと他のシステムへ -> Eclipse のプラグインのインストール 依存の宣言がない Bundle 同士は分離 -> Bundle 内の変更が他に影響しにくい -> Bundle ごとに 独立できる 47. 48. 49. OSGi のメタデータの 書き方一例 META-INF/MANIFEST.MF に記述 シンボル名 :Bundle-SymbolicName バージョン :Bundle-Version 依存関係 必要なパッケージ :Import-Package 公開パッケージ :Export-Package 50. 51. 52. 53. バージョン (1) 定義方法 Maven とはちょっと違うバージョン定義 メジャー . マイナー . パッチ . 識別子 例 :1.2.0.beta1 識別子には文字列が使える ただし、識別子がついている方が上位として認識 例: 1.2.0 よりも、 1.2.0.beta1 の方が上位 定義されていない場合は 0.0.0 54. バージョン (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, ∞) 55. バージョンの異なる JAR への依存 java -cp a.jar b.jar c.jar a_v2.jar ( 通常フラットなクラスパスの場合 ) 先に宣言された JAR で解決 app a Ext Boot b c a2 56. 57. OSGi の 3 大要素 モジュールシステム 動的 (Dynamic) サービス連携 http://www.flickr.com/photos/yourdon/2921734152/ 58. 59. 60. Declartive Service ( サービスの宣言 ) Consumer( 要求側 ) と Provider( 供給側 ) Consumer は、必要な IF を宣言 Provider は供給できる IF と、実装を宣言 特別な IF 、アノテーションは不要 61. Declarative Service ( サービスの宣言 ) 実装間で相互運用可 Declarative Service(XML/Annotation) Blueprint Service(Spring DM/Aries) Google Guice Peaberry iPOJO 62. OSGi の 3 大要素 モジュールシステム サービス連携 動的 (Dynamic) http://www.flickr.com/photos/yourdon/2921734152/ 63. Dynamic 稼働中に Bundle の構成を変更できる -> install,update,uninstall,start,stop,refresh 必要になった Bundle を更新 -> こんな事ができるのは、 Bundle ごとに 独立 してるからこそ。 64. 65. Bundle 設計の勘どころ 一 . 大きくしすぎない 大きくなったら分割を検討 -> 複数の役目を担当? -> 新機能のためにライブラリ追加 ? これらは大きくなる兆候です。 66. Bundle 設計の勘どころ 二 . 登録サービスを限定 複数のサービスを登録 -> Bundle が複数の責務を担っている Bundle が大きくなる兆候 Bundle を小さくするために -> 登録サービスは限定する 67. Bundle 設計の勘どころ 三 . 役割を明確に 3 種別の Bundle(by うじょさん ) API Bundle -> インタフェースのみ Library Bundle -> これまでの JAR Service Bundle -> サービス登録 / 利用 その他 Mock Bundle -> API Bundle を空実装 68. Bundle 設計の勘どころ 四 . 公開パッケージを限定する 他の Bundle 開発中の、間違えを防ぐ 不要な依存を増やしやすい。 依存が増える->独立性が悪化 変更による影響を及ぼしやすくする。 非公開パッケージ名の規約として、パッケージ名を ” *.internal.*” と明示 69. Bundle 設計の勘どころ 五 .Bundle= 独立したシステム 隣の芝生は青い システムまたげば DRY は通用せず 非公開クラスを利用 -> コピーを検討 -> 別途 Bundle にする 良い垣根は良いお隣さんを育む By Jeff Mcaffer 70. Bundle 設計の勘どころ 六 .Bundle をまたいだ継承、静的参照は × 期待した通りに動作しない事が多いです。 -> デモ作成でハマりました。 -> 思い返すといい思い出がありません。 -> public なのに、参照できず落ちる -> やろうと思えばやれる = バッドノウハウ 71. Bundle 設計の勘どころ まとめ 一 . 大きくしすぎない 二 . 登録サービスを限定 三 . 種別毎に分割する 四 . 公開パッケージを限定 五 .Bundle= 独立したシステム 六 . 不要な継承、静的参照はしない 小さい 独立 72. 73. 74. こんぴろ書店 ( デブサミ支店 ) 書籍登録 書籍検索 それぞれ別々の Bundle で開発 動的に切り替えます。 Bundle が 独立している事を実感してください。 ( 開発環境 :Spring DM(1.2.1)+Maven) http://github.com/kompiro/osgi-demo-bookstore.git 75. 76. 一 .mock から impl に System books books mock web. admin web books. domain 依存 サービス 提供 books impl books 2 77. 二 .mock と impl を共存 ( システムの一部が旧バージョン ) System books books mock web. admin web books. domain 依存 サービス 提供 books impl books 2 78. 79. 80. 81. 82. 83. 84. 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 バージョンをあげると、動かなくなる例