SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
AJourneyfromaMonolithtoa
ModularizedApplication
ApproachandKeyLearnings
Emanoel Xavier Senior Software Developer, Intel
Tim Ward CTO, Paremus
1
2
Notices and Disclaimers
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software
or service activation. Learn more at intel.com, or from the OEM or retailer.
No computer system can be absolutely secure.
Tests document performance of components on a particular test, in specific systems. Differences in hardware,
software, or configuration will affect actual performance. Consult other sources of information to evaluate performance
as you consider your purchase. For more complete information about performance and benchmark results, visit
http://www.intel.com/performance.
Intel, the Intel logo and others are trademarks of Intel Corporation in the U.S. and/or other countries.
*Other names and brands may be claimed as the property of others.
© 2017 Intel Corporation.
Modularity through the ages…
3
A little history
4
Adam Smith
The Wealth of Nations
(1776)
Division of Labor
“…the trade of a pin-maker: a workman not educated to
this business could scarce, perhaps, with his utmost
industry, make one pin in a day, and certainly could
not make twenty.”
“But in the way in which this business is now carried on,
it is divided into … about eighteen distinct operations,
which, in some manufactories, are all performed by
distinct hands”
“Those ten persons, therefore, could make among them
upwards of forty-eight thousand pins in a day. Each
person, therefore, making a tenth part of forty-eight
thousand pins, might be considered as making four
thousand eight hundred pins in a day.”
SMALLER SPECIALIZED CONCURRENT
5
Henry Ford
The Moving Assembly Line
(1910)
Modularity & Productivity
parts and car
“come to you”
83 parts. 1 step/min
from 12h to 90 mins “continuous build”
interchangeable
parts
model
“The major advancement in the area of modular programming has been
the development of coding techniques and assemblers which (l) allow
one module to be written with little knowledge of the code in another
module, and (2) allow modules to be reassembled and replaced
without reassembly of the whole system. This facility is extremely
valuable for the production of large pieces of code, but the systems
most often used as examples of problem systems are highly-
modularized programs and make use of the techniques mentioned
above.”
– David Parnas, On the Criteria to Be Used in Decomposing Systems into Modules (1972)
6
Modularity in Software
7
Apollo 16 Lunar Lander
Module (1972)
“... the systems most often used as examples of problem
systems are highly-modularized programs and make use
of the techniques mentioned above.”
A telling phrase…
“Modularity is too hard to be worth it”
Mixing the problem with the solution
The problems are complex
Modularity makes the solution possible
Modularity today
8
Fast forwarding
9
1970s 2017
Modern modular software – vision
10
1970s 2017
Modern modular software – reality
11
Modularity is not magic
Forgotten past lessons
70s: Low level modularity for
low level coupling
Late modularity == expensive
tech debt
(Serves One)
12
The recipe for a monolith
Starting a new project
13
Nobody
plans to
write bad
code
Things will
be different
now
Well
defined,
modular
design
we have all
been there
Sonar*,
Findbugs*,
100% CC
intended
modularization
Growing the project
14
Mgmt needs
more code
Here, more
devs
Flexible
processes
more
requirements.
6 months
deadline
but, Karl, your
best coder is
gone
That is ok, we
are “Agile*”
Growing the project
(6 months later)
15
almost done
processes
and tools
some
workarounds
needed
worked overtime.
“paper” release
people catching
up with Karl’s
code.
code reviews
that’s ok.
track and fix
later
Renewed interest
(6-12 months later)
16
customer:
shows
interest
sales:
delivery in 6
months
no one is
familiar with
the code
+4 new members,
+20 years worth
work
+1 headache
no previous team
member.
Karl’s code is still
around
17
Do any parts of this seem familiar?
Gall’s Law:
“A complex system that works is
invariably found to have evolved
from a simple system that
worked. A complex system
designed from scratch never
works and cannot be patched up
to make it work. You have to start
over with a working simple
system.”
 Nobody sets out to write bad code
 Successful projects are bound to
become complex
 Complexity must be managed
