SlideShare a Scribd company logo
© 2016 IBM Corporation
Graham Charters
Senior Technical Staff Member,
WebSphere Application Server
Microservices and OSGi:
Better together?
2Page© 2016 IBM Corporation
Agenda
– Introduction to Modularity, Microservices & OSGi
– Comparison of OSGi and Microservice capabilities
– Microservices challenges
– OSGi smoothing the way to Microservices
3Page© 2016 IBM Corporation
What is Modularity
– “Modular programming is a software
design technique that emphasizes
separating the functionality of a
program into independent,
interchangeable modules, such that
each contains everything necessary to
execute only one aspect of the desired
functionality.”
– “A module interface expresses the
elements that are provided and
required by the module. …”
https://en.wikipedia.org/wiki/Modular_programming
Photo by: https://www.flickr.com/photos/zaxl4/
License: https://creativecommons.org/licenses/by-sa/2.0/
4Page© 2016 IBM Corporation
http://martinfowler.com/articles/microservices.html (25 March 2014)
What are Microservices
5Page© 2016 IBM Corporation
http://martinfowler.com/articles/microservices.html
Microservices are Modularity






6Page© 2016 IBM Corporation
What is OSGi
– Enables products to
be assembled from
Modules
– Modules callable
through Services
– Modules and their
Services have a
dynamic lifecycle
BundleBundle
Bundle
listen
provideuse
Service
7Page© 2016 IBM Corporation
Not all modularity is equal
• Not all module technologies
enable the same capabilities
• Modularity Maturity Model
provides a way to compare
technologies and understand
the benefits
• Inspired by customer
experiences adopting OSGi
“Towards a Modularity Maturity Model”,
OSGi Community Event 2011 presentation @ http://slidesha.re/q8EHFp
8Page© 2016 IBM Corporation
Modularity Levels
Level Name Summary
1 Ad Hoc Nothing
2 Modules Formal identity, decoupled from artifact
3 Modularity Formal module contracts, decoupled from identity
4 Loose-Coupling Services, semantic versioning, decoupled from implementation
5 Devolution Modularity-aware repositories, collaboration, governance,
decoupled from ownership
6 Dynamism Life-cycle awareness and independence, decoupled from time
9Page© 2016 IBM Corporation
What was it Lewis and Fowler said?
Level Name Summary
1 Ad Hoc Nothing
2 Modules Formal identity
3 Modularity Formal module contracts
4 Loose-Coupling Services, semantic versioning, Componentization via Services
5 Devolution Modularity-aware repositories, collaboration, governance,
Organized around Business Capabilities
6 Dynamism Life-cycle awareness and independence, Design for failure
10Page© 2016 IBM Corporation
Filling in the gaps
Level Name Summary
1 Ad Hoc Nothing
2 Modules Formal identity, Deployable service (likely a build artefact)
3 Modularity Formal module contracts, Service Contracts – e.g. Swagger
4 Loose-Coupling Services, semantic versioning, Componentization via Services
5 Devolution Modularity-aware repositories, collaboration, governance,
Organized around Business Capabilities
6 Dynamism Life-cycle awareness and independence, Design for failure
11Page© 2016 IBM Corporation
Didn’t you just tell
us we don’t need
OSGi?
https://creativecommons.org/licenses/by-nd/2.0/
https://www.flickr.com/photos/40601656@N07/
12Page© 2016 IBM Corporation
The answer’s Microservices, what’s the question?
https://www.gartner.com/doc/3371727/hype-cycle-application-services-
ByJeremykempatEnglishWikipedia,CCBY-SA3.0,
https://commons.wikimedia.org/w/index.php?curid=10547051
Gartner
says we’re
here
Early publicity produces a number of
success stories—often accompanied by
scores of failures. Some companies take
action; most don't.
Peak of Inflated Expectations
13Page© 2016 IBM Corporation
Evolution, not revolution
Martin Fowler:
“As I hear stories about teams using a microservices architecture, I've noticed a
common pattern.
1. Almost all the successful microservice stories have started with a monolith that
got too big and was broken up
2. Almost all the cases where I've heard of a system that was built as a
microservice system from scratch, it has ended up in serious trouble.”
http://martinfowler.com/bliki/MonolithFirst.html
14Page© 2016 IBM Corporation
Design is still hard
http://www.codingthearchitecture.com/2014/10/01/modularity_and_testability.html
Simon Brown:
“Technologies like Spring Boot make creating and deploying
microservices relatively straightforward, but the design thinking
behind partitioning a software system into services is still as
hard as it's ever been.”
http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
15Page© 2016 IBM Corporation
Document your
poop
16Page© 2016 IBM Corporation
The costs of Microservices
http://martinfowler.com/articles/microservice-trade-offs.html
17Page© 2016 IBM Corporation
So should we or shouldn’t we do Microservices?
https://creativecommons.org/licenses/by/2.0/
https://www.flickr.com/photos/sufferingsocrates/
18Page© 2016 IBM Corporation
Look before you leap
https://www.flickr.com/photos/ggabernig/
https://creativecommons.org/licenses/by/2.0/
19Page© 2016 IBM Corporation
Monolith-first
Martin Fowler:
“As I hear stories about teams using
a microservices architecture, I've
noticed a common pattern.
1. Almost all the successful
microservice stories have started
with a monolith that got too big
and was broken up
2. Almost all the cases where I've
heard of a system that was built
as a microservice system from
scratch, it has ended up in
serious trouble.”
http://martinfowler.com/bliki/MonolithFirst.html
20Page© 2016 IBM Corporation
Design is still hard
http://www.codingthearchitecture.com/2014/10/01/modularity_and_testability.html
Technologies like Spring
Boot make creating and
deploying microservices
relatively straightforward,
but the design thinking
behind partitioning a
software system into
services is still as hard as
it's ever been.
http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
21Page© 2016 IBM Corporation
Boundaries
Microservices’ main benefit, in my view, is
enabling parallel development by
establishing a hard-to-cross boundary
between different parts of your system.
By doing this, you make it hard – or at least
harder – to do the wrong thing: Namely,
connecting parts that shouldn’t be
connected, and coupling those that need to
be connected too tightly. In theory, you
don’t need microservices for this if you
simply have the discipline to follow clear
rules and establish clear boundaries
within your monolithic application; in
practice, I’ve found this to be the case only
very rarely.
http://martinfowler.com/articles/dont-start-monolith.html
Don’t start with a monolith
… when your goal is a microservices architecture
Stefan Tilkov
22Page© 2016 IBM Corporation
Boundaries
“Often the true consequences of your
architectural decisions are only evident
several years after you made them. We
have seen projects where a good team,
with a strong desire for modularity, has
built a monolithic architecture that has
decayed over the years. Many people
believe that such decay is less likely with
microservices, since the service
boundaries are explicit and hard to
patch around.”
http://martinfowler.com/articles/microservices.html
23Page© 2016 IBM Corporation
The modular
monolith
If you can't build a
modular monolith,
what makes you
think microservices
are the answer?
http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html
24Page© 2016 IBM Corporation
Getting to there from here…
https://creativecommons.org/licenses/by/2.0/
https://www.flickr.com/photos/pss/
25Page© 2016 IBM Corporation
Key questions
What will help me create and
maintain a modular
monolith?
What’s the closest you can
get to the microservices
qualities without incurring all
of the associated cost?
http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
26Page© 2016 IBM Corporation
Refresher…
– Enables products to
be assembled from
Modules
– Modules callable
through Services
– Modules and their
Services have a
dynamic lifecycle
BundleBundle
Bundle
listen
provideuse
Service
27Page© 2016 IBM Corporation
The Modular Monolith
– Use OSGi to modularise your Product
– Not just Business as Usual - organize
around business capabilities,
modularize your data, etc.
– A number of approach have been
documented.
• Services-first
• Java EE -> OSGi
• Strangler Pattern
– These are equally applicable to OSGi
& Microservice discovery
ED
B
F
A
C
H
G
28Page© 2016 IBM Corporation
Evolving to Microservices
– Identify Feature ‘Subsystems’
as individually deployable
units
– Continue to deploy to same
process
ED
B
F
A
C
H
G
29Page© 2016 IBM Corporation
Isolate your Subsystems
– Make ‘boundary services’
remotable
– Enforce isolation using
Application Subsytems
– Handle service unavailability
– Continue to deploy to same
process
ED
B
F
A
C
H
G
G
B
30Page© 2016 IBM Corporation
Deployment independently
– Deploy as independently
scalable microservices
– Automate deployment
– Prove out remoting, latency,
etc.
E
D
B
F
A
C
H
G
G
B
31Page© 2016 IBM Corporation
Modular Monolith+
32Page© 2016 IBM Corporation
Modular Monolith+
33Page© 2016 IBM Corporation
Remoting Services
– OSGi Remote Services &
Remote Services Admin
providers
– Or pick a JAX-RS
implementation
– Future: JAX-RS Whiteboard
(RFC 217)
RS Impl RS Impl
register
proxy
discover
register
endpoint
JAX-RS
endpoint
JAX-RS
proxy
https://github.com/osgi/design/tree/master/rfcs/rfc0217
34Page© 2016 IBM Corporation
Technology choices
– MicroProfile 1.0 defines a technology set for Java EE
•JAX-RS, CDI, JSON-P
– What would the OSGi equivalent be?
•JAX-RS, Declarative Services, JSON-P
– Beyond the core
•Externalize configuration – Config Admin (think 12-factor)
35Page© 2016 IBM Corporation
Summary
– Microservices are an important approach to producing highly-available,
maintainable applications
– Microservices are not for-free, introducing new costs, such as distribution
and operational complexity
– Modular monoliths are seen as an important stepping stone to being able to
produce Microservices
– OSGi is an ideal fit for producing modular monoliths, going well-beyond their
core characteristics
– The OSGi standards cover the core capabilities essential for producing first-
class Java-based microservices

