SlideShare a Scribd company logo
Downtime
with OSGi
Slides: http://tiny.cc/zero-downtime-soa-slides
Code: http://tiny.cc/zero-downtime-soa-code
Speaker Introductions
Mariano Gonzalez
Mariano is a Chicago-based computer geek originally from Mexico. He
loves working with all types of middleware technologies such as Apache
Camel, IBM Integration Bus, Mule and Spring Integration just to mention a
few. He has been using Java for almost 10 years, implementing multiple
kinds of applications for different business fields (insurance, banking, and
trade shows). Mariano used to work for IBM before joining Peapod.com in
2014 where he is the Software Lead Engineer on the Java Team. He
enjoyed sharing his knowledge about Java platforms SE/EE and it's huge
ecosystem.
mariano.gonzalez.mx@gamil.com
Speaker Introductions
Rob Mills
Rob is a technology enthusiast and born problem solver originally
from Boston. His experience covers the full stack, including mobile
applications, rich single page javascript UIs, e-Commerce
applications, enterprise middleware integration applications, and
document management applications for clients and employers in a
number of verticals. He loves sharing his passion for software
engineering in all languages but has a professional background in
mostly Java stacks. Rob currently works for Uptake, a predictive
analytics/big data/IoT company, as the Platform Development
Manager.
me@robgmills.com
Downtime
{
● Lost productivity
● Lost revenue
● Damaged relationships
● Bad publicity
● Lawsuits
OSGi Introduction
What is it?
● Initially develop in the context of embedded systems. It is finding more and more usage in
enterprise Java-based systems.
● OSGi works with bundles, which contain a set of specifications that define a dynamic Java
component.
o Features
● Each bundle defines their own dependencies.
● It is possible to run multiple applications simultaneously within a single JVM.
Why should I use it?
● It enables applications to be separated into smaller, reusable modules
● Simplifies the development and deployment, decoupling the bundle’s specification from its
implementation.
o OSGi Services
● The OSGi module system is dynamic: it allows modules to be added and removed at runtime.
● OSGi has very good support for versioning: In fact, it allows multiple versions of the same jar to
coexist in the same runtime, thus allowing greater flexibility to deployers.
● OSGi platform encourages a more service-oriented approach.
Java 1.9 will support OSGi !?
JSR-376 Mark Reinhold
OSGi Lifecycle
Bundle Status
Installed This status indicates that the installation step has been successfully completed. In this
case, neither dependency analysis nor class loading is made. Only required steps are
performed, such as defining bundle properties analysing its Manifest file
Resolved Bundle is found in this status when OSGi resolves and satisfies all of its dependencies and
makes class loading operations. This is the state that comes before starting and stopping
and bundle
Starting This is the state that the bundles is found when the “start” method of the Activator is called,
but not yet as successfully finished or unfinished
Active The bundle is successfully started and running meaning the “start” method of the Activator
resulted success.
Stopping This is the state that the bundles is found when the “stop” method of the Activator is called,
but not yet as successfully finished or unfinished.
Uninstalled This is the state when the bundle is removed from the system. In this situation, there is no
transition to another state. The component must be installed again.
Microservices
1. No precise definition though, but at least should be services that are:
i. smaller
ii. light weight
iii. Independently deployable
2. Monolithic Vs Micro Service
3. OSGi and microservices concepts are very similar
OSGi and Microservice
OSGi implementations:
1. Eclipse Equinox > Virgo
2. Apache Felix > Karaf
3. Knopflerfish
4. Jboss AS 7
Alternatives to OSGi:
1. Spring Boot
2. DropWizard
3. Vert.x
Implementations and Alternatives
HA
Introduction
What is HA?
● Load balanced
● Clustered
In addition...
● Only one server is active and takes all the load.
● The remaining server(s) only comes into picture if primary is down.
How high is “high”?
● Amount of downtime is minimally
impactful to your business
● Determined by your SLA
● "Class of nines”? 99.999% = "Five
nines"
● Diminishing returns
Key traits
● Redundant
● Decoupled
● Responsive
● Resilient
● Neither OSGi (nor Spring) were created to solve problems
such as high-availability, clustering or load-balancing.
● Is not distributed.
● No failover.
● Complicated deployment process of micro-services across boundaries.
● It is possible to build an OSGi cluster, but you are probably going to need something else, such
as a way to detect and communicate load levels, events, etc.
OSGi and HA
To the rescue...
Cellar, an OSGi clustering solution
OOTB Cellar supports:
1. Discovery:
Automatically join the cluster of other Cellar nodes (No configuration required):
● Multicast
● Unicast
1. Cluster Group Management
Resources will be synchronized between nodes of the same group:
● Node Grouping
Note: Runs on top of Hazelcast
3. Distributed Features and Configuration Admin:
Automatic deployment of all features and bundles (micro-services) to all nodes
Distributes configuration data, both of Cellar-specific and Karaf etc/*.cfg configuration files
4. Provisioning Tools:
Easy management of all nodes
● Shell commands for cluster provisioning
Demo: Karaf + Cellar
Hello ${name}! REST API
● Two bundles:
o rest service
o service implementation
1. Bring down master Karaf node > Slave node still responds.
2. Bring back the master Karaf node
3. Bring down slave > Master again gets the requests
OSGi topology diagram
OSGi tips during development
Syntax
bundle:watch [options] [urls]
Options
urls The bundle IDs or URLs
Arguments
--help Display this help message
--stop Stops watching all bundles
-i Watch interval
--list Displays the watch list
--remove Removes bundles from the watch list
--start Starts watching the selected bundles
Redundant/resilient...now what?
Decoupled with messaging
Brokers available:
1. ActiveMQ
2. RabbitMQ
3. Many others
Advantages of a traditional broker:
● Can be asynchronous
● Decoupled (very easy to change the provider without touching the
bundle implementation)
● Fast
● Persistent by default (JMS specification)
What’s wrong with the traditional broker?
● Managing all the JMS headers / properties cumbersome
o Normally an ESB (like Camel) can take care of this, but still.
● Tuning of the broker never ends
o A lot configuration on both producer / consumers
● Not distributed by nature
o Persistent topics / Virtual Topics (ActiveMQ)
Instead…
● Not fast, super fast!
● Scalable - easy to add new nodes
● Cluster - centric OOTB
o Required Acks
● Not persistent, super persistent!
o Replication Factor
Gotcha: Not JMS compliant!
Demo: Kafka
Hello ${name}! REST API (async)
1. Two Kafka brokers orchestrated by Zookeeper:
i. Leader
ii. Follower
1. Bring down Leader broker > Consumer still gets the messages.
1. Bring back broker > Consumer still gets the messages.
Broker topology
Putting it all together
1. Two Kafka brokers orchestrated by Zookeeper:
i. Leader
ii. Follower
1. Two Karaf instances coordinated by Cellar:
i. Master
ii. Slave
1. Bring down Master / Leader
i. Slave / Follower Stills responds!
Complete topology
Slides:
Code:
Camel:
Karaf:
Kafka:
Cellar:
Zookeeper Ensemble:
http://tiny.cc/zero-downtime-soa-slides
http://tiny.cc/zero-downtime-soa-code
http://camel.apache.org/user-guide.html
http://karaf.apache.org/manual/latest/quick-start.html
http://kafka.apache.org/documentation.html
https://karaf.apache.org/index/subprojects/cellar.html
http://myjeeva.com/zookeeper-cluster-setup.html

More Related Content

What's hot

AWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshootingAWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshooting
Shiva Narayanaswamy
 
Satrtup Bootcamp - Scale on AWS
Satrtup Bootcamp - Scale on AWSSatrtup Bootcamp - Scale on AWS
Satrtup Bootcamp - Scale on AWS
Idan Tohami
 
Don't think about the difficulty Let's try to connect easy to IPv6 network w...
 Don't think about the difficulty Let's try to connect easy to IPv6 network w... Don't think about the difficulty Let's try to connect easy to IPv6 network w...
Don't think about the difficulty Let's try to connect easy to IPv6 network w...
Namba Kazuo
 
(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...
(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...
(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...
Amazon Web Services
 
AWS Storage Tiering for Enterprise Workloads
AWS Storage Tiering for Enterprise WorkloadsAWS Storage Tiering for Enterprise Workloads
AWS Storage Tiering for Enterprise Workloads
Tom Laszewski
 
Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)
Jason "JP" Pomerleau
 
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity OptionsCreating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Amazon Web Services
 
Netflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open SourceNetflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open Source
aspyker
 
Journey towards serverless infrastructure
Journey towards serverless infrastructureJourney towards serverless infrastructure
Journey towards serverless infrastructure
Ville Seppänen
 
NEW LAUNCH! Advanced Task Scheduling with Amazon ECS and Blox
NEW LAUNCH! Advanced Task Scheduling with Amazon ECS and BloxNEW LAUNCH! Advanced Task Scheduling with Amazon ECS and Blox
NEW LAUNCH! Advanced Task Scheduling with Amazon ECS and Blox
Amazon Web Services
 
Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...
Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...
Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...
Continuent
 
(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...
(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...
(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...
Amazon Web Services
 
Deep Dive on Amazon EC2
Deep Dive on Amazon EC2Deep Dive on Amazon EC2
Deep Dive on Amazon EC2
Amazon Web Services
 
Amazon EC2 & VPC HOL
Amazon EC2 & VPC HOLAmazon EC2 & VPC HOL
Amazon EC2 & VPC HOL
Amazon Web Services
 
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
Amazon Web Services
 
Enterprise Beacon Object Hive - Siebel Version Control
Enterprise Beacon Object Hive - Siebel Version ControlEnterprise Beacon Object Hive - Siebel Version Control
Enterprise Beacon Object Hive - Siebel Version Control
Milind Waikul
 
Oracle COTS Applications on AWS
Oracle COTS Applications on AWSOracle COTS Applications on AWS
Oracle COTS Applications on AWS
Tom Laszewski
 
Advanced Task Scheduling with Amazon ECS (June 2017)
Advanced Task Scheduling with Amazon ECS (June 2017)Advanced Task Scheduling with Amazon ECS (June 2017)
Advanced Task Scheduling with Amazon ECS (June 2017)
Julien SIMON
 
Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)
Julien SIMON
 
Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)
Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)
Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)
Amazon Web Services
 

What's hot (20)

AWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshootingAWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshooting
 
Satrtup Bootcamp - Scale on AWS
Satrtup Bootcamp - Scale on AWSSatrtup Bootcamp - Scale on AWS
Satrtup Bootcamp - Scale on AWS
 
Don't think about the difficulty Let's try to connect easy to IPv6 network w...
 Don't think about the difficulty Let's try to connect easy to IPv6 network w... Don't think about the difficulty Let's try to connect easy to IPv6 network w...
Don't think about the difficulty Let's try to connect easy to IPv6 network w...
 
(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...
(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...
(SDD423) Elastic Load Balancing Deep Dive and Best Practices | AWS re:Invent ...
 
AWS Storage Tiering for Enterprise Workloads
AWS Storage Tiering for Enterprise WorkloadsAWS Storage Tiering for Enterprise Workloads
AWS Storage Tiering for Enterprise Workloads
 
Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)
 
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity OptionsCreating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
Creating Your Virtual Data Center: VPC Fundamentals and Connectivity Options
 
Netflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open SourceNetflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open Source
 
Journey towards serverless infrastructure
Journey towards serverless infrastructureJourney towards serverless infrastructure
Journey towards serverless infrastructure
 
NEW LAUNCH! Advanced Task Scheduling with Amazon ECS and Blox
NEW LAUNCH! Advanced Task Scheduling with Amazon ECS and BloxNEW LAUNCH! Advanced Task Scheduling with Amazon ECS and Blox
NEW LAUNCH! Advanced Task Scheduling with Amazon ECS and Blox
 
Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...
Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...
Webinar Slides: High Noon at AWS — Amazon RDS vs. Tungsten Clustering with My...
 
(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...
(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...
(BIZ305) Case Study: Migrating Oracle E-Business Suite to AWS | AWS re:Invent...
 
Deep Dive on Amazon EC2
Deep Dive on Amazon EC2Deep Dive on Amazon EC2
Deep Dive on Amazon EC2
 
Amazon EC2 & VPC HOL
Amazon EC2 & VPC HOLAmazon EC2 & VPC HOL
Amazon EC2 & VPC HOL
 
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
CI/CD on AWS: Deploy Everything All the Time | AWS Public Sector Summit 2016
 
Enterprise Beacon Object Hive - Siebel Version Control
Enterprise Beacon Object Hive - Siebel Version ControlEnterprise Beacon Object Hive - Siebel Version Control
Enterprise Beacon Object Hive - Siebel Version Control
 
Oracle COTS Applications on AWS
Oracle COTS Applications on AWSOracle COTS Applications on AWS
Oracle COTS Applications on AWS
 
Advanced Task Scheduling with Amazon ECS (June 2017)
Advanced Task Scheduling with Amazon ECS (June 2017)Advanced Task Scheduling with Amazon ECS (June 2017)
Advanced Task Scheduling with Amazon ECS (June 2017)
 
Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)Deep Dive on Amazon EC2 Instances (March 2017)
Deep Dive on Amazon EC2 Instances (March 2017)
 
Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)
Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)
Webinar AWS 201 - Using Amazon Virtual Private Cloud (VPC)
 

Viewers also liked

High Availability - How to get 99.99% service availabilty - Designing cluster...
High Availability - How to get 99.99% service availabilty - Designing cluster...High Availability - How to get 99.99% service availabilty - Designing cluster...
High Availability - How to get 99.99% service availabilty - Designing cluster...
Barcamp Saigon
 
Understanding High Availability - Introducing the Theory and Concepts of High...
Understanding High Availability - Introducing the Theory and Concepts of High...Understanding High Availability - Introducing the Theory and Concepts of High...
Understanding High Availability - Introducing the Theory and Concepts of High...
Astute Systems
 
Julissa,anahi animated powerpoint
Julissa,anahi  animated powerpointJulissa,anahi  animated powerpoint
Julissa,anahi animated powerpoint
Linda Ray
 
Event-Stream Processing with Kafka
Event-Stream Processing with KafkaEvent-Stream Processing with Kafka
Event-Stream Processing with Kafka
Tim Lossen
 
Oracle database - The most common license compliance issues seen
Oracle database - The most common license compliance issues seenOracle database - The most common license compliance issues seen
Oracle database - The most common license compliance issues seen
b.lay
 
How to Design for High Availability & Scale with AWS
How to Design for High Availability & Scale with AWSHow to Design for High Availability & Scale with AWS
How to Design for High Availability & Scale with AWS
Blazeclan Technologies Private Limited
 
Rendimiento porcentual
Rendimiento porcentualRendimiento porcentual
Rendimiento porcentual
Alicia Ávalos
 
Apache Kafka Demo
Apache Kafka DemoApache Kafka Demo
Apache Kafka Demo
Edward Capriolo
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
Drift
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
Leslie Samuel
 

Viewers also liked (10)

High Availability - How to get 99.99% service availabilty - Designing cluster...
High Availability - How to get 99.99% service availabilty - Designing cluster...High Availability - How to get 99.99% service availabilty - Designing cluster...
High Availability - How to get 99.99% service availabilty - Designing cluster...
 
Understanding High Availability - Introducing the Theory and Concepts of High...
Understanding High Availability - Introducing the Theory and Concepts of High...Understanding High Availability - Introducing the Theory and Concepts of High...
Understanding High Availability - Introducing the Theory and Concepts of High...
 
Julissa,anahi animated powerpoint
Julissa,anahi  animated powerpointJulissa,anahi  animated powerpoint
Julissa,anahi animated powerpoint
 
Event-Stream Processing with Kafka
Event-Stream Processing with KafkaEvent-Stream Processing with Kafka
Event-Stream Processing with Kafka
 
Oracle database - The most common license compliance issues seen
Oracle database - The most common license compliance issues seenOracle database - The most common license compliance issues seen
Oracle database - The most common license compliance issues seen
 
How to Design for High Availability & Scale with AWS
How to Design for High Availability & Scale with AWSHow to Design for High Availability & Scale with AWS
How to Design for High Availability & Scale with AWS
 
Rendimiento porcentual
Rendimiento porcentualRendimiento porcentual
Rendimiento porcentual
 
Apache Kafka Demo
Apache Kafka DemoApache Kafka Demo
Apache Kafka Demo
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

Similar to Zero Downtime with OSGi - Chicago Coder Conference 05-15-2015

Microservice Workshop Hands On
Microservice Workshop Hands On Microservice Workshop Hands On
Microservice Workshop Hands On
Ram G Suri
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in Practise
David Bosschaert
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
Johan Edstrom
 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OpenBlend society
 
TDD on OSGi, in practice.
TDD on OSGi, in practice.TDD on OSGi, in practice.
TDD on OSGi, in practice.
Elian, I.
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
mfrancis
 
Breaking the monolith
Breaking the monolithBreaking the monolith
Breaking the monolith
Jacopo Nardiello
 
Java 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the GalleryJava 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the Gallerynjbartlett
 
Enabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDMEnabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDMmukulobject
 
OSGi User Forum US DC Metro
OSGi User Forum US DC MetroOSGi User Forum US DC Metro
OSGi User Forum US DC Metro
pjhInovex
 
OSGi user forum dc metro v1
OSGi user forum dc metro v1OSGi user forum dc metro v1
OSGi user forum dc metro v1pjhInovex
 
Liberate your components with OSGi services - Graham Charters
Liberate your components with OSGi services - Graham ChartersLiberate your components with OSGi services - Graham Charters
Liberate your components with OSGi services - Graham Charters
mfrancis
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
Judy Breedlove
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Aditya Jha
 
Db2 cloud provisioning
Db2 cloud provisioningDb2 cloud provisioning
Db2 cloud provisioning
Gustav Lundström
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayTony Ng
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGi
Ilya Rybak
 

Similar to Zero Downtime with OSGi - Chicago Coder Conference 05-15-2015 (20)

Microservice Workshop Hands On
Microservice Workshop Hands On Microservice Workshop Hands On
Microservice Workshop Hands On
 
GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010
 
Benefits of OSGi in Practise
Benefits of OSGi in PractiseBenefits of OSGi in Practise
Benefits of OSGi in Practise
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...
 
OSGi
OSGiOSGi
OSGi
 
TDD on OSGi, in practice.
TDD on OSGi, in practice.TDD on OSGi, in practice.
TDD on OSGi, in practice.
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
Breaking the monolith
Breaking the monolithBreaking the monolith
Breaking the monolith
 
Java 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the GalleryJava 7 Modularity: a View from the Gallery
Java 7 Modularity: a View from the Gallery
 
Enabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDMEnabling modularization through OSGi and SpringDM
Enabling modularization through OSGi and SpringDM
 
OSGi User Forum US DC Metro
OSGi User Forum US DC MetroOSGi User Forum US DC Metro
OSGi User Forum US DC Metro
 
OSGi user forum dc metro v1
OSGi user forum dc metro v1OSGi user forum dc metro v1
OSGi user forum dc metro v1
 
Liberate your components with OSGi services - Graham Charters
Liberate your components with OSGi services - Graham ChartersLiberate your components with OSGi services - Graham Charters
Liberate your components with OSGi services - Graham Charters
 
OSGI,
OSGI,OSGI,
OSGI,
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
 
Db2 cloud provisioning
Db2 cloud provisioningDb2 cloud provisioning
Db2 cloud provisioning
 
Calling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBayCalling All Modularity Solutions: A Comparative Study from eBay
Calling All Modularity Solutions: A Comparative Study from eBay
 
Java Modularity with OSGi
Java Modularity with OSGiJava Modularity with OSGi
Java Modularity with OSGi
 

Recently uploaded

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
CatarinaPereira64715
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

Zero Downtime with OSGi - Chicago Coder Conference 05-15-2015

  • 2. Speaker Introductions Mariano Gonzalez Mariano is a Chicago-based computer geek originally from Mexico. He loves working with all types of middleware technologies such as Apache Camel, IBM Integration Bus, Mule and Spring Integration just to mention a few. He has been using Java for almost 10 years, implementing multiple kinds of applications for different business fields (insurance, banking, and trade shows). Mariano used to work for IBM before joining Peapod.com in 2014 where he is the Software Lead Engineer on the Java Team. He enjoyed sharing his knowledge about Java platforms SE/EE and it's huge ecosystem. mariano.gonzalez.mx@gamil.com
  • 3. Speaker Introductions Rob Mills Rob is a technology enthusiast and born problem solver originally from Boston. His experience covers the full stack, including mobile applications, rich single page javascript UIs, e-Commerce applications, enterprise middleware integration applications, and document management applications for clients and employers in a number of verticals. He loves sharing his passion for software engineering in all languages but has a professional background in mostly Java stacks. Rob currently works for Uptake, a predictive analytics/big data/IoT company, as the Platform Development Manager. me@robgmills.com
  • 4. Downtime { ● Lost productivity ● Lost revenue ● Damaged relationships ● Bad publicity ● Lawsuits
  • 6. What is it? ● Initially develop in the context of embedded systems. It is finding more and more usage in enterprise Java-based systems. ● OSGi works with bundles, which contain a set of specifications that define a dynamic Java component. o Features ● Each bundle defines their own dependencies. ● It is possible to run multiple applications simultaneously within a single JVM.
  • 7. Why should I use it? ● It enables applications to be separated into smaller, reusable modules ● Simplifies the development and deployment, decoupling the bundle’s specification from its implementation. o OSGi Services ● The OSGi module system is dynamic: it allows modules to be added and removed at runtime. ● OSGi has very good support for versioning: In fact, it allows multiple versions of the same jar to coexist in the same runtime, thus allowing greater flexibility to deployers. ● OSGi platform encourages a more service-oriented approach.
  • 8. Java 1.9 will support OSGi !? JSR-376 Mark Reinhold
  • 9. OSGi Lifecycle Bundle Status Installed This status indicates that the installation step has been successfully completed. In this case, neither dependency analysis nor class loading is made. Only required steps are performed, such as defining bundle properties analysing its Manifest file Resolved Bundle is found in this status when OSGi resolves and satisfies all of its dependencies and makes class loading operations. This is the state that comes before starting and stopping and bundle Starting This is the state that the bundles is found when the “start” method of the Activator is called, but not yet as successfully finished or unfinished Active The bundle is successfully started and running meaning the “start” method of the Activator resulted success. Stopping This is the state that the bundles is found when the “stop” method of the Activator is called, but not yet as successfully finished or unfinished. Uninstalled This is the state when the bundle is removed from the system. In this situation, there is no transition to another state. The component must be installed again.
  • 10. Microservices 1. No precise definition though, but at least should be services that are: i. smaller ii. light weight iii. Independently deployable 2. Monolithic Vs Micro Service 3. OSGi and microservices concepts are very similar OSGi and Microservice
  • 11. OSGi implementations: 1. Eclipse Equinox > Virgo 2. Apache Felix > Karaf 3. Knopflerfish 4. Jboss AS 7 Alternatives to OSGi: 1. Spring Boot 2. DropWizard 3. Vert.x Implementations and Alternatives
  • 13. What is HA? ● Load balanced ● Clustered
  • 14. In addition... ● Only one server is active and takes all the load. ● The remaining server(s) only comes into picture if primary is down.
  • 15. How high is “high”? ● Amount of downtime is minimally impactful to your business ● Determined by your SLA ● "Class of nines”? 99.999% = "Five nines" ● Diminishing returns
  • 16. Key traits ● Redundant ● Decoupled ● Responsive ● Resilient
  • 17. ● Neither OSGi (nor Spring) were created to solve problems such as high-availability, clustering or load-balancing. ● Is not distributed. ● No failover. ● Complicated deployment process of micro-services across boundaries. ● It is possible to build an OSGi cluster, but you are probably going to need something else, such as a way to detect and communicate load levels, events, etc. OSGi and HA
  • 19. Cellar, an OSGi clustering solution OOTB Cellar supports: 1. Discovery: Automatically join the cluster of other Cellar nodes (No configuration required): ● Multicast ● Unicast 1. Cluster Group Management Resources will be synchronized between nodes of the same group: ● Node Grouping Note: Runs on top of Hazelcast
  • 20. 3. Distributed Features and Configuration Admin: Automatic deployment of all features and bundles (micro-services) to all nodes Distributes configuration data, both of Cellar-specific and Karaf etc/*.cfg configuration files 4. Provisioning Tools: Easy management of all nodes ● Shell commands for cluster provisioning
  • 21. Demo: Karaf + Cellar Hello ${name}! REST API ● Two bundles: o rest service o service implementation 1. Bring down master Karaf node > Slave node still responds. 2. Bring back the master Karaf node 3. Bring down slave > Master again gets the requests
  • 23. OSGi tips during development Syntax bundle:watch [options] [urls] Options urls The bundle IDs or URLs Arguments --help Display this help message --stop Stops watching all bundles -i Watch interval --list Displays the watch list --remove Removes bundles from the watch list --start Starts watching the selected bundles
  • 25. Decoupled with messaging Brokers available: 1. ActiveMQ 2. RabbitMQ 3. Many others Advantages of a traditional broker: ● Can be asynchronous ● Decoupled (very easy to change the provider without touching the bundle implementation) ● Fast ● Persistent by default (JMS specification)
  • 26. What’s wrong with the traditional broker? ● Managing all the JMS headers / properties cumbersome o Normally an ESB (like Camel) can take care of this, but still. ● Tuning of the broker never ends o A lot configuration on both producer / consumers ● Not distributed by nature o Persistent topics / Virtual Topics (ActiveMQ)
  • 27. Instead… ● Not fast, super fast! ● Scalable - easy to add new nodes ● Cluster - centric OOTB o Required Acks ● Not persistent, super persistent! o Replication Factor Gotcha: Not JMS compliant!
  • 28. Demo: Kafka Hello ${name}! REST API (async) 1. Two Kafka brokers orchestrated by Zookeeper: i. Leader ii. Follower 1. Bring down Leader broker > Consumer still gets the messages. 1. Bring back broker > Consumer still gets the messages.
  • 30. Putting it all together 1. Two Kafka brokers orchestrated by Zookeeper: i. Leader ii. Follower 1. Two Karaf instances coordinated by Cellar: i. Master ii. Slave 1. Bring down Master / Leader i. Slave / Follower Stills responds!
  • 32.

Editor's Notes

  1. ROB
  2. The importance of high availability varies among applications. However, the need to deliver increasing levels of availability continues to accelerate as enterprises re-engineer their solutions to gain competitive advantage. Most often, these new solutions rely on immediate access to critical business data. When data is not available, the operation can cease to function. Downtime can lead to lost productivity, lost revenue, damaged customer relationships, bad publicity, and lawsuits. If a mission-critical application becomes unavailable, then the enterprise is placed in jeopardy. It is not always easy to place a direct cost of downtime. Angry customers, idle employees, and bad publicity are all costly, but not directly measured in currency. On the other hand, lost revenue and legal penalties incurred because SLA objectives are not met can easily be quantified. The cost of downtime can quickly grow in industries that are dependent upon their solutions to provide service. UPTAKE USE CASE At Uptake, a single client can produce over 12500 requests-per-second, 24 hours-per-day, 365 days-per-year. Any downtime could result in an unplanned service outage potentially costing our clients tens of thousands of dollars per hour. The ability to consume each of these requests is critical to our business. PEAPOD USE CASE At Peapod we interact with several third parties services, databases etc. We need to be able to deploy changes to this third party services without affecting the remaining services and thus without affecting the customer experience.
  3. Mariano 2 Bundles are normal jar files with extra manifest headers. Another term worth to mention Feature, which is a set of bundles. There are some ways of installing a group bundles into a OSGi framework: Features are available through maven repos or filesystem 3 Difference between traditional application server where you have a single classpath for all the artifacts. Each bundle has there own “classpath” 4 Does not exist in the standalone JVM
  4. Mariano 1 Robust dependency specification. 2 Implementations hide from the other components. Communication through OSGi services 3 Without bringing down the full container 4 Important for legacy applications
  5. Mariano
  6. Mariano Transition between all of the status of the lifecycle without stopping the JVM.
  7. Mariano 1. Hard to deny there's a clear movement in the Java ecosystem towards micro services 2. Putting all your code into monolithic application.
  8. Mariano
  9. Mariano -> Rob
  10. ROB HA is not just sticking a load balancer in front of your application or creating a cluster of applications. Load Balance: The app is heavy and needs more than one server so that they can divide the load. Clustering: Running more than one server in such a way that they seem as one server to end user.
  11. Rob Master/slave architecture Redundancy
  12. ROB High availability doesn't mean the same thing to everybody. It can't and it shouldn't. High availability is really the determined by the amount of downtime is minimally impactful to your business Varies from system-to-system, business to business For example, Google posted $66B in revenue last year. That equates to $660K for every .00001% of up time. Determined by or described in your service-level agreement But what we’re really referencing when we say “high-availability” is 99% uptime and above. This is typically referred to as the “class of nines”. For example, 99.99% is called “four nines”. Or 99.999% is called “five nines”. And the law of diminishing returns sort of applies here. It takes significantly more money and effort to move from five to six nines (which could require something like regional hot/hot datacenters) than it does to move from 90% to 95% which could be as simple as rolling restarts of your servers.
  13. ROB Redundant (which helps achieve the elimination of single points of failure) Decoupled (which allows components operate independent of each other’s availability) Responsive (which means that despite failures the application continues to respond to requests quickly, it's not really helpful if it takes 30s for your app to respond) Resilient (automatically detects and recovers from failures as they occur)
  14. Rob Spring tries to solve this problem with microservices created with Spring Boot. OSGi automatic restarting of bundles helps, but isn’t quite good enough. Coordination between development / build and release process in order to avoid downtime Is much easier to deploy a single artifact (traditional EAR or WAR file) than several microservices (bundles).
  15. Rob -> Mariano
  16. Mariano For those who don’t know Hazelcast is an in memory data grid. Combines Jcache and JMS Multicast -> is sufficient to have an invitation for the whole group After the discovery process everything is TCP/IP
  17. Mariano
  18. Mariano curl -XGET localhost:62396/rest-api/sync/John instance:create slave-0 install -s mvn:zero.downtime.soa/zero-downtime-soa-dependencies/1.0.0 install -s mvn:zero.downtime.soa/hello-service/1.0.0 install -s mvn:zero.downtime.soa/hello-service-api/1.0.0 Remember to mention org.apache.karaf.cellar.node.cfg bundle.listener = true config.listener = true feature.listener = true Remember to mention system.properties
  19. Mariano
  20. Mariano Similar to jrebel but free!
  21. Mariano -> Rob
  22. Rob If for any reason the bundle implementation goes down, you want to continue receiving messages
  23. Rob
  24. Rob Developed by LinkedIn originally to serve as a page view logging system and open sourced to the Apache Foundation. Fast - a single node can handle hundreds of megabytes of reads and writes per second Scalable - It can be elastically and transparently expanded without downtime. And data written to it is partitioned over the nodes in the cluster. Cluster centric that takes into account fault tolerance. Persistent. And since it replicates all of the messages across the cluster, data loss is unlikely.
  25. Rob ./zookeeper-server-start.sh ../libexec/config/zookeeper.properties & ./kafka-server-start.sh ../libexec/config/server-1.properties & ./kafka-server-start.sh ../libexec/config/server-2.properties &
  26. Rob
  27. Rob / Mariano
  28. Rob / Mariano
  29. Rob / Mariano