(Serves One)
18
How OSGi helps
19
imposes
API boundaries
hides
implementation
details
automates
dependency
management
enforces
dependencies at
runtime
facilitates
composition
20
 Won’t magically turn a monolith into a
modularized application
 Will provide you the tools for that
 Won’t automatically fix all coupling
issues, “shortcuts” and technical debt
 Will make them more evident
 Won’t fix API leaks
 Will enforce your APIs
21
Getting results
Planned and
managed
API changes
Work with it,
not against it
OSGi:
ongoing
commitment
How OSGi helps
22
 Limits complexity to smaller pieces
– Divide and conquer
 Pieces can be more easily and predictably
replaced
– No runtime surprises
 Easier to understand dependencies fan out
 Better testability
23
OSC 101
24
How it started
 Intel closed source project
 Application and deployment of security
virtual functions
 Let’s extend it !
 Let’s build a community around it!
– Spring 2016 => Summer 2017
Seemsfamiliar?
25
OSC in SDI
LOCATIONUTILIZATION LATENCY SECURITY
Infrastructure
Attributes POWER PERFORMANCE
Infrastructure
Attributes
Servers
Virtualization
Containers
Virtual
Router
Virtual
SAN
Scale
Out
Storage
Apps SDN/NFV SDS
Infrastructure
Pool
VMs
Virtual
Firewall
Virtual
Switch
Policy based automation
Self service portal
Service
Orchestration Compute Network Storage Security
Pool of virtualized
resources
Platform
capability aware
Centralized and
automated
register
setup
26
OSC in action
Plugins
OSC
Security
Manager
SDN
Controller
Data Center
 Plugins
 VNF Image
 Virtualization Connector
 Manager Connector
 Security Group
 Deployment
 Security Policies
IPS,
NGFW,
ADC
27
OSC logical components
osc-core
sec-mgr-plugins sdn-ctrlr-plugins
sdn-ctrlr-apisec-mgr-api
OpenStack4j*
RabbitMq*
Fabric8*
OpenStack
KubernetesH2 DB
VNF Catalog
Plugins
BL services Sync tasks
Security Mgr Services SDN Ctrlr Services
UI REST API
OSGi , h2db-jpa,
apache.aries.jpa,
vaadin, logback,
…
28
The path to open source
Community members diversity
SDN Providers and Security Managers neutral
! OSC Plugins Model
Dependency conflicts
REST Services?
 Redundant endpoints
 Not conducive to early adoption
 Legacy plugins
29
The journey starts…
30
Modularizing the plugins
osc-server
sec-mgr-plugins
1. Build dependencies
2. Runtime dependencies
3. Startup dependencies
osc-controller
sdn-ctrlr-plugins
sec-mgr-apisec-mgr-api
pom.xml pom.xml
whiteboard
pattern
whiteboard
pattern
OSGi Resolver
BAR Installer
31
Modularizing the plugins
osc-server
sec-mgr-plugins
osc-controller
sdn-ctrlr-plugins
sec-mgr-apisec-mgr-api
whiteboard
pattern
whiteboard
pattern
OSGi Resolver
BAR Installer
 Smaller footprint
 Simpler service registration
 Earlier plugin validation
64 /110
packaged
dependencies
OSGi Http
Service
Whiteboard
Plugins
Lifecycle
32
Are we modular yet?
33
Perceived modularization
Implemented Lacking
"…Curved Walking in Humans”
Gregoire Courtine, Journal of Neurophysiology
34
Does it matter?
SDN/SDI
maintainability
clean
dependencies
semantic
versioning
isolation
extensibility
Open
Source
incremental
build
clean
dependencies
semantic
versioning
runtime
enforcement
unit testing
35
The journey continues….
36
OSC uber bundle anatomy
 Common monolithic to
modularized migration path
 Flat classpath
 Transparent non-bundle
dependencies
 No isolation between internal
packages
osc-server
uber bundle
uber bundle
core
BL services Sync tasks
DB access
UI REST API
37
Database access: osc-domain
 Only @Entity classes
 JPA API & Apache Aries JPA
 OSGi Transaction Control Service
 Unidirectional dependency