More Related Content

What's hot

Orchestrator - Practical Approach to host UiPath Orchestrator
Orchestrator - Practical Approach to host UiPath OrchestratorOrchestrator - Practical Approach to host UiPath Orchestrator
Orchestrator - Practical Approach to host UiPath Orchestrator
Vibhor Shrivastava
 
ERPNext Enterprise Resource Planning System
ERPNext Enterprise Resource Planning SystemERPNext Enterprise Resource Planning System
ERPNext Enterprise Resource Planning System
Fahad Saleem
 
Supply chain management project
Supply chain management projectSupply chain management project
Supply chain management project
Muskan Asnani
 
What is Robotic Process Automation?
What is Robotic Process Automation?What is Robotic Process Automation?
What is Robotic Process Automation?
Chris Zechmeister
 
AppSphere 15 - Deep Dive into AppDynamics Application Analytics
AppSphere 15 - Deep Dive into AppDynamics Application AnalyticsAppSphere 15 - Deep Dive into AppDynamics Application Analytics
AppSphere 15 - Deep Dive into AppDynamics Application Analytics
AppDynamics
 
API Management
API ManagementAPI Management
API Management
Roger van de Kimmenade
 
UiPath Community Event - Build more mature automations with Unattended Robots
UiPath Community Event - Build more mature automations with Unattended RobotsUiPath Community Event - Build more mature automations with Unattended Robots
UiPath Community Event - Build more mature automations with Unattended Robots
TomaszGaczynski
 
UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...
UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...
UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...
TomaszGaczynski
 
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays
 
UiPath 23.4 Product Release Updates
UiPath 23.4 Product Release UpdatesUiPath 23.4 Product Release Updates
UiPath 23.4 Product Release Updates
DianaGray10
 
RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...
RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...
RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...
Edureka!
 
RPA in Healthcare
RPA in HealthcareRPA in Healthcare
RPA in Healthcare
CitiusTech
 
Automation Hub Best practices - Getting Started.pdf
Automation Hub Best practices - Getting Started.pdfAutomation Hub Best practices - Getting Started.pdf
Automation Hub Best practices - Getting Started.pdf
Cristina Vidu
 

What's hot (13)

Orchestrator - Practical Approach to host UiPath Orchestrator
Orchestrator - Practical Approach to host UiPath OrchestratorOrchestrator - Practical Approach to host UiPath Orchestrator
Orchestrator - Practical Approach to host UiPath Orchestrator
 
ERPNext Enterprise Resource Planning System
ERPNext Enterprise Resource Planning SystemERPNext Enterprise Resource Planning System
ERPNext Enterprise Resource Planning System
 
Supply chain management project
Supply chain management projectSupply chain management project
Supply chain management project
 
What is Robotic Process Automation?
What is Robotic Process Automation?What is Robotic Process Automation?
What is Robotic Process Automation?
 
AppSphere 15 - Deep Dive into AppDynamics Application Analytics
AppSphere 15 - Deep Dive into AppDynamics Application AnalyticsAppSphere 15 - Deep Dive into AppDynamics Application Analytics
AppSphere 15 - Deep Dive into AppDynamics Application Analytics
 
API Management
API ManagementAPI Management
API Management
 
UiPath Community Event - Build more mature automations with Unattended Robots
UiPath Community Event - Build more mature automations with Unattended RobotsUiPath Community Event - Build more mature automations with Unattended Robots
UiPath Community Event - Build more mature automations with Unattended Robots
 
UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...
UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...
UiPath Community Event - UiPath Action Center and UiPath Apps - human in the ...
 
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
 
UiPath 23.4 Product Release Updates
UiPath 23.4 Product Release UpdatesUiPath 23.4 Product Release Updates
UiPath 23.4 Product Release Updates
 
RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...
RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...
RPA Tutorial for Beginners | RPA Training Using UiPath | UiPath Training Onli...
 
RPA in Healthcare
RPA in HealthcareRPA in Healthcare
RPA in Healthcare
 
Automation Hub Best practices - Getting Started.pdf
Automation Hub Best practices - Getting Started.pdfAutomation Hub Best practices - Getting Started.pdf
Automation Hub Best practices - Getting Started.pdf
 

Viewers also liked

Modularity, Microservices and Containerisation - Neil Bartlett, Derek Baum
Modularity, Microservices and Containerisation - Neil Bartlett, Derek BaumModularity, Microservices and Containerisation - Neil Bartlett, Derek Baum
Modularity, Microservices and Containerisation - Neil Bartlett, Derek Baum
mfrancis
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
mfrancis
 
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
mfrancis
 
Intro to OSGi – the Microservices kernel - P Kriens & T Ward
Intro to OSGi – the Microservices kernel - P Kriens & T WardIntro to OSGi – the Microservices kernel - P Kriens & T Ward
Intro to OSGi – the Microservices kernel - P Kriens & T Ward
mfrancis
 
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected JourneyQCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
Sam Newman
 
Do you really want to go fully micro?
Do you really want to go fully micro?Do you really want to go fully micro?
Do you really want to go fully micro?
Robert Munteanu
 
Moved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentalsMoved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentals
Milen Dyankov
 
Moved to https://slidr.io/azzazzel/osgi-for-outsiders
Moved to https://slidr.io/azzazzel/osgi-for-outsidersMoved to https://slidr.io/azzazzel/osgi-for-outsiders
Moved to https://slidr.io/azzazzel/osgi-for-outsiders
Milen Dyankov
 
Reactive Architectures
Reactive ArchitecturesReactive Architectures
Reactive Architectures
Ralph Winzinger
 
Microservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservices
Miguel Pastor
 
Building Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 ASBuilding Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 AS
Kasun Gajasinghe
 
Protobuf & Code Generation + Go-Kit
Protobuf & Code Generation + Go-KitProtobuf & Code Generation + Go-Kit
Protobuf & Code Generation + Go-Kit
Manfred Touron
 
OSGi Blueprint Services
OSGi Blueprint ServicesOSGi Blueprint Services
OSGi Blueprint Services
Guillaume Nodet
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
Achim Nierbeck
 
An Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices WorldAn Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices World
VMware Tanzu
 
Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)
Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)
Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)
Chris Richardson
 
Reactive Programming in Spring 5
Reactive Programming in Spring 5Reactive Programming in Spring 5
Reactive Programming in Spring 5
poutsma
 
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
Badoo Development
 
"Производительность MySQL: что нового?"
"Производительность MySQL: что нового?""Производительность MySQL: что нового?"
"Производительность MySQL: что нового?"
Badoo Development
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)
Badoo Development
 

Viewers also liked (20)

Modularity, Microservices and Containerisation - Neil Bartlett, Derek Baum
Modularity, Microservices and Containerisation - Neil Bartlett, Derek BaumModularity, Microservices and Containerisation - Neil Bartlett, Derek Baum
Modularity, Microservices and Containerisation - Neil Bartlett, Derek Baum
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
 
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...
 
Intro to OSGi – the Microservices kernel - P Kriens & T Ward
Intro to OSGi – the Microservices kernel - P Kriens & T WardIntro to OSGi – the Microservices kernel - P Kriens & T Ward
Intro to OSGi – the Microservices kernel - P Kriens & T Ward
 
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected JourneyQCon Sao Paulo Keynote - Microservices, an Unexpected Journey
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
 
Do you really want to go fully micro?
Do you really want to go fully micro?Do you really want to go fully micro?
Do you really want to go fully micro?
 
Moved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentalsMoved to https://slidr.io/azzazzel/osgi-fundamentals
Moved to https://slidr.io/azzazzel/osgi-fundamentals
 
Moved to https://slidr.io/azzazzel/osgi-for-outsiders
Moved to https://slidr.io/azzazzel/osgi-for-outsidersMoved to https://slidr.io/azzazzel/osgi-for-outsiders
Moved to https://slidr.io/azzazzel/osgi-for-outsiders
 
Reactive Architectures
Reactive ArchitecturesReactive Architectures
Reactive Architectures
 
Microservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservices
 
Building Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 ASBuilding Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 AS
 
Protobuf & Code Generation + Go-Kit
Protobuf & Code Generation + Go-KitProtobuf & Code Generation + Go-Kit
Protobuf & Code Generation + Go-Kit
 
OSGi Blueprint Services
OSGi Blueprint ServicesOSGi Blueprint Services
OSGi Blueprint Services
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
 
An Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices WorldAn Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices World
 
Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)
Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)
Deploying Spring Boot applications with Docker (east bay cloud meetup dec 2014)
 
Reactive Programming in Spring 5
Reactive Programming in Spring 5Reactive Programming in Spring 5
Reactive Programming in Spring 5
 
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
 
"Производительность MySQL: что нового?"
"Производительность MySQL: что нового?""Производительность MySQL: что нового?"
"Производительность MySQL: что нового?"
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)
 

Similar to Microservices and OSGi: Better together?

Do you need microservices architecture?
Do you need microservices architecture?Do you need microservices architecture?
Do you need microservices architecture?
Manu Pk
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
Amir Zuker
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
Paulo Gandra de Sousa
 
Meetup which approach to choose?
Meetup   which approach to choose?Meetup   which approach to choose?
Meetup which approach to choose?
Joe Mbaya
 
NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...
NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...
NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...
NRB
 
Microservices - Yet another buzzword
Microservices - Yet another buzzwordMicroservices - Yet another buzzword
Microservices - Yet another buzzword
Ovidiu Dimulescu
 
Delivering the Composable Enterprise
Delivering the Composable EnterpriseDelivering the Composable Enterprise
Delivering the Composable Enterprise
Saul Caganoff
 
DevOps in Cloud OSLC Integration
DevOps in Cloud OSLC IntegrationDevOps in Cloud OSLC Integration
DevOps in Cloud OSLC Integration
Steve Speicher
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
Chase Aucoin
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
Miki Lombardi
 
How to migrate large project from Angular to React
How to migrate large project from Angular to ReactHow to migrate large project from Angular to React
How to migrate large project from Angular to React
Tomasz Bak
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
Yun Zhi Lin
 
From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!
From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!
From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!
WSO2
 
from shadow IT to empowered IT-asanka 2014 08-gartner catalyst
from shadow IT to empowered IT-asanka 2014 08-gartner catalystfrom shadow IT to empowered IT-asanka 2014 08-gartner catalyst
from shadow IT to empowered IT-asanka 2014 08-gartner catalyst
WSO2
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemix
gjuljo
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright Future
Kelly Goetsch
 
