SlideShare a Scribd company logo
1 of 38
Download to read offline
Modular Architectures 
using Micro Services
About Me 
Marcel Offermans 
Director at Luminis Technologies 
Member at the Apache Software Foundation 
@m4rr5
Agenda 
• Modular Architectures 
• Micro Services 
• OSGi in 60 seconds 
• Amdatu 
• Demo
Modular Architectures
The case for modularity
Maintainability
Adaptability
Quest for Reuse 
Copy / Paste
Quest for Reuse 
Object Oriented
Quest for Reuse 
Component Based
Micro Services
The term "Microservice Architecture" has sprung up 
over the last few years to describe a particular way 
of designing software applications as suites of 
independently deployable services. While there is no 
precise definition of this architectural style, there are 
certain common characteristics around organization 
around business capability, automated deployment, 
intelligence in the endpoints, and decentralized 
control of languages and data. 
Source: http://martinfowler.com/articles/microservices.html
Business Capabilities 
• Should be leading when splitting an application 
into components 
• Different from more traditional technology driven 
“layering” (UI, application logic, database) 
Conway’s Law: Any organization that designs a 
system will produce a design whose structure is a 
copy of the organization's communication structure. 
! 
Melvyn Conway, 1967
Component owns Data 
• Each service manages its own data 
• Can lead to polyglot persistence 
• Leverage Domain-Driven Design: bounded context 
often maps naturally to components 
• Use transaction-less coordination between 
services: build for eventual consistency and have a 
reversal process to deal with mistakes
Products 
• Make the team responsible for the whole life cycle 
of a product or component 
• Brings developers closer to the customers 
Amazon:”You build it, you run it!”
Services 
• Provide a public, versioned contract for a 
component 
• Have their own life cycle, so they can be 
separately deployed 
• Hide all implementation details
Dumb Pipes 
• HTTP request/response 
• lightweight messaging
Decentralized 
• Services decouple and abstract away components, 
leaving us free to choose implementation 
languages 
• Less focus on formal standards, more on 
proven, open source 
technology
Automated Deployment 
• Continuous Integration 
• Continuous Deployment
Design for Change 
• How to break a system into components? Consider 
rate of change, high cohesion, low coupling, … 
• Version your services, and make them tolerant to 
change 
• Stay flexible! 
The only constant is change.
Design for Failure 
• Applications need to be able to deal with failures 
• Services can always fail or become unavailable 
• Monitoring is an important aspect 
Netflix: Chaos Monkey to 
introduce random instance failures 
Michael Jordan: I’ve missed more than 9000 shots in 
my career. I’ve lost almost 300 games. 26 times, I’ve 
been trusted to take the game winning shot and 
missed. I’ve failed over and over and over again in 
my life. And that is why I succeed.
OSGi in 60 seconds
What is OSGi? 
• Provides components that can be easily deployed 
and versioned 
• Hides implementation details and leverages a 
service registry that allows components to publish 
and consume services 
• It’s the de-facto module system for Java: proven 
technology, works on all Java versions, usable from 
embedded to enterprise
OSGi 
META-INF/MANIFEST.MF 
Bundle-SymbolicName: store.fs 
store/Store.class 
store/Key.class 
store/fs/StoreImpl.class 
store/fs/FileSystem.class 
store/fs/StreamUtil.class 
store/fs/osgi/Activator.class 
lib/fsutil.jar 
Bundle-Version: 1.0.2 
Bundle-Classpath: ., lib/fsutil.jar 
Bundle-Activator: store.fs.osgi.Activator 
Export-Package: store;version="2.5" 
Import-Package: org.foo.log;version="[1, 2)"
META-INF/MANIFEST.MF 
Bundle-SymbolicName: store.fs 
store/Store.class 
store/Key.class 
store/fs/StoreImpl.class 
store/fs/FileSystem.class 
store/fs/StreamUtil.class 
store/fs/osgi/Activator.class 
lib/fsutil.jar 
Bundle-Version: 1.0.2 
Bundle-Classpath: ., lib/fsutil.jar 
Bundle-Activator: store.fs.osgi.Activator 
Export-Package: store;version="2.5" 
Import-Package: org.foo.log;version="[1, 2)" 
class Activator implements BundleActivator { 
ServiceRegistration sr; 
public void start(BundleContext bc) { 
sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); 
} 
public void stop(BundleContext bc) { 
sr.unregister(); 
} 
} 
OSGi
OSGi 
META-INF/MANIFEST.MF 
Bundle-SymbolicName: store.fs 
store/Store.class 
store/Key.class 
store/fs/StoreImpl.class 
store/fs/FileSystem.class 
store/fs/StreamUtil.class 
store/fs/osgi/Activator.class 
lib/fsutil.jar 
Bundle-Version: 1.0.2 
Bundle-Classpath: ., lib/fsutil.jar 
Bundle-Activator: store.fs.osgi.Activator 
Export-Package: store;version="2.5" 
Import-Package: org.foo.log;version="[1, 2)" 
class Activator implements BundleActivator { 
ServiceRegistration sr; 
public void start(BundleContext bc) { 
sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); 
} 
public void stop(BundleContext bc) { 
sr.unregister(); 
} 
}
OSGi 
META-INF/MANIFEST.MF 
Bundle-SymbolicName: store.fs 
store/Store.class 
store/Key.class 
store/fs/StoreImpl.class 
store/fs/FileSystem.class 
store/fs/StreamUtil.class 
store/fs/osgi/Activator.class 
lib/fsutil.jar 
Bundle-Version: 1.0.2 
Bundle-Classpath: ., lib/fsutil.jar 
Export-Package: store;version="2.5" 
Import-Package: org.foo.log;version="[1, 2)" 
class Activator implements BundleActivator { 
ServiceRegistration sr; 
public void start(BundleContext bc) { 
sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); 
} 
public void stop(BundleContext bc) { 
sr.unregister(); 
} 
} 
bundles 
resolver store;version="2.5" 
Bundle-Activator: store.fs.osgi.Activator
OSGi 
META-INF/MANIFEST.MF 
Bundle-SymbolicName: store.fs 
store/Store.class 
store/Key.class 
store/fs/StoreImpl.class 
store/fs/FileSystem.class 
store/fs/StreamUtil.class 
store/fs/osgi/Activator.class 
lib/fsutil.jar 
Bundle-Version: 1.0.2 
Bundle-Classpath: ., lib/fsutil.jar 
Export-Package: store;version="2.5" 
Import-Package: org.foo.log;version="[1,2)" 
1, 2)" 
class Activator implements BundleActivator { 
ServiceRegistration sr; 
public void start(BundleContext bc) { 
sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); 
} 
public void stop(BundleContext bc) { 
sr.unregister(); 
} 
} 
bundles 
META-INF/MANIFEST.MF 
org/foo/log/Log.class 
org/foo/log/syslog/SysLogImpl.class 
org/foo/log/syslog/Activator.class 
store;version="2.5" 
org.foo.log;version="1.3" 
resolver 
Bundle-Activator: store.fs.osgi.Activator
OSGi 
META-INF/MANIFEST.MF 
Bundle-SymbolicName: store.fs 
store/Store.class 
store/Key.class 
store/fs/StoreImpl.class 
store/fs/FileSystem.class 
store/fs/StreamUtil.class 
store/fs/osgi/Activator.class 
lib/fsutil.jar 
Bundle-Version: 1.0.2 
Bundle-Classpath: ., lib/fsutil.jar 
Export-Package: store;version="2.5" 
Import-Package: org.foo.log;version="[1,2)" 
1, 2)" 
class Activator implements BundleActivator { 
ServiceRegistration sr; 
public void start(BundleContext bc) { 
sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); 
} 
public void stop(BundleContext bc) { 
sr.unregister(); 
} 
} 
service registry 
bundles 
META-INF/MANIFEST.MF 
org/foo/log/Log.class 
org/foo/log/syslog/SysLogImpl.class 
org/foo/log/syslog/Activator.class 
store;version="2.5" 
org.foo.log;version="1.3" 
resolver 
store.Store { service.id = 1 } 
Bundle-Activator: store.fs.osgi.Activator
Remoting 
service registry 
OSGi framework 
java virtual machine 
bundle 
bundle 
bundle 
service registry 
bundle 
bundle 
OSGi framework 
java virtual machine 
service registry 
bundle 
OSGi framework 
bundle 
bundle 
java virtual machine 
bundle
Amdatu
What is Amdatu? 
Amdatu is an open source community effort focussed on 
bringing OSGi to the cloud. It contains components to create 
RESTful, scalable and distributed web applications that use 
NoSQL data stores, transparent multi-tenancy and much more.
Development Model 
• Modular design based on OSGi 
• Fast deployment using Bndtools 
• Git fork/merge based workflow 
• Extensive Atlassian tool support 
• Apache ACE integrated with build servers 
• Gradle based build
Demo
Wrapping Up
We’ve… 
• …explored modularity and micro services 
• …introduced OSGi and Amdatu 
• …seen how to develop and run a modular 
application 
• …seen how OSGi allows you to be flexible in how 
you group and deploy components
Eclipse OSGi plugin! 
http://bndtools.org/ ! 
Provisioning Server! 
http://ace.apache.org/! 
Cloud OSGi services! 
http://www.amdatu.org/ 
That’s us! 
http://luminis-technologies.com/ 
Demo code! 
https://bitbucket.org/marrs/javaone-2014-microservices/
Takk 
Grazie 
Thank! 
you 
Obrigado 
Mahalo 
Danke 
Dank U 
Merci 
Gracias