osc-server
uber bundle
core
BL services Sync tasks
DB access
UI REST API
osc-domain
hibernate-core, h2databasehibernate-jpa-api
38
User interface: osc-ui
 New project: osc-service-api
 UI views as DS components
 OSGi managed views
osc-server
uber bundle
core
BL services Sync tasks
UI
REST API
osc-domain
osc-ui
osc-service-api
39
REST API: osc-rest-server
 Uses the osc-service-api
 JAX-RS service classes
 No more domain entity references
from the DTOs
 New service APIs and DTOs
osc-server
uber bundle
core
BL services Sync tasks
REST API
osc-domain
osc-ui
osc-service-api
osc-rest-server
40
Modularized OSC
 5 new smaller bundles
 DS, Interfaces, clear contracts
 Improved dependencies scopes
 Auxiliary uber bundles
– Non OSGi dependencies
 Incremental build
osc-server
osc-server
core
BL services Sync tasks
osc-domain
osc-ui
osc-service-api
osc-rest-server
+
41
Are we modular yet?
End of journey?
No…
42
 Modularization, like good code, is an ongoing effort
 There are multiple degrees of modularization.
– A gradual approach is recommended
– But don’t go back.
 OSGi is not a magic wand, but makes the job possible
A monolith will only get
you so far. For a longer,
pleasant (and modular)
journey you will need
not only the right tools
and frameworks. The
right mindset is just as
important.
Thankyou!
Emanoel Xavier Senior Software Developer, Intel
Tim Ward CTO, Paremus
43
www.opensecuritycontroller.org
Come join our community!

Contenu connexe

Tendances

OSGi DevCon 2009 Review
OSGi DevCon 2009 ReviewOSGi DevCon 2009 Review
OSGi DevCon 2009 Reviewnjbartlett
 
Cloud Foundry Days Tokyo 2016
Cloud Foundry Days Tokyo 2016Cloud Foundry Days Tokyo 2016
Cloud Foundry Days Tokyo 2016Chip Childers
 
Serverless Computing no Microsoft Azure
Serverless Computing no Microsoft AzureServerless Computing no Microsoft Azure
Serverless Computing no Microsoft AzureIgor Abade
 
PKS: The What and How of Enterprise-Grade Kubernetes
PKS: The What and How of Enterprise-Grade KubernetesPKS: The What and How of Enterprise-Grade Kubernetes
PKS: The What and How of Enterprise-Grade KubernetesVMware Tanzu
 
The Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native ApplicationsThe Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native ApplicationsVMware Tanzu
 
NetDevOps Development Environments
NetDevOps Development EnvironmentsNetDevOps Development Environments
NetDevOps Development EnvironmentsJoel W. King
 
Santosh Shukla-microservices-java-spring boot
Santosh Shukla-microservices-java-spring bootSantosh Shukla-microservices-java-spring boot
Santosh Shukla-microservices-java-spring bootSantoshShukla46
 
Enterprise-Ready Private and Hybrid Cloud Computing Today
Enterprise-Ready Private and Hybrid Cloud Computing TodayEnterprise-Ready Private and Hybrid Cloud Computing Today
Enterprise-Ready Private and Hybrid Cloud Computing TodayRightScale
 
Not Just Initializing
Not Just InitializingNot Just Initializing
Not Just InitializingVMware Tanzu
 
Redefining cloud native debugging
Redefining cloud native debugging  Redefining cloud native debugging
Redefining cloud native debugging LibbySchulze
 
Securing Your Database Dynamic DB Credentials
Securing Your Database  Dynamic DB CredentialsSecuring Your Database  Dynamic DB Credentials
Securing Your Database Dynamic DB CredentialsDevOps Indonesia
 
Spring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesSpring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesVMware Tanzu
 
onePK The Swiss Army Knife for Network Programming
onePK The Swiss Army Knife for Network ProgrammingonePK The Swiss Army Knife for Network Programming
onePK The Swiss Army Knife for Network ProgrammingCisco DevNet
 
Operate Containers with AWS Copilot
Operate Containers with AWS CopilotOperate Containers with AWS Copilot
Operate Containers with AWS CopilotDevOps Indonesia
 
