SlideShare a Scribd company logo
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

Open stack + Containers + Hyper-V
Open stack + Containers + Hyper-VOpen stack + Containers + Hyper-V
Open stack + Containers + Hyper-V
Sriram Subramanian
 
Creating a Kubernetes Operator in Java
Creating a Kubernetes Operator in JavaCreating a Kubernetes Operator in Java
Creating a Kubernetes Operator in Java
Rudy 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 Preview
WSO2
 
Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1Ahmedabad MuleSoft Meetup #1
Ahmedabad MuleSoft Meetup #1
Tejas 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 pipeline
Michel 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
 
WebLogic and GraalVM
WebLogic and GraalVMWebLogic and GraalVM
WebLogic and GraalVM
Michel Schildmeijer
 
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 Kubernetes
Vishal Biyani
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
Michel Schildmeijer
 
GWT Enterprise Edition
GWT Enterprise EditionGWT Enterprise Edition
GWT Enterprise Edition
Gilad 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 Startup
Rudy 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 Foundry
Imesh Gunaratne
 
Bootiful GraphQL with Kotlin
Bootiful GraphQL with KotlinBootiful GraphQL with Kotlin
Bootiful GraphQL with Kotlin
VMware 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&1
Matt 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/OS
Imesh Gunaratne
 
Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020Keynote Oracle Fusion Middleware Summit_2020
Keynote Oracle Fusion Middleware Summit_2020
Michel 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 Services
Robin Howlett
 
Warsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policyWarsaw MuleSoft Meetup #7 - custom policy
Warsaw MuleSoft Meetup #7 - custom policy
Patryk Bandurski
 
Let's serve your data
Let's serve your dataLet's serve your data
Let's serve your data
Frank van der Linden
 

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
 
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
 

Similar to 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 gi
Dileepa Jayakody
 
Carbon 5 : A Preview
Carbon 5 : A PreviewCarbon 5 : A Preview
Carbon 5 : A Preview
Sameera Jayasoma
 
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
Marcel 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 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
 
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
VictorOps
 
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 Puppet
Mike Merideth
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
Julien Dubois
 
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
 
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
 
Why Does Modular Middleware Matters
Why Does Modular Middleware MattersWhy Does Modular Middleware Matters
Why Does Modular Middleware Matters
WSO2
 
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
Graham 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 Platform
Nuxeo
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependencies
Marcel Offermans
 
Carbon and OSGi Deep Dive
Carbon and OSGi Deep DiveCarbon and OSGi Deep Dive
Carbon and OSGi Deep Dive
Sameera Jayasoma
 
Microservices deck
Microservices deckMicroservices deck
Microservices deck
Raja Chattopadhyay
 
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 development
Martin 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.0
David Bosschaert
 

Similar to 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
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform
 
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
 
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
 

Recently uploaded

Analysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performanceAnalysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performance
roli9797
 
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
slg6lamcq
 
ViewShift: Hassle-free Dynamic Policy Enforcement for Every Data Lake
ViewShift: Hassle-free Dynamic Policy Enforcement for Every Data LakeViewShift: Hassle-free Dynamic Policy Enforcement for Every Data Lake
ViewShift: Hassle-free Dynamic Policy Enforcement for Every Data Lake
Walaa Eldin Moustafa
 
Unleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdf
Unleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdfUnleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdf
Unleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdf
Enterprise Wired
 
原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样
原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样
原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样
u86oixdj
 
Intelligence supported media monitoring in veterinary medicine
Intelligence supported media monitoring in veterinary medicineIntelligence supported media monitoring in veterinary medicine
Intelligence supported media monitoring in veterinary medicine
AndrzejJarynowski
 
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
mbawufebxi
 
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
g4dpvqap0
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
Timothy Spann
 
一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理
一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理
一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理
bopyb
 
Everything you wanted to know about LIHTC
Everything you wanted to know about LIHTCEverything you wanted to know about LIHTC
Everything you wanted to know about LIHTC
Roger Valdez
 
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
oz8q3jxlp
 
Influence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business PlanInfluence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business Plan
jerlynmaetalle
 
一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理
一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理
一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理
74nqk8xf
 
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
v3tuleee
 
State of Artificial intelligence Report 2023
State of Artificial intelligence Report 2023State of Artificial intelligence Report 2023
State of Artificial intelligence Report 2023
kuntobimo2016
 
一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理
一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理
一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理
ahzuo
 
一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理
一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理
一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理
mzpolocfi
 
The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...
jerlynmaetalle
 
一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理
一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理
一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理
nuttdpt
 

Recently uploaded (20)

Analysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performanceAnalysis insight about a Flyball dog competition team's performance
Analysis insight about a Flyball dog competition team's performance
 
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
一比一原版(Adelaide毕业证书)阿德莱德大学毕业证如何办理
 
ViewShift: Hassle-free Dynamic Policy Enforcement for Every Data Lake
ViewShift: Hassle-free Dynamic Policy Enforcement for Every Data LakeViewShift: Hassle-free Dynamic Policy Enforcement for Every Data Lake
ViewShift: Hassle-free Dynamic Policy Enforcement for Every Data Lake
 
Unleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdf
Unleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdfUnleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdf
Unleashing the Power of Data_ Choosing a Trusted Analytics Platform.pdf
 
原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样
原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样
原版制作(swinburne毕业证书)斯威本科技大学毕业证毕业完成信一模一样
 
Intelligence supported media monitoring in veterinary medicine
Intelligence supported media monitoring in veterinary medicineIntelligence supported media monitoring in veterinary medicine
Intelligence supported media monitoring in veterinary medicine
 
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
一比一原版(Bradford毕业证书)布拉德福德大学毕业证如何办理
 
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
一比一原版(爱大毕业证书)爱丁堡大学毕业证如何办理
 
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
06-04-2024 - NYC Tech Week - Discussion on Vector Databases, Unstructured Dat...
 
一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理
一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理
一比一原版(GWU,GW文凭证书)乔治·华盛顿大学毕业证如何办理
 
Everything you wanted to know about LIHTC
Everything you wanted to know about LIHTCEverything you wanted to know about LIHTC
Everything you wanted to know about LIHTC
 
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
一比一原版(Deakin毕业证书)迪肯大学毕业证如何办理
 
Influence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business PlanInfluence of Marketing Strategy and Market Competition on Business Plan
Influence of Marketing Strategy and Market Competition on Business Plan
 
一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理
一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理
一比一原版(Coventry毕业证书)考文垂大学毕业证如何办理
 
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理一比一原版(UofS毕业证书)萨省大学毕业证如何办理
一比一原版(UofS毕业证书)萨省大学毕业证如何办理
 
State of Artificial intelligence Report 2023
State of Artificial intelligence Report 2023State of Artificial intelligence Report 2023
State of Artificial intelligence Report 2023
 
一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理
一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理
一比一原版(UIUC毕业证)伊利诺伊大学|厄巴纳-香槟分校毕业证如何办理
 
一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理
一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理
一比一原版(Dalhousie毕业证书)达尔豪斯大学毕业证如何办理
 
The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...The affect of service quality and online reviews on customer loyalty in the E...
The affect of service quality and online reviews on customer loyalty in the E...
 
一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理
一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理
一比一原版(UCSB文凭证书)圣芭芭拉分校毕业证如何办理
 

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