SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Building a Modular Server Platform with OSGi
Dileepa Jayakody
Software Engineer
SSWSO2 Inc.
Outline
• Complex Systems
• OSGi for Modular Systems
• OSGi in SOA middleware
• Carbon : A modular server platform for middleware
• Carbon Architecture
Complex Systems
• A Complex Systems is a set of interconnected heterogeneous
components
• They are hard to maintain, extend or even to understand!
Problems with Complex Systems
• Hard to maintain
• Code duplication
• Inconsistency
• Lack of interoperability
• Tightly coupled components
Solution : Modular Systems
What is OSGi?
• The dynamic modular system for Java
• Defines a way to create true modules and a way for those
modules to interact at runtime to create a modular system
• A module: a bundle
A jar + manifest (bundle metadata)
• Can be installed, updated, and uninstalled without restarting the
JVM
How does OSGi help?
OSGi helps to break down a complex systems into a collection of
interacting modules
• Modularity
• A bundle can share/hide information at package level
• Lifecycle Management
• Separate class loader for each bundle
• A bundle-lifecycle can be managed dynamically
• Services
• Each bundle provides it's functionality as OSGi services to other
bundles
• Services are simply Java objects that implement a given interface
• Implementation is loosely coupled
• Bundles reuse a single Java object registered
• In VM collaborative SOA model
SOA Middleware
• Middleware : The software which glues/connect different
enterprise applications
• A Middleware platform provides;
• Integration
• Governance
• Data Services
• Business Processes
• Connectivity Services
• Identity and Security
• Application Management
• API Management
OSGi in Middleware
• Each SOA component can be represented by an OSGi bundle
• Application Management
• Mediation
• Service Hosting etc.
• Separation of concern
• Each OSGi bundle to provide a set of well-defined services
• Loosely coupled components
• Dynamic loading of modules
• Can extend the system dynamically by installing new bundles
• Is supported by an underlying provisioning platform
WSO2 Carbon
• Carbon: An open-source fully componentized enterprise
middleware platform based on OSGi
• Complemented by Stratos : The cloud enabled middleware
platform (PaaS)
• Consists of a core set of components providing core services
such as;
• Security
• Clustering
• Logging
• Transports
• Registry
• User management etc.
• Other components use the carbon core services and extend
system functionality
Why did we build Carbon?
• Fast growing complexity of the platform
• Overlapping components
• Duplicated functionality
• Difficulty to integrate functionality between products
Carbon Architecture
• Carbon Components
• Carbon Features
• Orbits
• Kernel Services
• Feature Provisioning
Carbon Core Architecture
Carbon Components
• A set of lean and self-consistent OSGi Bundles
• Lives in the Carbon Framework. Hence should adhere to rules
defined in the Carbon Framework
• Fundamental Concept : FE-BE Separation
• Every component has a core runtime, a well-defined front-end console
and a clean SOA management interface
• All completely pluggable and versioned
• Connected via web-services
• Use Core Carbon Services
• Via OSGi service registry
• e.g. Registry Service, UserManager Service, etc.
Carbon Features
• Similar to Eclipse Features
• An aggregate of Carbon components
• Carbon Products are composed using Carbon features (Eclipse
for Servers)
• A Carbon Feature
• Is an installable unit which can be installed into any Carbon based
product
• Allows you to manage bundle and feature level dependencies
• Can be installed using the Carbon Feature Manager
• Can be published as a p2-repository
• A Carbon Feature Category
• A logical grouping of features
• Represents a Carbon Product
Carbon and Equinox P2
• The provisioning platform for Carbon features
• Using Equinox p2 in Carbon you can;
• Install
• Uninstall
• Revert
• Update Carbon features.
• Features can be installed from a P2 repository
• P2 feature repository can be either
• File-based
• Web-based
Orbits : External dependencies
• Lots of open source projects smoothly integrated
• Apache Axis2
• Apache tomcat
• Apache ODE
• Apache synapse
• Bundled as Orbits (Similar to Eclipse Orbit Project)
• Dependencies managed with versions
• External non-OSGi jars are auto-bundled (components/lib)
• Gives the user more flexibility in using external libraries
(eg: jdbc libraries)
Kernel Services
• Kernel services through Carbon core
• Execution (supporting services and workflows)
• Data Storage
• Security (user management, authentication, authorization)
• User Interfaces
• Other Services (monitoring, caching, clustering etc.)
• They are used by most components and simplify development
of new components
• OSGi Maturity model : Level 4 (loosely coupled)
• Separation of interface from implementation
• Provides a services-based module collaboration
• Dependencies semantically versioned
The Big Picture
The Big Picture
OSGi best practises in Carbon
• Controlled number of exports from a bundle
• Semantic Versioning for Imports/Exports
• Version ranges for imports to handle backward compatibilities
• To manage dependencies between components
• To host different versions of the same package and correctly handle
dependencies
• Avoided usage of Required-Bundle
• To avoid tight-coupling
• Declarative services as the dependency injection model
• To manage dependencies between components dynamically
• Use of OSGi HttpService
• To consume http requests by bundles
Carbon Component: Development Process
• Develop the Carbon component
• Back-end component (BE OSGi bundles)
• Front-end component (FE OSGi bundles)
• Common bundles, if any
• Develop the corresponding feature
• BE/Server Feature
• FE/UI Feature
• Composite Feature
• Install into a Carbon based product
• By integrating with the product build system or;
• By developing a feature repository and installing using Feature
Manager
Tools for Carbon
• Maven
• To build Carbon source
• Maven bundle plugin
• To build bundles
• Manage dependencies
• Maven scr plugin (scr : service components runtime)
• Service Components are defined through annotations
• Plugin creates the necessary descriptors for the OSGi Declarative
Services
• Carbon P2 plugin (Developed at WSO2)
• To build features & feature categories
• To build feature repositories
• To build product profiles
Maven Bundle Plugin
• Is the Maven version of BND tool by Peter Kriens
• The primary goal of BND is to relieve the bundle developer from
the pain of creating the bundle manifest
• Wraps BND to make it work with Maven project structure
• BND instructions;
• Manifest headers :
• These instructions are copied to the manifest file as manifest headers. Values
of these instruction are either copied, or generated by the Plugin.
• Variables :
• These instructions act as variables and can be used for property substitution
• Directives :
• These perform some special processing
Maven Bundle Plugin (Apache Felix Plugin)
Carbon P2 Plugin
• Maven tool for creating features, feature-repositories and carbon-
products
• Uses Eclipse FeaturesAndBundles Publisher tool under the hood
• Instructions
• bundleDef : includes a bundle
• IncludedFeatureDef : includes a feature as a sub-feature
• ImportFeatureDef : defines a dependency to an external feature
• Type of the Carbon Feature can be defined as a p2-property
• org.wso2.carbon.p2.category.type:server
• org.wso2.carbon.p2.category.type:console
Generating features with p2-plugin
Feature Categories
• Uses P2 Category publisher under the hood
• Generates the category.xml and provide it to the category
publisher
Feature Manager
• UI based tool to perform provisioning actions on Carbon
• Helps to compose carbon products with the required features
Installed Features
OSGi Future in Carbon
• Multi-tenant OSGi
• Regions for each tenant
• SOA artifacts can be partitioned per tenant in OSGi runtime
Summary
• Complex systems are hard to maintain and extend
• The solution: modular systems
• OSGi : a true dynamic modular system for Java
• OSGi in SOA middleware
• Carbon : a modular server platform for middleware
Questions?
dileepa@wso2.com
dev@wso2.org
Thank you!