More Related Content

What's hot

Productivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersProductivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersWSO2
 
Devoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with KafkaDevoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with KafkaLászló-Róbert Albert
 
Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft
Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft
Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft Akshata Sawant
 
Five years of operating a large scale globally replicated Pulsar installation...
Five years of operating a large scale globally replicated Pulsar installation...Five years of operating a large scale globally replicated Pulsar installation...
Five years of operating a large scale globally replicated Pulsar installation...StreamNative
 
WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? Anton Weiss
 
Service discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel GuillenService discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel GuillenJ On The Beach
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network 09...
Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network  09...Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network  09...
Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network 09...Cary Hayward
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern LaunguageInho Kang
 
Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...
Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...
Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...Severalnines
 
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)Prashanth Kurimella
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetNormandy JUG
 
Cloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , KeynoteCloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , Keynoterajdeep
 
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot ProgrammerKafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot Programmerconfluent
 
Service Discovery Like a Pro
Service Discovery Like a ProService Discovery Like a Pro
Service Discovery Like a ProEran Harel
 
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache KafkaBuilding Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache KafkaGuozhang Wang
 

What's hot (20)

Productivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersProductivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA Testers
 
Devoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with KafkaDevoxx Morocco 2016 - Microservices with Kafka
Devoxx Morocco 2016 - Microservices with Kafka
 
Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft
Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft
Manchester MuleSoft Meetup #6 - Runtime Fabric with Mulesoft
 
