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

Satrtup Bootcamp - Scale on AWS
Satrtup Bootcamp - Scale on AWSSatrtup Bootcamp - Scale on AWS
Satrtup Bootcamp - Scale on AWSIdan 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 WorkloadsTom 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 OptionsAmazon Web Services
 
Netflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open SourceNetflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open Sourceaspyker
 
Journey towards serverless infrastructure
Journey towards serverless infrastructureJourney towards serverless infrastructure
Journey towards serverless infrastructureVille 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 BloxAmazon 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
 
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 2016Amazon 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 ControlMilind Waikul
 
Oracle COTS Applications on AWS
Oracle COTS Applications on AWSOracle COTS Applications on AWS
Oracle COTS Applications on AWSTom 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 powerpointLinda Ray
 
Event-Stream Processing with Kafka
Event-Stream Processing with KafkaEvent-Stream Processing with Kafka
Event-Stream Processing with KafkaTim 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 seenb.lay
 
Rendimiento porcentual
Rendimiento porcentualRendimiento porcentual
Rendimiento porcentualAlicia Ávalos
 
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 2017Drift
 
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 NicheLeslie 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 PractiseDavid Bosschaert
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan 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 Molieremfrancis
 
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 MetropjhInovex
 
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 Chartersmfrancis
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolithJudy 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
 
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 OSGiIlya 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

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

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