Contenu connexe

Tendances

Open stack + Containers + Hyper-V
Open stack + Containers + Hyper-VOpen stack + Containers + Hyper-V
Open stack + Containers + Hyper-VSriram Subramanian
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaRudy De Busscher
 
WSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A PreviewWSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A PreviewWSO2
 
Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Tejas Purohit
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipelineMichel Schildmeijer
 
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Tony Erwin
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Gilad Garon
 
Container Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesContainer Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesVishal Biyani
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydrationMichel Schildmeijer
 
GWT Enterprise Edition
GWT Enterprise EditionGWT Enterprise Edition
GWT Enterprise EditionGilad Garon
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupRudy De Busscher
 
Planning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryPlanning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryImesh Gunaratne
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinVMware Tanzu
 
Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1Matt Baldwin
 
WSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSWSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSImesh Gunaratne
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Michel Schildmeijer
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
 
Warsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyWarsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyPatryk Bandurski
 

Tendances (20)

Open stack + Containers + Hyper-V
Open stack + Containers + Hyper-VOpen stack + Containers + Hyper-V
Open stack + Containers + Hyper-V
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in Java
 
WSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A PreviewWSO2Con USA 2015: Carbon 5: A Preview
WSO2Con USA 2015: Carbon 5: A Preview
 
Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
 
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
 
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and ...
 