Business Drivers and Challenges of Cloud Computing and Social Networking Appl...
Business Drivers and Challenges of Cloud Computing and Social Networking Appl...Business Drivers and Challenges of Cloud Computing and Social Networking Appl...
Business Drivers and Challenges of Cloud Computing and Social Networking Appl...
M Biro
 
Windows Azure Partner Presentation
Windows Azure Partner PresentationWindows Azure Partner Presentation
Windows Azure Partner Presentation
Wes Yanaga
 
A unified dashboard for collaborative robot management system
A unified dashboard for collaborative robot management systemA unified dashboard for collaborative robot management system
A unified dashboard for collaborative robot management system
Conference Papers
 
ETS Summer School - Introduction to Bluemix (July 4th)
ETS Summer School - Introduction to Bluemix (July 4th)ETS Summer School - Introduction to Bluemix (July 4th)
ETS Summer School - Introduction to Bluemix (July 4th)
Jean-Louis (JL) Marechaux
 

Similar to Microservices and OSGi: Better together? (20)

Do you need microservices architecture?
Do you need microservices architecture?Do you need microservices architecture?
Do you need microservices architecture?
 
Micro-Frontends JSVidCon
Micro-Frontends JSVidConMicro-Frontends JSVidCon
Micro-Frontends JSVidCon
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Meetup which approach to choose?
Meetup   which approach to choose?Meetup   which approach to choose?
Meetup which approach to choose?
 
NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...
NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...
NRB MAINFRAME DAY 04 - Yann Kindelberger - New generation of application arch...
 
Microservices - Yet another buzzword
Microservices - Yet another buzzwordMicroservices - Yet another buzzword
Microservices - Yet another buzzword
 
Delivering the Composable Enterprise
Delivering the Composable EnterpriseDelivering the Composable Enterprise
Delivering the Composable Enterprise
 
DevOps in Cloud OSLC Integration
DevOps in Cloud OSLC IntegrationDevOps in Cloud OSLC Integration
DevOps in Cloud OSLC Integration
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
 
FEVR - Micro Frontend
FEVR - Micro FrontendFEVR - Micro Frontend
FEVR - Micro Frontend
 
How to migrate large project from Angular to React
How to migrate large project from Angular to ReactHow to migrate large project from Angular to React
How to migrate large project from Angular to React
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!
From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!
From Shadow IT to Empowered IT: Unshackling Your Developers’ Creativity!
 
from shadow IT to empowered IT-asanka 2014 08-gartner catalyst
from shadow IT to empowered IT-asanka 2014 08-gartner catalystfrom shadow IT to empowered IT-asanka 2014 08-gartner catalyst
from shadow IT to empowered IT-asanka 2014 08-gartner catalyst
 
FORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM BluemixFORUM PA 2015 - Microservices with IBM Bluemix
FORUM PA 2015 - Microservices with IBM Bluemix
 
Microservices + Oracle: A Bright Future
Microservices + Oracle: A Bright FutureMicroservices + Oracle: A Bright Future
Microservices + Oracle: A Bright Future
 
Business Drivers and Challenges of Cloud Computing and Social Networking Appl...
Business Drivers and Challenges of Cloud Computing and Social Networking Appl...Business Drivers and Challenges of Cloud Computing and Social Networking Appl...
Business Drivers and Challenges of Cloud Computing and Social Networking Appl...
 
Windows Azure Partner Presentation
Windows Azure Partner PresentationWindows Azure Partner Presentation
Windows Azure Partner Presentation
 
A unified dashboard for collaborative robot management system
A unified dashboard for collaborative robot management systemA unified dashboard for collaborative robot management system
A unified dashboard for collaborative robot management system
 
ETS Summer School - Introduction to Bluemix (July 4th)
ETS Summer School - Introduction to Bluemix (July 4th)ETS Summer School - Introduction to Bluemix (July 4th)
ETS Summer School - Introduction to Bluemix (July 4th)
 

More from Graham Charters

Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShiftExplore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Graham Charters
 
How to get along with HATEOAS without letting the bad guys steal your lunch?
How to get along with HATEOAS without letting the bad guys steal your lunch?How to get along with HATEOAS without letting the bad guys steal your lunch?
How to get along with HATEOAS without letting the bad guys steal your lunch?
Graham Charters
 
Cutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optionalCutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optional
Graham Charters
 
Are you ready for cloud-native Java?
Are you ready for cloud-native Java?Are you ready for cloud-native Java?
Are you ready for cloud-native Java?
Graham Charters
 
Optimizing Spring Boot apps for Docker
Optimizing Spring Boot apps for DockerOptimizing Spring Boot apps for Docker
Optimizing Spring Boot apps for Docker
Graham Charters
 
A first look at Open Liberty
A first look at Open LibertyA first look at Open Liberty
A first look at Open Liberty
Graham Charters
 
Get Rapid Right-sized and Recent with the Liberty Repository
Get Rapid Right-sized and Recent with the Liberty RepositoryGet Rapid Right-sized and Recent with the Liberty Repository
Get Rapid Right-sized and Recent with the Liberty Repository
Graham Charters
 
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
 
Towards a Modularity Maturity Model
Towards a Modularity Maturity ModelTowards a Modularity Maturity Model
Towards a Modularity Maturity Model
Graham Charters
 
Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...
Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...
Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...
Graham Charters
 