Five years of operating a large scale globally replicated Pulsar installation...
Five years of operating a large scale globally replicated Pulsar installation...Five years of operating a large scale globally replicated Pulsar installation...
Five years of operating a large scale globally replicated Pulsar installation...
 
WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh? WTF Do We Need a Service Mesh?
WTF Do We Need a Service Mesh?
 
Service discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel GuillenService discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel Guillen
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Introduction to-osgi
Introduction to-osgiIntroduction to-osgi
Introduction to-osgi
 
Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network 09...
Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network  09...Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network  09...
Power of Open SDN- The Vendor Neutral Approach to Optimizing Your Network 09...
 
Istio presentation jhug
Istio presentation jhugIstio presentation jhug
Istio presentation jhug
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern Launguage
 
Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...
Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...
Webinar slides: How to deploy and manage HAProxy, MaxScale or ProxySQL with C...
 
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
MuleSoft Deployment Strategies (RTF vs Hybrid vs CloudHub)
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 
Envoy @ Lyft: Developer Productivity
Envoy @ Lyft: Developer ProductivityEnvoy @ Lyft: Developer Productivity
Envoy @ Lyft: Developer Productivity
 
Netflix conductor
Netflix conductorNetflix conductor
Netflix conductor
 
Cloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , KeynoteCloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , Keynote
 
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot ProgrammerKafka Summit SF 2017 - Kafka and the Polyglot Programmer
Kafka Summit SF 2017 - Kafka and the Polyglot Programmer
 
Service Discovery Like a Pro
Service Discovery Like a ProService Discovery Like a Pro
Service Discovery Like a Pro
 
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache KafkaBuilding Stream Infrastructure across Multiple Data Centers with Apache Kafka
Building Stream Infrastructure across Multiple Data Centers with Apache Kafka
 