Container Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesContainer Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher Kubernetes
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
 
GWT Enterprise Edition
GWT Enterprise EditionGWT Enterprise Edition
GWT Enterprise Edition
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
 
Planning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryPlanning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud Foundry
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with Kotlin
 
Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1Application Deployment and Management at Scale at 1&1
Application Deployment and Management at Scale at 1&1
 
WSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSWSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OS
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
 
Warsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyWarsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policy
 
Let's serve your data
Let's serve your dataLet's serve your data
Let's serve your data
 

Similaire à Building a Modular Server Platform with OSGi

Building a server platform with os gi
Building a server platform with os giBuilding a server platform with os gi
Building a server platform with os giDileepa Jayakody
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixMarcel Offermans
 
How to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbonHow to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbonShameera Rathnayaka
 
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost WSO2
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetVictorOps
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...Nuxeo
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetMike Merideth
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applicationsJulien Dubois
 
Introduction to the wso2 carbon platform webinar
Introduction to the wso2 carbon platform   webinarIntroduction to the wso2 carbon platform   webinar
Introduction to the wso2 carbon platform webinarWSO2
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform WSO2
 
Why Does Modular Middleware Matters
Why Does Modular Middleware MattersWhy Does Modular Middleware Matters
Why Does Modular Middleware MattersWSO2
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityGraham Charters
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformNuxeo
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesMarcel Offermans
 
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...David vonThenen
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0David Bosschaert
 

Similaire à Building a Modular Server Platform with OSGi (20)

Building a server platform with os gi
Building a server platform with os giBuilding a server platform with os gi
Building a server platform with os gi
 
Carbon 5 : A Preview
Carbon 5 : A PreviewCarbon 5 : A Preview
Carbon 5 : A Preview
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
 
How to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbonHow to build a custom stack with wso2 carbon
How to build a custom stack with wso2 carbon
 
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
Think BIG, Spend Small A Look at how WSO2 Can Help Scale Up with Less Cost
 
The Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with PuppetThe Art & Zen of Managing Nagios with Puppet
The Art & Zen of Managing Nagios with Puppet
 
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
A Platform Approach to Enterprise Content Management with Eclipse Apricot, CM...
 
The Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With PuppetThe Art and Zen of Managing Nagios With Puppet
The Art and Zen of Managing Nagios With Puppet
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
 
Introduction to the wso2 carbon platform webinar
Introduction to the wso2 carbon platform   webinarIntroduction to the wso2 carbon platform   webinar
Introduction to the wso2 carbon platform webinar
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform
 
Why Does Modular Middleware Matters
Why Does Modular Middleware MattersWhy Does Modular Middleware Matters
Why Does Modular Middleware Matters
 
Monoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is ModularityMonoliths are so 2001 – What you need is Modularity
Monoliths are so 2001 – What you need is Modularity
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependencies
 
Carbon and OSGi Deep Dive
Carbon and OSGi Deep DiveCarbon and OSGi Deep Dive
Carbon and OSGi Deep Dive
 
Microservices deck
Microservices deckMicroservices deck
Microservices deck
 
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
SCaLE 15x - How Container Schedulers and Software-Defined Storage will Change...
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0What's new in the OSGi Enterprise Release 5.0
What's new in the OSGi Enterprise Release 5.0
 

Dernier

如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证acoha1
 
如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一
如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一
如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一0uyfyq0q4
 
Audience Researchndfhcvnfgvgbhujhgfv.pptx
Audience Researchndfhcvnfgvgbhujhgfv.pptxAudience Researchndfhcvnfgvgbhujhgfv.pptx
Audience Researchndfhcvnfgvgbhujhgfv.pptxStephen266013
 
2024 Q1 Tableau User Group Leader Quarterly Call
2024 Q1 Tableau User Group Leader Quarterly Call2024 Q1 Tableau User Group Leader Quarterly Call
2024 Q1 Tableau User Group Leader Quarterly Calllward7
 