More from Graham Charters (10)

Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShiftExplore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShift
 
How to get along with HATEOAS without letting the bad guys steal your lunch?
How to get along with HATEOAS without letting the bad guys steal your lunch?How to get along with HATEOAS without letting the bad guys steal your lunch?
How to get along with HATEOAS without letting the bad guys steal your lunch?
 
Cutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optionalCutting through the fog of microservices: lightsabers optional
Cutting through the fog of microservices: lightsabers optional
 
Are you ready for cloud-native Java?
Are you ready for cloud-native Java?Are you ready for cloud-native Java?
Are you ready for cloud-native Java?
 
Optimizing Spring Boot apps for Docker
Optimizing Spring Boot apps for DockerOptimizing Spring Boot apps for Docker
Optimizing Spring Boot apps for Docker
 
A first look at Open Liberty
A first look at Open LibertyA first look at Open Liberty
A first look at Open Liberty
 
Get Rapid Right-sized and Recent with the Liberty Repository
Get Rapid Right-sized and Recent with the Liberty RepositoryGet Rapid Right-sized and Recent with the Liberty Repository
Get Rapid Right-sized and Recent with the Liberty Repository
 
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
 
Towards a Modularity Maturity Model
Towards a Modularity Maturity ModelTowards a Modularity Maturity Model
Towards a Modularity Maturity Model
 
Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...
Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...
Hints and Tips for Modularizing Existing Enterprise Applications (OSGi Commun...
 

Recently uploaded

Ensuring Efficiency and Speed with Practical Solutions for Clinical Operations
Ensuring Efficiency and Speed with Practical Solutions for Clinical OperationsEnsuring Efficiency and Speed with Practical Solutions for Clinical Operations
Ensuring Efficiency and Speed with Practical Solutions for Clinical Operations
OnePlan Solutions
 
What’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 UpdateWhat’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 Update
VictoriaMetrics
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
michniczscribd
 
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdfThe Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
kalichargn70th171
 
Folding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a seriesFolding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a series
Philip Schwarz
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio, Inc.
 
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
Secure-by-Design Using Hardware and Software Protection for FDA ComplianceSecure-by-Design Using Hardware and Software Protection for FDA Compliance
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
ICS
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
sandeepmenon62
 
Best Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP ImplementationBest Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP Implementation
Envertis Software Solutions
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
kalichargn70th171
 
Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)
alowpalsadig
 
Refactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contextsRefactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contexts
Michał Kurzeja
 
The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
mohitd6
 
Hands-on with Apache Druid: Installation & Data Ingestion Steps
Hands-on with Apache Druid: Installation & Data Ingestion StepsHands-on with Apache Druid: Installation & Data Ingestion Steps
Hands-on with Apache Druid: Installation & Data Ingestion Steps
servicesNitor
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Peter Caitens
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
Building API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructureBuilding API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructure
confluent
 
Streamlining End-to-End Testing Automation
Streamlining End-to-End Testing AutomationStreamlining End-to-End Testing Automation
Streamlining End-to-End Testing Automation
Anand Bagmar
 
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual PerfectionBuilding the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Applitools
 

Recently uploaded (20)

Ensuring Efficiency and Speed with Practical Solutions for Clinical Operations
Ensuring Efficiency and Speed with Practical Solutions for Clinical OperationsEnsuring Efficiency and Speed with Practical Solutions for Clinical Operations
Ensuring Efficiency and Speed with Practical Solutions for Clinical Operations
 
What’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 UpdateWhat’s new in VictoriaMetrics - Q2 2024 Update
What’s new in VictoriaMetrics - Q2 2024 Update
 
Upturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in NashikUpturn India Technologies - Web development company in Nashik
Upturn India Technologies - Web development company in Nashik
 
Beginner's Guide to Observability@Devoxx PL 2024
Beginner's  Guide to Observability@Devoxx PL 2024Beginner's  Guide to Observability@Devoxx PL 2024
Beginner's Guide to Observability@Devoxx PL 2024
 
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdfThe Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
The Ultimate Guide to Top 36 DevOps Testing Tools for 2024.pdf
 
Folding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a seriesFolding Cheat Sheet #6 - sixth in a series
Folding Cheat Sheet #6 - sixth in a series
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
 
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
Secure-by-Design Using Hardware and Software Protection for FDA ComplianceSecure-by-Design Using Hardware and Software Protection for FDA Compliance
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
 
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptxOperational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
Operational ease MuleSoft and Salesforce Service Cloud Solution v1.0.pptx
 
Best Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP ImplementationBest Practices & Tips for a Successful Odoo ERP Implementation
Best Practices & Tips for a Successful Odoo ERP Implementation
 
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...
 
Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)Photoshop Tutorial for Beginners (2024 Edition)
Photoshop Tutorial for Beginners (2024 Edition)
 
Refactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contextsRefactoring legacy systems using events commands and bubble contexts
Refactoring legacy systems using events commands and bubble contexts
 
The Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdfThe Role of DevOps in Digital Transformation.pdf
The Role of DevOps in Digital Transformation.pdf
 