Viewers also liked

COMERCION ELECTRONICO
COMERCION ELECTRONICOCOMERCION ELECTRONICO
COMERCION ELECTRONICOgutierrez2010
 
Dynamic Deployment With Apache Felix
Dynamic Deployment With Apache FelixDynamic Deployment With Apache Felix
Dynamic Deployment With Apache FelixMarcel Offermans
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneidermfrancis
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Chris Richardson
 

Viewers also liked (6)

COMERCION ELECTRONICO
COMERCION ELECTRONICOCOMERCION ELECTRONICO
COMERCION ELECTRONICO
 
Beyond OSGi Software Architecture
Beyond OSGi Software ArchitectureBeyond OSGi Software Architecture
Beyond OSGi Software Architecture
 
De leukste Bug
De leukste BugDe leukste Bug
De leukste Bug
 
Dynamic Deployment With Apache Felix
Dynamic Deployment With Apache FelixDynamic Deployment With Apache Felix
Dynamic Deployment With Apache Felix
 
OSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian SchneiderOSGi ecosystems compared on Apache Karaf - Christian Schneider
OSGi ecosystems compared on Apache Karaf - Christian Schneider
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)
 

Similar to Modular Architectures using Micro Services

Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3Diane Allen
 
Whats new in Enterprise 5.0 Product Suite
Whats new in Enterprise 5.0 Product SuiteWhats new in Enterprise 5.0 Product Suite
Whats new in Enterprise 5.0 Product SuiteMicro Focus
 
01 Metasploit kung fu introduction
01 Metasploit kung fu introduction01 Metasploit kung fu introduction
01 Metasploit kung fu introductionMostafa Abdel-sallam
 
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~Brocade
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi WebinarWSO2
 
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteUnit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteTushar B Kute
 
How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...
How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...
How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...mfrancis
 
Devops presentation
Devops presentationDevops presentation
Devops presentationk9ert
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...Fwdays
 
Online lg prodect
Online lg prodectOnline lg prodect
Online lg prodectYesu Raj
 
Os gi introduction made by Ly MInh Phuong-SOC team
Os gi introduction made by Ly MInh Phuong-SOC teamOs gi introduction made by Ly MInh Phuong-SOC team
Os gi introduction made by Ly MInh Phuong-SOC teamThuy_Dang
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2Pascal Rapicault
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJAX London
 
JBoss BPM Suite 6 Tech labs
JBoss BPM Suite 6 Tech labsJBoss BPM Suite 6 Tech labs
JBoss BPM Suite 6 Tech labsAndrea Leoncini
 

Similar to Modular Architectures using Micro Services (20)

Linux Assignment 3
Linux Assignment 3Linux Assignment 3
Linux Assignment 3
 
AtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMSAtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMS
 
Getting modular with OSGI
Getting modular with OSGIGetting modular with OSGI
Getting modular with OSGI
 
Whats new in Enterprise 5.0 Product Suite
Whats new in Enterprise 5.0 Product SuiteWhats new in Enterprise 5.0 Product Suite
Whats new in Enterprise 5.0 Product Suite
 
01 Metasploit kung fu introduction
01 Metasploit kung fu introduction01 Metasploit kung fu introduction
01 Metasploit kung fu introduction
 
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
Event-driven automation, DevOps way ~IoT時代の自動化、そのリアリティとは?~
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
Osgi Webinar
Osgi WebinarOsgi Webinar
Osgi Webinar
 
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B KuteUnit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
Unit 6 Operating System TEIT Savitribai Phule Pune University by Tushar B Kute
 
How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...
How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...
How to Use the OSGi Service Framework in Real-Life Projects - Kai Hackbath, P...
 
Devops presentation
Devops presentationDevops presentation
Devops presentation
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
Online lg prodect
Online lg prodectOnline lg prodect
Online lg prodect
 
Os gi introduction made by Ly MInh Phuong-SOC team
Os gi introduction made by Ly MInh Phuong-SOC teamOs gi introduction made by Ly MInh Phuong-SOC team
Os gi introduction made by Ly MInh Phuong-SOC team
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
Riding with camel
Riding with camelRiding with camel
Riding with camel
 
Wissbi osdc pdf
Wissbi osdc pdfWissbi osdc pdf
Wissbi osdc pdf
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
 