Internet of Things 101 - For software engineers
Internet of Things 101 - For software engineersInternet of Things 101 - For software engineers
Internet of Things 101 - For software engineersKashif Ali Siddiqui
 
Secure your Application with Google cloud armor
Secure your Application with Google cloud armorSecure your Application with Google cloud armor
Secure your Application with Google cloud armorDevOps Indonesia
 
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...Jon Su
 
Stability anti patterns in cloud-native applications
Stability anti patterns in cloud-native applicationsStability anti patterns in cloud-native applications
Stability anti patterns in cloud-native applicationsAna-Maria Mihalceanu
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot ObservabilityVMware Tanzu
 
Is Private Cloud Right for Your Organization
Is Private Cloud Right for Your OrganizationIs Private Cloud Right for Your Organization
Is Private Cloud Right for Your OrganizationDave Roberts
 

Tendances (20)

OSGi DevCon 2009 Review
OSGi DevCon 2009 ReviewOSGi DevCon 2009 Review
OSGi DevCon 2009 Review
 
Cloud Foundry Days Tokyo 2016
Cloud Foundry Days Tokyo 2016Cloud Foundry Days Tokyo 2016
Cloud Foundry Days Tokyo 2016
 
Serverless Computing no Microsoft Azure
Serverless Computing no Microsoft AzureServerless Computing no Microsoft Azure
Serverless Computing no Microsoft Azure
 
PKS: The What and How of Enterprise-Grade Kubernetes
PKS: The What and How of Enterprise-Grade KubernetesPKS: The What and How of Enterprise-Grade Kubernetes
PKS: The What and How of Enterprise-Grade Kubernetes
 
The Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native ApplicationsThe Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native Applications
 
NetDevOps Development Environments
NetDevOps Development EnvironmentsNetDevOps Development Environments
NetDevOps Development Environments
 
Santosh Shukla-microservices-java-spring boot
Santosh Shukla-microservices-java-spring bootSantosh Shukla-microservices-java-spring boot
Santosh Shukla-microservices-java-spring boot
 
Enterprise-Ready Private and Hybrid Cloud Computing Today
Enterprise-Ready Private and Hybrid Cloud Computing TodayEnterprise-Ready Private and Hybrid Cloud Computing Today
Enterprise-Ready Private and Hybrid Cloud Computing Today
 
Not Just Initializing
Not Just InitializingNot Just Initializing
Not Just Initializing
 
Redefining cloud native debugging
Redefining cloud native debugging  Redefining cloud native debugging
Redefining cloud native debugging
 
Securing Your Database Dynamic DB Credentials
Securing Your Database  Dynamic DB CredentialsSecuring Your Database  Dynamic DB Credentials
Securing Your Database Dynamic DB Credentials
 
Spring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesSpring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the Masses
 
onePK The Swiss Army Knife for Network Programming
onePK The Swiss Army Knife for Network ProgrammingonePK The Swiss Army Knife for Network Programming
onePK The Swiss Army Knife for Network Programming
 
Operate Containers with AWS Copilot
Operate Containers with AWS CopilotOperate Containers with AWS Copilot
Operate Containers with AWS Copilot
 
Internet of Things 101 - For software engineers
Internet of Things 101 - For software engineersInternet of Things 101 - For software engineers
Internet of Things 101 - For software engineers
 
Secure your Application with Google cloud armor
Secure your Application with Google cloud armorSecure your Application with Google cloud armor
Secure your Application with Google cloud armor
 
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
StripeCon 2021: A Cloud-Native approach to running Silverstripe on Google Clo...
 
Stability anti patterns in cloud-native applications
Stability anti patterns in cloud-native applicationsStability anti patterns in cloud-native applications
Stability anti patterns in cloud-native applications
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot Observability
 
Is Private Cloud Right for Your Organization
Is Private Cloud Right for Your OrganizationIs Private Cloud Right for Your Organization
Is Private Cloud Right for Your Organization
 

Similaire à Journey from Monolith to a Modularized Application - Approach and Key Learnings - E Xavier & T Ward

Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to buildDanHeidinga
 