2024 Q2 Orange County (CA) Tableau User Group Meeting
2024 Q2 Orange County (CA) Tableau User Group Meeting2024 Q2 Orange County (CA) Tableau User Group Meeting
2024 Q2 Orange County (CA) Tableau User Group MeetingAlison Pitt
 
一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理pyhepag
 
Seven tools of quality control.slideshare
Seven tools of quality control.slideshareSeven tools of quality control.slideshare
Seven tools of quality control.slideshareraiaryan448
 
Artificial_General_Intelligence__storm_gen_article.pdf
Artificial_General_Intelligence__storm_gen_article.pdfArtificial_General_Intelligence__storm_gen_article.pdf
Artificial_General_Intelligence__storm_gen_article.pdfscitechtalktv
 
1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证
1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证
1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证ppy8zfkfm
 
一比一原版麦考瑞大学毕业证成绩单如何办理
一比一原版麦考瑞大学毕业证成绩单如何办理一比一原版麦考瑞大学毕业证成绩单如何办理
一比一原版麦考瑞大学毕业证成绩单如何办理cyebo
 
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...Valters Lauzums
 
NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...
NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...
NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...Amil baba
 
Atlantic Grupa Case Study (Mintec Data AI)
Atlantic Grupa Case Study (Mintec Data AI)Atlantic Grupa Case Study (Mintec Data AI)
Atlantic Grupa Case Study (Mintec Data AI)Jon Hansen
 
社内勉強会資料  Mamba - A new era or ephemeral
社内勉強会資料   Mamba - A new era or ephemeral社内勉強会資料   Mamba - A new era or ephemeral
社内勉強会資料  Mamba - A new era or ephemeralNABLAS株式会社
 
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理pyhepag
 
如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证acoha1
 
ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp Number 24/7
ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp  Number 24/7ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp  Number 24/7
ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp Number 24/7gragkhusi
 
如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证
如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证
如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证ju0dztxtn
 

Dernier (20)

如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(WashU毕业证书)圣路易斯华盛顿大学毕业证成绩单本科硕士学位证留信学历认证
 
如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一
如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一
如何办理滑铁卢大学毕业证(Waterloo毕业证)成绩单本科学位证原版一比一
 
Audience Researchndfhcvnfgvgbhujhgfv.pptx
Audience Researchndfhcvnfgvgbhujhgfv.pptxAudience Researchndfhcvnfgvgbhujhgfv.pptx
Audience Researchndfhcvnfgvgbhujhgfv.pptx
 
2024 Q1 Tableau User Group Leader Quarterly Call
2024 Q1 Tableau User Group Leader Quarterly Call2024 Q1 Tableau User Group Leader Quarterly Call
2024 Q1 Tableau User Group Leader Quarterly Call
 
2024 Q2 Orange County (CA) Tableau User Group Meeting
2024 Q2 Orange County (CA) Tableau User Group Meeting2024 Q2 Orange County (CA) Tableau User Group Meeting
2024 Q2 Orange County (CA) Tableau User Group Meeting
 
一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理一比一原版阿德莱德大学毕业证成绩单如何办理
一比一原版阿德莱德大学毕业证成绩单如何办理
 
Seven tools of quality control.slideshare
Seven tools of quality control.slideshareSeven tools of quality control.slideshare
Seven tools of quality control.slideshare
 
Artificial_General_Intelligence__storm_gen_article.pdf
Artificial_General_Intelligence__storm_gen_article.pdfArtificial_General_Intelligence__storm_gen_article.pdf
Artificial_General_Intelligence__storm_gen_article.pdf
 
1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证
1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证
1:1原版定制利物浦大学毕业证(Liverpool毕业证)成绩单学位证书留信学历认证
 
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotecAbortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
Abortion pills in Dammam Saudi Arabia// +966572737505 // buy cytotec
 
一比一原版麦考瑞大学毕业证成绩单如何办理
一比一原版麦考瑞大学毕业证成绩单如何办理一比一原版麦考瑞大学毕业证成绩单如何办理
一比一原版麦考瑞大学毕业证成绩单如何办理
 
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
Data Analytics for Digital Marketing Lecture for Advanced Digital & Social Me...
 
NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...
NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...
NO1 Best Kala Jadu Expert Specialist In Germany Kala Jadu Expert Specialist I...
 
123.docx. .
123.docx.                                 .123.docx.                                 .
123.docx. .
 
Atlantic Grupa Case Study (Mintec Data AI)
Atlantic Grupa Case Study (Mintec Data AI)Atlantic Grupa Case Study (Mintec Data AI)
Atlantic Grupa Case Study (Mintec Data AI)
 
社内勉強会資料  Mamba - A new era or ephemeral
社内勉強会資料   Mamba - A new era or ephemeral社内勉強会資料   Mamba - A new era or ephemeral
社内勉強会資料  Mamba - A new era or ephemeral
 
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
一比一原版(Monash毕业证书)莫纳什大学毕业证成绩单如何办理
 
如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证
如何办理(UPenn毕业证书)宾夕法尼亚大学毕业证成绩单本科硕士学位证留信学历认证
 
ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp Number 24/7
ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp  Number 24/7ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp  Number 24/7
ℂall Girls Balbir Nagar ℂall Now Chhaya ☎ 9899900591 WhatsApp Number 24/7
 
如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证
如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证
如何办理英国卡迪夫大学毕业证(Cardiff毕业证书)成绩单留信学历认证
 

Building a Modular Server Platform with OSGi

  • 1. Building a Modular Server Platform with OSGi Dileepa Jayakody Software Engineer SSWSO2 Inc.
  • 2. Outline • Complex Systems • OSGi for Modular Systems • OSGi in SOA middleware • Carbon : A modular server platform for middleware • Carbon Architecture
  • 3. Complex Systems • A Complex Systems is a set of interconnected heterogeneous components • They are hard to maintain, extend or even to understand!
  • 4. Problems with Complex Systems • Hard to maintain • Code duplication • Inconsistency • Lack of interoperability • Tightly coupled components
  • 6. What is OSGi? • The dynamic modular system for Java • Defines a way to create true modules and a way for those modules to interact at runtime to create a modular system • A module: a bundle A jar + manifest (bundle metadata) • Can be installed, updated, and uninstalled without restarting the JVM
  • 7. How does OSGi help? OSGi helps to break down a complex systems into a collection of interacting modules • Modularity • A bundle can share/hide information at package level • Lifecycle Management • Separate class loader for each bundle • A bundle-lifecycle can be managed dynamically • Services • Each bundle provides it's functionality as OSGi services to other bundles • Services are simply Java objects that implement a given interface • Implementation is loosely coupled • Bundles reuse a single Java object registered • In VM collaborative SOA model
  • 8. SOA Middleware • Middleware : The software which glues/connect different enterprise applications • A Middleware platform provides; • Integration • Governance • Data Services • Business Processes • Connectivity Services • Identity and Security • Application Management • API Management
  • 9. OSGi in Middleware • Each SOA component can be represented by an OSGi bundle • Application Management • Mediation • Service Hosting etc. • Separation of concern • Each OSGi bundle to provide a set of well-defined services • Loosely coupled components • Dynamic loading of modules • Can extend the system dynamically by installing new bundles • Is supported by an underlying provisioning platform
  • 10. WSO2 Carbon • Carbon: An open-source fully componentized enterprise middleware platform based on OSGi • Complemented by Stratos : The cloud enabled middleware platform (PaaS) • Consists of a core set of components providing core services such as; • Security • Clustering • Logging • Transports • Registry • User management etc. • Other components use the carbon core services and extend system functionality
  • 11. Why did we build Carbon? • Fast growing complexity of the platform • Overlapping components • Duplicated functionality • Difficulty to integrate functionality between products
  • 12. Carbon Architecture • Carbon Components • Carbon Features • Orbits • Kernel Services • Feature Provisioning
  • 14. Carbon Components • A set of lean and self-consistent OSGi Bundles • Lives in the Carbon Framework. Hence should adhere to rules defined in the Carbon Framework • Fundamental Concept : FE-BE Separation • Every component has a core runtime, a well-defined front-end console and a clean SOA management interface • All completely pluggable and versioned • Connected via web-services • Use Core Carbon Services • Via OSGi service registry • e.g. Registry Service, UserManager Service, etc.
  • 15. Carbon Features • Similar to Eclipse Features • An aggregate of Carbon components • Carbon Products are composed using Carbon features (Eclipse for Servers) • A Carbon Feature • Is an installable unit which can be installed into any Carbon based product • Allows you to manage bundle and feature level dependencies • Can be installed using the Carbon Feature Manager • Can be published as a p2-repository • A Carbon Feature Category • A logical grouping of features • Represents a Carbon Product
  • 16. Carbon and Equinox P2 • The provisioning platform for Carbon features • Using Equinox p2 in Carbon you can; • Install • Uninstall • Revert • Update Carbon features. • Features can be installed from a P2 repository • P2 feature repository can be either • File-based • Web-based
  • 17. Orbits : External dependencies • Lots of open source projects smoothly integrated • Apache Axis2 • Apache tomcat • Apache ODE • Apache synapse • Bundled as Orbits (Similar to Eclipse Orbit Project) • Dependencies managed with versions • External non-OSGi jars are auto-bundled (components/lib) • Gives the user more flexibility in using external libraries (eg: jdbc libraries)
  • 18. Kernel Services • Kernel services through Carbon core • Execution (supporting services and workflows) • Data Storage • Security (user management, authentication, authorization) • User Interfaces • Other Services (monitoring, caching, clustering etc.) • They are used by most components and simplify development of new components • OSGi Maturity model : Level 4 (loosely coupled) • Separation of interface from implementation • Provides a services-based module collaboration • Dependencies semantically versioned
  • 21. OSGi best practises in Carbon • Controlled number of exports from a bundle • Semantic Versioning for Imports/Exports • Version ranges for imports to handle backward compatibilities • To manage dependencies between components • To host different versions of the same package and correctly handle dependencies • Avoided usage of Required-Bundle • To avoid tight-coupling • Declarative services as the dependency injection model • To manage dependencies between components dynamically • Use of OSGi HttpService • To consume http requests by bundles
  • 22. Carbon Component: Development Process • Develop the Carbon component • Back-end component (BE OSGi bundles) • Front-end component (FE OSGi bundles) • Common bundles, if any • Develop the corresponding feature • BE/Server Feature • FE/UI Feature • Composite Feature • Install into a Carbon based product • By integrating with the product build system or; • By developing a feature repository and installing using Feature Manager
  • 23. Tools for Carbon • Maven • To build Carbon source • Maven bundle plugin • To build bundles • Manage dependencies • Maven scr plugin (scr : service components runtime) • Service Components are defined through annotations • Plugin creates the necessary descriptors for the OSGi Declarative Services • Carbon P2 plugin (Developed at WSO2) • To build features & feature categories • To build feature repositories • To build product profiles
  • 24. Maven Bundle Plugin • Is the Maven version of BND tool by Peter Kriens • The primary goal of BND is to relieve the bundle developer from the pain of creating the bundle manifest • Wraps BND to make it work with Maven project structure • BND instructions; • Manifest headers : • These instructions are copied to the manifest file as manifest headers. Values of these instruction are either copied, or generated by the Plugin. • Variables : • These instructions act as variables and can be used for property substitution • Directives : • These perform some special processing
  • 25. Maven Bundle Plugin (Apache Felix Plugin)
  • 26. Carbon P2 Plugin • Maven tool for creating features, feature-repositories and carbon- products • Uses Eclipse FeaturesAndBundles Publisher tool under the hood • Instructions • bundleDef : includes a bundle • IncludedFeatureDef : includes a feature as a sub-feature • ImportFeatureDef : defines a dependency to an external feature • Type of the Carbon Feature can be defined as a p2-property • org.wso2.carbon.p2.category.type:server • org.wso2.carbon.p2.category.type:console
  • 28. Feature Categories • Uses P2 Category publisher under the hood • Generates the category.xml and provide it to the category publisher
  • 29. Feature Manager • UI based tool to perform provisioning actions on Carbon • Helps to compose carbon products with the required features
  • 31. OSGi Future in Carbon • Multi-tenant OSGi • Regions for each tenant • SOA artifacts can be partitioned per tenant in OSGi runtime
  • 32. Summary • Complex systems are hard to maintain and extend • The solution: modular systems • OSGi : a true dynamic modular system for Java • OSGi in SOA middleware • Carbon : a modular server platform for middleware