Readme
ReadmeReadme
Readme
 
JBoss BPM Suite 6 Tech labs
JBoss BPM Suite 6 Tech labsJBoss BPM Suite 6 Tech labs
JBoss BPM Suite 6 Tech labs
 

Recently uploaded

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 

Recently uploaded (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 

Modular Architectures using Micro Services

  • 2. About Me Marcel Offermans Director at Luminis Technologies Member at the Apache Software Foundation @m4rr5
  • 3. Agenda • Modular Architectures • Micro Services • OSGi in 60 seconds • Amdatu • Demo
  • 5. The case for modularity
  • 8. Quest for Reuse Copy / Paste
  • 9. Quest for Reuse Object Oriented
  • 10. Quest for Reuse Component Based
  • 12. The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data. Source: http://martinfowler.com/articles/microservices.html
  • 13. Business Capabilities • Should be leading when splitting an application into components • Different from more traditional technology driven “layering” (UI, application logic, database) Conway’s Law: Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure. ! Melvyn Conway, 1967
  • 14. Component owns Data • Each service manages its own data • Can lead to polyglot persistence • Leverage Domain-Driven Design: bounded context often maps naturally to components • Use transaction-less coordination between services: build for eventual consistency and have a reversal process to deal with mistakes
  • 15. Products • Make the team responsible for the whole life cycle of a product or component • Brings developers closer to the customers Amazon:”You build it, you run it!”
  • 16. Services • Provide a public, versioned contract for a component • Have their own life cycle, so they can be separately deployed • Hide all implementation details
  • 17. Dumb Pipes • HTTP request/response • lightweight messaging
  • 18. Decentralized • Services decouple and abstract away components, leaving us free to choose implementation languages • Less focus on formal standards, more on proven, open source technology
  • 19. Automated Deployment • Continuous Integration • Continuous Deployment
  • 20. Design for Change • How to break a system into components? Consider rate of change, high cohesion, low coupling, … • Version your services, and make them tolerant to change • Stay flexible! The only constant is change.
  • 21. Design for Failure • Applications need to be able to deal with failures • Services can always fail or become unavailable • Monitoring is an important aspect Netflix: Chaos Monkey to introduce random instance failures Michael Jordan: I’ve missed more than 9000 shots in my career. I’ve lost almost 300 games. 26 times, I’ve been trusted to take the game winning shot and missed. I’ve failed over and over and over again in my life. And that is why I succeed.
  • 22. OSGi in 60 seconds
  • 23. What is OSGi? • Provides components that can be easily deployed and versioned • Hides implementation details and leverages a service registry that allows components to publish and consume services • It’s the de-facto module system for Java: proven technology, works on all Java versions, usable from embedded to enterprise
  • 24. OSGi META-INF/MANIFEST.MF Bundle-SymbolicName: store.fs store/Store.class store/Key.class store/fs/StoreImpl.class store/fs/FileSystem.class store/fs/StreamUtil.class store/fs/osgi/Activator.class lib/fsutil.jar Bundle-Version: 1.0.2 Bundle-Classpath: ., lib/fsutil.jar Bundle-Activator: store.fs.osgi.Activator Export-Package: store;version="2.5" Import-Package: org.foo.log;version="[1, 2)"
  • 25. META-INF/MANIFEST.MF Bundle-SymbolicName: store.fs store/Store.class store/Key.class store/fs/StoreImpl.class store/fs/FileSystem.class store/fs/StreamUtil.class store/fs/osgi/Activator.class lib/fsutil.jar Bundle-Version: 1.0.2 Bundle-Classpath: ., lib/fsutil.jar Bundle-Activator: store.fs.osgi.Activator Export-Package: store;version="2.5" Import-Package: org.foo.log;version="[1, 2)" class Activator implements BundleActivator { ServiceRegistration sr; public void start(BundleContext bc) { sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); } public void stop(BundleContext bc) { sr.unregister(); } } OSGi
  • 26. OSGi META-INF/MANIFEST.MF Bundle-SymbolicName: store.fs store/Store.class store/Key.class store/fs/StoreImpl.class store/fs/FileSystem.class store/fs/StreamUtil.class store/fs/osgi/Activator.class lib/fsutil.jar Bundle-Version: 1.0.2 Bundle-Classpath: ., lib/fsutil.jar Bundle-Activator: store.fs.osgi.Activator Export-Package: store;version="2.5" Import-Package: org.foo.log;version="[1, 2)" class Activator implements BundleActivator { ServiceRegistration sr; public void start(BundleContext bc) { sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); } public void stop(BundleContext bc) { sr.unregister(); } }
  • 27. OSGi META-INF/MANIFEST.MF Bundle-SymbolicName: store.fs store/Store.class store/Key.class store/fs/StoreImpl.class store/fs/FileSystem.class store/fs/StreamUtil.class store/fs/osgi/Activator.class lib/fsutil.jar Bundle-Version: 1.0.2 Bundle-Classpath: ., lib/fsutil.jar Export-Package: store;version="2.5" Import-Package: org.foo.log;version="[1, 2)" class Activator implements BundleActivator { ServiceRegistration sr; public void start(BundleContext bc) { sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); } public void stop(BundleContext bc) { sr.unregister(); } } bundles resolver store;version="2.5" Bundle-Activator: store.fs.osgi.Activator
  • 28. OSGi META-INF/MANIFEST.MF Bundle-SymbolicName: store.fs store/Store.class store/Key.class store/fs/StoreImpl.class store/fs/FileSystem.class store/fs/StreamUtil.class store/fs/osgi/Activator.class lib/fsutil.jar Bundle-Version: 1.0.2 Bundle-Classpath: ., lib/fsutil.jar Export-Package: store;version="2.5" Import-Package: org.foo.log;version="[1,2)" 1, 2)" class Activator implements BundleActivator { ServiceRegistration sr; public void start(BundleContext bc) { sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); } public void stop(BundleContext bc) { sr.unregister(); } } bundles META-INF/MANIFEST.MF org/foo/log/Log.class org/foo/log/syslog/SysLogImpl.class org/foo/log/syslog/Activator.class store;version="2.5" org.foo.log;version="1.3" resolver Bundle-Activator: store.fs.osgi.Activator
  • 29. OSGi META-INF/MANIFEST.MF Bundle-SymbolicName: store.fs store/Store.class store/Key.class store/fs/StoreImpl.class store/fs/FileSystem.class store/fs/StreamUtil.class store/fs/osgi/Activator.class lib/fsutil.jar Bundle-Version: 1.0.2 Bundle-Classpath: ., lib/fsutil.jar Export-Package: store;version="2.5" Import-Package: org.foo.log;version="[1,2)" 1, 2)" class Activator implements BundleActivator { ServiceRegistration sr; public void start(BundleContext bc) { sr = bc.registerService(Store.class.getName(), new StoreImpl(), null); } public void stop(BundleContext bc) { sr.unregister(); } } service registry bundles META-INF/MANIFEST.MF org/foo/log/Log.class org/foo/log/syslog/SysLogImpl.class org/foo/log/syslog/Activator.class store;version="2.5" org.foo.log;version="1.3" resolver store.Store { service.id = 1 } Bundle-Activator: store.fs.osgi.Activator
  • 30. Remoting service registry OSGi framework java virtual machine bundle bundle bundle service registry bundle bundle OSGi framework java virtual machine service registry bundle OSGi framework bundle bundle java virtual machine bundle
  • 32. What is Amdatu? Amdatu is an open source community effort focussed on bringing OSGi to the cloud. It contains components to create RESTful, scalable and distributed web applications that use NoSQL data stores, transparent multi-tenancy and much more.
  • 33. Development Model • Modular design based on OSGi • Fast deployment using Bndtools • Git fork/merge based workflow • Extensive Atlassian tool support • Apache ACE integrated with build servers • Gradle based build
  • 34. Demo
  • 36. We’ve… • …explored modularity and micro services • …introduced OSGi and Amdatu • …seen how to develop and run a modular application • …seen how OSGi allows you to be flexible in how you group and deploy components
  • 37. Eclipse OSGi plugin! http://bndtools.org/ ! Provisioning Server! http://ace.apache.org/! Cloud OSGi services! http://www.amdatu.org/ That’s us! http://luminis-technologies.com/ Demo code! https://bitbucket.org/marrs/javaone-2014-microservices/
  • 38. Takk Grazie Thank! you Obrigado Mahalo Danke Dank U Merci Gracias