Microservices - Yet another buzzword
Microservices - Yet another buzzwordMicroservices - Yet another buzzword
Microservices - Yet another buzzwordOvidiu Dimulescu
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018Christophe Rochefolle
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3Diane Allen
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTPôle Systematic Paris-Region
 
Secret Twists to Efficiently Develop Reactive Software Systems
Secret Twists to Efficiently Develop Reactive Software SystemsSecret Twists to Efficiently Develop Reactive Software Systems
Secret Twists to Efficiently Develop Reactive Software SystemsBart Jonkers
 
Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.Massimo Talia
 
Operational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarOperational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarCanturk Isci
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesisPawel Szulc
 
Highly dependable automotive software
Highly dependable automotive softwareHighly dependable automotive software
Highly dependable automotive softwareAlan Tatourian
 
An Overview Of The Singularity Project
An  Overview Of The  Singularity  ProjectAn  Overview Of The  Singularity  Project
An Overview Of The Singularity Projectalanocu
 
Open computer systems
Open computer systemsOpen computer systems
Open computer systemsYasushi Hara
 
Open computer systems
Open computer systemsOpen computer systems
Open computer systemsYasushi Hara
 
Open computer systems
Open computer systemsOpen computer systems
Open computer systemsYasushi Hara
 
Mobica White Paper -Digital Instrument Cluster
Mobica White Paper -Digital Instrument ClusterMobica White Paper -Digital Instrument Cluster
Mobica White Paper -Digital Instrument ClusterSchuyler Kennedy
 

Similaire à Journey from Monolith to a Modularized Application - Approach and Key Learnings - E Xavier & T Ward (20)

Clone Clone Make: a better way to build
Clone Clone Make: a better way to buildClone Clone Make: a better way to build
Clone Clone Make: a better way to build
 
Microservices - Yet another buzzword
Microservices - Yet another buzzwordMicroservices - Yet another buzzword
Microservices - Yet another buzzword
 
From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018From Duke of DevOps to Queen of Chaos - Api days 2018
From Duke of DevOps to Queen of Chaos - Api days 2018
 
Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoTUtilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
Utilisation de la plateforme virtuelle QEMU/SystemC pour l'IoT
 
LinuxCon Europe 2013
LinuxCon Europe 2013LinuxCon Europe 2013
LinuxCon Europe 2013
 
L23 Summary and Conclusions
L23 Summary and ConclusionsL23 Summary and Conclusions
L23 Summary and Conclusions
 
Secret Twists to Efficiently Develop Reactive Software Systems
Secret Twists to Efficiently Develop Reactive Software SystemsSecret Twists to Efficiently Develop Reactive Software Systems
Secret Twists to Efficiently Develop Reactive Software Systems
 
Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.Do modernizing the Mainframe for DevOps.
Do modernizing the Mainframe for DevOps.
 
Operational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarOperational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU Seminar
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesis
 
Highly dependable automotive software
Highly dependable automotive softwareHighly dependable automotive software
Highly dependable automotive software
 
An Overview Of The Singularity Project
An  Overview Of The  Singularity  ProjectAn  Overview Of The  Singularity  Project
An Overview Of The Singularity Project
 
Open computer systems
Open computer systemsOpen computer systems
Open computer systems
 
Open computer systems
Open computer systemsOpen computer systems
Open computer systems
 
Open computer systems
Open computer systemsOpen computer systems
Open computer systems
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Mobica White Paper -Digital Instrument Cluster
Mobica White Paper -Digital Instrument ClusterMobica White Paper -Digital Instrument Cluster
Mobica White Paper -Digital Instrument Cluster
 

Plus de mfrancis

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

Plus de mfrancis (20)

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

Dernier

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 

