SlideShare a Scribd company logo
1 of 34
Download to read offline
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!

More Related Content

What's hot

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
 

What's hot (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
 
Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1
 
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
 
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
 

Similar to Building a Modular Server Platform with OSGi - Harshana Eranga Martin, Dileepa Jayakody

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
Dileepa Jayakody
 
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
Shameera 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
 
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
WSO2
 
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 Matters
WSO2
 

Similar to Building a Modular Server Platform with OSGi - Harshana Eranga Martin, Dileepa Jayakody (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
 

More from mfrancis

Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
mfrancis
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
mfrancis
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
mfrancis
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
mfrancis
 

More from mfrancis (20)

Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
Eclipse Modeling Framework and plain OSGi the easy way - Mark Hoffman (Data I...
 
OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)OSGi and Java 9+ - BJ Hargrave (IBM)
OSGi and Java 9+ - BJ Hargrave (IBM)
 
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
Simplify Web UX Coding using OSGi Modularity Magic - Paul Fraser (A2Z Living)
 
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank LyaruuOSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
OSGi for the data centre - Connecting OSGi to Kubernetes - Frank Lyaruu
 
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
Remote Management and Monitoring of Distributed OSGi Applications - Tim Verbe...
 
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
OSGi with Docker - a powerful way to develop Java systems - Udo Hafermann (So...
 
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
A real world use case with OSGi R7 - Jurgen Albert (Data In Motion Consulting...
 
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
OSGi Feature Model - Where Art Thou - David Bosschaert (Adobe)
 
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
Migrating from PDE to Bndtools in Practice - Amit Kumar Mondal (Deutsche Tele...
 
OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)OSGi CDI Integration Specification - Ray Augé (Liferay)
OSGi CDI Integration Specification - Ray Augé (Liferay)
 
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
How OSGi drives cross-sector energy management - Jörn Tümmler (SMA Solar Tech...
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
It Was Twenty Years Ago Today - Building an OSGi based Smart Home System - Ch...
 
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)Popular patterns revisited on OSGi - Christian Schneider (Adobe)
Popular patterns revisited on OSGi - Christian Schneider (Adobe)
 
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
Integrating SLF4J and the new OSGi LogService 1.4 - BJ Hargrave (IBM)
 
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
OSG(a)i: because AI needs a runtime - Tim Verbelen (imec)
 
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
Flying to Jupiter with OSGi - Tony Walsh (ESA) & Hristo Indzhov (Telespazio V...
 
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
MicroProfile, OSGi was meant for this - Ray Auge (Liferay)
 
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
Prototyping IoT systems with a hybrid OSGi & Node-RED platform - Bruce Jackso...
 
How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)How to connect your OSGi application - Dirk Fauth (Bosch)
How to connect your OSGi application - Dirk Fauth (Bosch)
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Building a Modular Server Platform with OSGi - Harshana Eranga Martin, Dileepa Jayakody

  • 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