Hands-on with Apache Druid: Installation & Data Ingestion Steps
Hands-on with Apache Druid: Installation & Data Ingestion StepsHands-on with Apache Druid: Installation & Data Ingestion Steps
Hands-on with Apache Druid: Installation & Data Ingestion Steps
 
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom KittEnhanced Screen Flows UI/UX using SLDS with Tom Kitt
Enhanced Screen Flows UI/UX using SLDS with Tom Kitt
 
Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
Building API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructureBuilding API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructure
 
Streamlining End-to-End Testing Automation
Streamlining End-to-End Testing AutomationStreamlining End-to-End Testing Automation
Streamlining End-to-End Testing Automation
 
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual PerfectionBuilding the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
 

Microservices and OSGi: Better together?

  • 1. © 2016 IBM Corporation Graham Charters Senior Technical Staff Member, WebSphere Application Server Microservices and OSGi: Better together?
  • 2. 2Page© 2016 IBM Corporation Agenda – Introduction to Modularity, Microservices & OSGi – Comparison of OSGi and Microservice capabilities – Microservices challenges – OSGi smoothing the way to Microservices
  • 3. 3Page© 2016 IBM Corporation What is Modularity – “Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.” – “A module interface expresses the elements that are provided and required by the module. …” https://en.wikipedia.org/wiki/Modular_programming Photo by: https://www.flickr.com/photos/zaxl4/ License: https://creativecommons.org/licenses/by-sa/2.0/
  • 4. 4Page© 2016 IBM Corporation http://martinfowler.com/articles/microservices.html (25 March 2014) What are Microservices
  • 5. 5Page© 2016 IBM Corporation http://martinfowler.com/articles/microservices.html Microservices are Modularity      
  • 6. 6Page© 2016 IBM Corporation What is OSGi – Enables products to be assembled from Modules – Modules callable through Services – Modules and their Services have a dynamic lifecycle BundleBundle Bundle listen provideuse Service
  • 7. 7Page© 2016 IBM Corporation Not all modularity is equal • Not all module technologies enable the same capabilities • Modularity Maturity Model provides a way to compare technologies and understand the benefits • Inspired by customer experiences adopting OSGi “Towards a Modularity Maturity Model”, OSGi Community Event 2011 presentation @ http://slidesha.re/q8EHFp
  • 8. 8Page© 2016 IBM Corporation Modularity Levels Level Name Summary 1 Ad Hoc Nothing 2 Modules Formal identity, decoupled from artifact 3 Modularity Formal module contracts, decoupled from identity 4 Loose-Coupling Services, semantic versioning, decoupled from implementation 5 Devolution Modularity-aware repositories, collaboration, governance, decoupled from ownership 6 Dynamism Life-cycle awareness and independence, decoupled from time
  • 9. 9Page© 2016 IBM Corporation What was it Lewis and Fowler said? Level Name Summary 1 Ad Hoc Nothing 2 Modules Formal identity 3 Modularity Formal module contracts 4 Loose-Coupling Services, semantic versioning, Componentization via Services 5 Devolution Modularity-aware repositories, collaboration, governance, Organized around Business Capabilities 6 Dynamism Life-cycle awareness and independence, Design for failure
  • 10. 10Page© 2016 IBM Corporation Filling in the gaps Level Name Summary 1 Ad Hoc Nothing 2 Modules Formal identity, Deployable service (likely a build artefact) 3 Modularity Formal module contracts, Service Contracts – e.g. Swagger 4 Loose-Coupling Services, semantic versioning, Componentization via Services 5 Devolution Modularity-aware repositories, collaboration, governance, Organized around Business Capabilities 6 Dynamism Life-cycle awareness and independence, Design for failure
  • 11. 11Page© 2016 IBM Corporation Didn’t you just tell us we don’t need OSGi? https://creativecommons.org/licenses/by-nd/2.0/ https://www.flickr.com/photos/40601656@N07/
  • 12. 12Page© 2016 IBM Corporation The answer’s Microservices, what’s the question? https://www.gartner.com/doc/3371727/hype-cycle-application-services- ByJeremykempatEnglishWikipedia,CCBY-SA3.0, https://commons.wikimedia.org/w/index.php?curid=10547051 Gartner says we’re here Early publicity produces a number of success stories—often accompanied by scores of failures. Some companies take action; most don't. Peak of Inflated Expectations
  • 13. 13Page© 2016 IBM Corporation Evolution, not revolution Martin Fowler: “As I hear stories about teams using a microservices architecture, I've noticed a common pattern. 1. Almost all the successful microservice stories have started with a monolith that got too big and was broken up 2. Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble.” http://martinfowler.com/bliki/MonolithFirst.html
  • 14. 14Page© 2016 IBM Corporation Design is still hard http://www.codingthearchitecture.com/2014/10/01/modularity_and_testability.html Simon Brown: “Technologies like Spring Boot make creating and deploying microservices relatively straightforward, but the design thinking behind partitioning a software system into services is still as hard as it's ever been.” http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
  • 15. 15Page© 2016 IBM Corporation Document your poop
  • 16. 16Page© 2016 IBM Corporation The costs of Microservices http://martinfowler.com/articles/microservice-trade-offs.html
  • 17. 17Page© 2016 IBM Corporation So should we or shouldn’t we do Microservices? https://creativecommons.org/licenses/by/2.0/ https://www.flickr.com/photos/sufferingsocrates/
  • 18. 18Page© 2016 IBM Corporation Look before you leap https://www.flickr.com/photos/ggabernig/ https://creativecommons.org/licenses/by/2.0/
  • 19. 19Page© 2016 IBM Corporation Monolith-first Martin Fowler: “As I hear stories about teams using a microservices architecture, I've noticed a common pattern. 1. Almost all the successful microservice stories have started with a monolith that got too big and was broken up 2. Almost all the cases where I've heard of a system that was built as a microservice system from scratch, it has ended up in serious trouble.” http://martinfowler.com/bliki/MonolithFirst.html
  • 20. 20Page© 2016 IBM Corporation Design is still hard http://www.codingthearchitecture.com/2014/10/01/modularity_and_testability.html Technologies like Spring Boot make creating and deploying microservices relatively straightforward, but the design thinking behind partitioning a software system into services is still as hard as it's ever been. http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
  • 21. 21Page© 2016 IBM Corporation Boundaries Microservices’ main benefit, in my view, is enabling parallel development by establishing a hard-to-cross boundary between different parts of your system. By doing this, you make it hard – or at least harder – to do the wrong thing: Namely, connecting parts that shouldn’t be connected, and coupling those that need to be connected too tightly. In theory, you don’t need microservices for this if you simply have the discipline to follow clear rules and establish clear boundaries within your monolithic application; in practice, I’ve found this to be the case only very rarely. http://martinfowler.com/articles/dont-start-monolith.html Don’t start with a monolith … when your goal is a microservices architecture Stefan Tilkov
  • 22. 22Page© 2016 IBM Corporation Boundaries “Often the true consequences of your architectural decisions are only evident several years after you made them. We have seen projects where a good team, with a strong desire for modularity, has built a monolithic architecture that has decayed over the years. Many people believe that such decay is less likely with microservices, since the service boundaries are explicit and hard to patch around.” http://martinfowler.com/articles/microservices.html
  • 23. 23Page© 2016 IBM Corporation The modular monolith If you can't build a modular monolith, what makes you think microservices are the answer? http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html
  • 24. 24Page© 2016 IBM Corporation Getting to there from here… https://creativecommons.org/licenses/by/2.0/ https://www.flickr.com/photos/pss/
  • 25. 25Page© 2016 IBM Corporation Key questions What will help me create and maintain a modular monolith? What’s the closest you can get to the microservices qualities without incurring all of the associated cost? http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
  • 26. 26Page© 2016 IBM Corporation Refresher… – Enables products to be assembled from Modules – Modules callable through Services – Modules and their Services have a dynamic lifecycle BundleBundle Bundle listen provideuse Service
  • 27. 27Page© 2016 IBM Corporation The Modular Monolith – Use OSGi to modularise your Product – Not just Business as Usual - organize around business capabilities, modularize your data, etc. – A number of approach have been documented. • Services-first • Java EE -> OSGi • Strangler Pattern – These are equally applicable to OSGi & Microservice discovery ED B F A C H G
  • 28. 28Page© 2016 IBM Corporation Evolving to Microservices – Identify Feature ‘Subsystems’ as individually deployable units – Continue to deploy to same process ED B F A C H G
  • 29. 29Page© 2016 IBM Corporation Isolate your Subsystems – Make ‘boundary services’ remotable – Enforce isolation using Application Subsytems – Handle service unavailability – Continue to deploy to same process ED B F A C H G G B
  • 30. 30Page© 2016 IBM Corporation Deployment independently – Deploy as independently scalable microservices – Automate deployment – Prove out remoting, latency, etc. E D B F A C H G G B
  • 31. 31Page© 2016 IBM Corporation Modular Monolith+
  • 32. 32Page© 2016 IBM Corporation Modular Monolith+
  • 33. 33Page© 2016 IBM Corporation Remoting Services – OSGi Remote Services & Remote Services Admin providers – Or pick a JAX-RS implementation – Future: JAX-RS Whiteboard (RFC 217) RS Impl RS Impl register proxy discover register endpoint JAX-RS endpoint JAX-RS proxy https://github.com/osgi/design/tree/master/rfcs/rfc0217
  • 34. 34Page© 2016 IBM Corporation Technology choices – MicroProfile 1.0 defines a technology set for Java EE •JAX-RS, CDI, JSON-P – What would the OSGi equivalent be? •JAX-RS, Declarative Services, JSON-P – Beyond the core •Externalize configuration – Config Admin (think 12-factor)
  • 35. 35Page© 2016 IBM Corporation Summary – Microservices are an important approach to producing highly-available, maintainable applications – Microservices are not for-free, introducing new costs, such as distribution and operational complexity – Modular monoliths are seen as an important stepping stone to being able to produce Microservices – OSGi is an ideal fit for producing modular monoliths, going well-beyond their core characteristics – The OSGi standards cover the core capabilities essential for producing first- class Java-based microservices

Editor's Notes

  1. Componentization via Service Organized around Business Capabilities Products not Porjects Smart endpoints and dumb pipes Decentralized Governance Decentralized Data Management Infrastructure Automation Design for Failure Evolutionary Design