Dernier (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 

Journey from Monolith to a Modularized Application - Approach and Key Learnings - E Xavier & T Ward

  • 2. 2 Notices and Disclaimers Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Learn more at intel.com, or from the OEM or retailer. No computer system can be absolutely secure. Tests document performance of components on a particular test, in specific systems. Differences in hardware, software, or configuration will affect actual performance. Consult other sources of information to evaluate performance as you consider your purchase. For more complete information about performance and benchmark results, visit http://www.intel.com/performance. Intel, the Intel logo and others are trademarks of Intel Corporation in the U.S. and/or other countries. *Other names and brands may be claimed as the property of others. © 2017 Intel Corporation.
  • 3. Modularity through the ages… 3 A little history
  • 4. 4 Adam Smith The Wealth of Nations (1776) Division of Labor “…the trade of a pin-maker: a workman not educated to this business could scarce, perhaps, with his utmost industry, make one pin in a day, and certainly could not make twenty.” “But in the way in which this business is now carried on, it is divided into … about eighteen distinct operations, which, in some manufactories, are all performed by distinct hands” “Those ten persons, therefore, could make among them upwards of forty-eight thousand pins in a day. Each person, therefore, making a tenth part of forty-eight thousand pins, might be considered as making four thousand eight hundred pins in a day.” SMALLER SPECIALIZED CONCURRENT
  • 5. 5 Henry Ford The Moving Assembly Line (1910) Modularity & Productivity parts and car “come to you” 83 parts. 1 step/min from 12h to 90 mins “continuous build” interchangeable parts model
  • 6. “The major advancement in the area of modular programming has been the development of coding techniques and assemblers which (l) allow one module to be written with little knowledge of the code in another module, and (2) allow modules to be reassembled and replaced without reassembly of the whole system. This facility is extremely valuable for the production of large pieces of code, but the systems most often used as examples of problem systems are highly- modularized programs and make use of the techniques mentioned above.” – David Parnas, On the Criteria to Be Used in Decomposing Systems into Modules (1972) 6 Modularity in Software
  • 7. 7 Apollo 16 Lunar Lander Module (1972) “... the systems most often used as examples of problem systems are highly-modularized programs and make use of the techniques mentioned above.” A telling phrase… “Modularity is too hard to be worth it” Mixing the problem with the solution The problems are complex Modularity makes the solution possible
  • 9. 9 1970s 2017 Modern modular software – vision
  • 10. 10 1970s 2017 Modern modular software – reality
  • 11. 11 Modularity is not magic Forgotten past lessons 70s: Low level modularity for low level coupling Late modularity == expensive tech debt
  • 12. (Serves One) 12 The recipe for a monolith
  • 13. Starting a new project 13 Nobody plans to write bad code Things will be different now Well defined, modular design we have all been there Sonar*, Findbugs*, 100% CC intended modularization
  • 14. Growing the project 14 Mgmt needs more code Here, more devs Flexible processes more requirements. 6 months deadline but, Karl, your best coder is gone That is ok, we are “Agile*”
  • 15. Growing the project (6 months later) 15 almost done processes and tools some workarounds needed worked overtime. “paper” release people catching up with Karl’s code. code reviews that’s ok. track and fix later
  • 16. Renewed interest (6-12 months later) 16 customer: shows interest sales: delivery in 6 months no one is familiar with the code +4 new members, +20 years worth work +1 headache no previous team member. Karl’s code is still around
  • 17. 17 Do any parts of this seem familiar? Gall’s Law: “A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.”  Nobody sets out to write bad code  Successful projects are bound to become complex  Complexity must be managed
  • 20. 20  Won’t magically turn a monolith into a modularized application  Will provide you the tools for that  Won’t automatically fix all coupling issues, “shortcuts” and technical debt  Will make them more evident  Won’t fix API leaks  Will enforce your APIs
  • 21. 21 Getting results Planned and managed API changes Work with it, not against it OSGi: ongoing commitment
  • 22. How OSGi helps 22  Limits complexity to smaller pieces – Divide and conquer  Pieces can be more easily and predictably replaced – No runtime surprises  Easier to understand dependencies fan out  Better testability
  • 24. 24 How it started  Intel closed source project  Application and deployment of security virtual functions  Let’s extend it !  Let’s build a community around it! – Spring 2016 => Summer 2017 Seemsfamiliar?
  • 25. 25 OSC in SDI LOCATIONUTILIZATION LATENCY SECURITY Infrastructure Attributes POWER PERFORMANCE Infrastructure Attributes Servers Virtualization Containers Virtual Router Virtual SAN Scale Out Storage Apps SDN/NFV SDS Infrastructure Pool VMs Virtual Firewall Virtual Switch Policy based automation Self service portal Service Orchestration Compute Network Storage Security Pool of virtualized resources Platform capability aware Centralized and automated
  • 26. register setup 26 OSC in action Plugins OSC Security Manager SDN Controller Data Center  Plugins  VNF Image  Virtualization Connector  Manager Connector  Security Group  Deployment  Security Policies IPS, NGFW, ADC
  • 27. 27 OSC logical components osc-core sec-mgr-plugins sdn-ctrlr-plugins sdn-ctrlr-apisec-mgr-api OpenStack4j* RabbitMq* Fabric8* OpenStack KubernetesH2 DB VNF Catalog Plugins BL services Sync tasks Security Mgr Services SDN Ctrlr Services UI REST API OSGi , h2db-jpa, apache.aries.jpa, vaadin, logback, …
  • 28. 28 The path to open source Community members diversity SDN Providers and Security Managers neutral ! OSC Plugins Model Dependency conflicts REST Services?  Redundant endpoints  Not conducive to early adoption  Legacy plugins
  • 30. 30 Modularizing the plugins osc-server sec-mgr-plugins 1. Build dependencies 2. Runtime dependencies 3. Startup dependencies osc-controller sdn-ctrlr-plugins sec-mgr-apisec-mgr-api pom.xml pom.xml whiteboard pattern whiteboard pattern OSGi Resolver BAR Installer
  • 31. 31 Modularizing the plugins osc-server sec-mgr-plugins osc-controller sdn-ctrlr-plugins sec-mgr-apisec-mgr-api whiteboard pattern whiteboard pattern OSGi Resolver BAR Installer  Smaller footprint  Simpler service registration  Earlier plugin validation 64 /110 packaged dependencies OSGi Http Service Whiteboard Plugins Lifecycle
  • 33. 33 Perceived modularization Implemented Lacking "…Curved Walking in Humans” Gregoire Courtine, Journal of Neurophysiology
  • 36. 36 OSC uber bundle anatomy  Common monolithic to modularized migration path  Flat classpath  Transparent non-bundle dependencies  No isolation between internal packages osc-server uber bundle uber bundle core BL services Sync tasks DB access UI REST API
  • 37. 37 Database access: osc-domain  Only @Entity classes  JPA API & Apache Aries JPA  OSGi Transaction Control Service  Unidirectional dependency osc-server uber bundle core BL services Sync tasks DB access UI REST API osc-domain hibernate-core, h2databasehibernate-jpa-api
  • 38. 38 User interface: osc-ui  New project: osc-service-api  UI views as DS components  OSGi managed views osc-server uber bundle core BL services Sync tasks UI REST API osc-domain osc-ui osc-service-api
  • 39. 39 REST API: osc-rest-server  Uses the osc-service-api  JAX-RS service classes  No more domain entity references from the DTOs  New service APIs and DTOs osc-server uber bundle core BL services Sync tasks REST API osc-domain osc-ui osc-service-api osc-rest-server
  • 40. 40 Modularized OSC  5 new smaller bundles  DS, Interfaces, clear contracts  Improved dependencies scopes  Auxiliary uber bundles – Non OSGi dependencies  Incremental build osc-server osc-server core BL services Sync tasks osc-domain osc-ui osc-service-api osc-rest-server +
  • 41. 41 Are we modular yet? End of journey?
  • 42. No… 42  Modularization, like good code, is an ongoing effort  There are multiple degrees of modularization. – A gradual approach is recommended – But don’t go back.  OSGi is not a magic wand, but makes the job possible A monolith will only get you so far. For a longer, pleasant (and modular) journey you will need not only the right tools and frameworks. The right mindset is just as important.
  • 43. Thankyou! Emanoel Xavier Senior Software Developer, Intel Tim Ward CTO, Paremus 43 www.opensecuritycontroller.org Come join our community!