SlideShare a Scribd company logo
PRODUCTION READY VERT.X
Berlin | 30.04.2014
TABLE OF CONTENTS
1. Introduction
2. The Beginning
3. What is Vert.x?
4. How to start?
5. Infrastructure as code
6. Vert.x module system
7. Integration with messaging system
8. Kafka module
2Berlin | 2014 | zanox | JUG BB
INTRODUCTION ZANOX
Europe‘s leading performance advertising network
3Berlin | 2014 | zanox | JUG BB
THE BEGINNING
4Berlin | 2014 | zanox | JUG BB
Java Magazin 04.14:
Vert.x im Unternehmenseinsatz
Entwicklung und Betrieb von
asynchronen Applikationen mit Vert.x in
der Praxis
THE BEGINNING
● New request processing-system for Zanox
● Requirements are pretty high (not negotiable):
● Low latency
● High throughput
● Scalable
● Resilient
● Responsive
● Event-Driven
● Fast
5Berlin | 2014 | zanox | JUG BB
THE BEGINNING
6Berlin | 2014 | zanox | JUG BB
“Vert.x is a lightweight, high performance application
platform for the JVM that's designed for modern
mobile, web, and enterprise applications.”
Vert.x
WHAT IS VERT.X?
7Berlin | 2014 | zanox | JUG BB
WHAT IS VERT.X?
8Berlin | 2014 | zanox | JUG BB
Polyglot
WHAT IS A VERTICLE?
● Classes with an own Classloader
● operates Single Threaded
● executed by an Event Loop
9Berlin | 2014 | zanox | JUG BB
10Berlin | 2014 | zanox | JUG BB
Event Loop Pool
Event Bus
V V V W W W
TAKE A LOOK INSIDE
WHAT‘S DEEP INSIDE?
● Build on top of Netty 4
● Uses Hazelcast for node discovery
● Jackson for JSON
● Java7+
11Berlin | 2014 | zanox | JUG BB
HOW TO START?
● Prerequisite: JDK 7
● download and unzip file from vertx.io
● put /bin directory to PATH variable
12Berlin | 2014 | zanox | JUG BB
HOW TO START?
● mvn archetype:generate -Dfilter=io.vertx:
(do not forget the colon!)
● generates structure for all languages (JS, Ruby,
Groovy, Python)
● maven pom is already set with relevant data
13Berlin | 2014 | zanox | JUG BB
HOW TO START?
14Berlin | 2014 | zanox | JUG BB
BEST PRACTICES
15Berlin | 2014 | zanox | JUG BB
BEST PRACTICES
● do not block the loop
● put blocking code or extensive computation into
worker verticles
● keep the application responsive
● stress test as often as possible
● encapsulate common code in modules (more on this
later)
16Berlin | 2014 | zanox | JUG BB
INFRASTRUCTURE AS CODE
17Berlin | 2014 | zanox | JUG BB
INFRASTRUCTURE AS CODE
18Berlin | 2014 | zanox | JUG BB
"CHEF IS LIKE A LITTLE SYSTEM
ADMIN ROBOT ... YOU TELL IT
HOW YOU WANT YOUR SYSTEM
CONFIGURED, AND IT WILL DO ALL
THE DIRTY WORK.”
INFRASTRUCTURE AS CODE
19Berlin | 2014 | zanox | JUG BB
INFRASTRUCTURE AS CODE
20Berlin | 2014 | zanox | JUG BB
Chef Cookbook
INFRASTRUCTURE AS CODE
21Berlin | 2014 | zanox | JUG BB
VERT.X MODULE SYSTEM
● Vert.x has a powerful module system.
● Package your Vert.x components into modules for
encapsulation and reuse.
● The module is a zip file
● It can be just plugged in into your application
22Berlin | 2014 | zanox | JUG BB
VERT.X MODULE SYSTEM
● Share your modules with the community by putting
them in Maven Central, any other Maven repository, or
in Bintray.
● Advertise your module in the module registry.
23Berlin | 2014 | zanox | JUG BB
VERT.X MODULE REGISTRY
● Just fill in the form and wait for approval:
24Berlin | 2014 | zanox | JUG BB
INTEGRATION WITH MESSAGING
SYSTEM
● Apache Kafka is a publish-subscribe messaging
implemented as a distributed commit log.
● Fast
● Scalable
● Durable
● Distributed
25
KAFKA MESSAGING SYSTEM
Berlin | 2014 | zanox | JUG BB
INTEGRATION WITH MESSAGING
SYSTEM
● Topic - categories for feeds of messages
● Producer - publishes messages to topics
● Consumer - subscribes to topics and process the feed
of published messages consumers
● Broker - Kafka is run as a cluster comprised of one or
more servers each of which is called a broker.
26
MAIN TERMINOLOGY:
Berlin | 2014 | zanox | JUG BB
KAFKA MODULE
● Application sends messages to Kafka module using
Vert.x event bus
● Kafka module acts as a producer
● Available on Maven Central and Vert.x module registry
27Berlin | 2014 | zanox | JUG BB
KAFKA MODULE IN MODULE REGISTRY
Open sourced Kafka module in Vert.x’s module registry -
http://modulereg.vertx.io/
28Berlin | 2014 | zanox | JUG BB
USING VERT.X MODULE
First, deploy the module into your application:
container.deployModule("com.zanox.vertx~mo
d-kafka~1.0.2", config);
29Berlin | 2014 | zanox | JUG BB
USING KAFKA MODULE
JsonObject config = new JsonObject();
config.putString("kafka-topic", „kafka_topic“);
config.putString("metadata.broker.list",
“localhost:9092”);
config.putString("request.required.acks", "1");
30
CONFIGURATION IS A JSON OBJECT:
Berlin | 2014 | zanox | JUG BB
METRICS OF VERT.X PROJECT
● On 4 Cores virtual machine we had the following
results:
● ~28 K requests per second without Kafka, with
lookup from Redis
● ~18 K requests per second with Kafka and lookup
from Redis
31Berlin | 2014 | zanox | JUG BB
32Berlin | 2014 | zanox | JUG BB

More Related Content

What's hot

OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...
OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...
OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...
OpenNebula Project
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
Nuxeo
 
OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...
OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...
OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...
OpenNebula Project
 
Nuxeo World Session: Scaling Nuxeo Applications
Nuxeo World Session: Scaling Nuxeo ApplicationsNuxeo World Session: Scaling Nuxeo Applications
Nuxeo World Session: Scaling Nuxeo Applications
Nuxeo
 
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Igalia
 
First Step towards WebAssembly with Rust
First Step towards WebAssembly with RustFirst Step towards WebAssembly with Rust
First Step towards WebAssembly with Rust
Knoldus Inc.
 
WebAssembly Fundamentals
WebAssembly FundamentalsWebAssembly Fundamentals
WebAssembly Fundamentals
Knoldus Inc.
 
Voyage en terre du multi-cloud
Voyage en terre du multi-cloudVoyage en terre du multi-cloud
Voyage en terre du multi-cloud
Frederic Leger
 
OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...
OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...
OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...
OpenNebula Project
 
oVirt – open your virtual datacenter
oVirt – open your virtual datacenteroVirt – open your virtual datacenter
oVirt – open your virtual datacenter
Bergamo Linux Users Group
 
Step by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new onesStep by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new ones
Allon Mureinik
 
Bye bye WCF, hello gRPC
Bye bye WCF, hello gRPCBye bye WCF, hello gRPC
Bye bye WCF, hello gRPC
Swaminathan Vetri
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
Batzorigt Rentsen
 
Microservice Workshop Hands On
Microservice Workshop Hands On Microservice Workshop Hands On
Microservice Workshop Hands On
Ram G Suri
 
Dev environment with Vagrant, Volodymyr Pavlenko
Dev environment with Vagrant, Volodymyr PavlenkoDev environment with Vagrant, Volodymyr Pavlenko
Dev environment with Vagrant, Volodymyr Pavlenko
Tetiana Saputo
 
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebula Project
 
Securing Your Deployment Pipeline With Docker
Securing Your Deployment Pipeline With DockerSecuring Your Deployment Pipeline With Docker
Securing Your Deployment Pipeline With Docker
Container Solutions
 
Contrail Virtual Execution Platform
Contrail Virtual Execution PlatformContrail Virtual Execution Platform
Contrail Virtual Execution Platform
NETWAYS
 
OpenNebula in a Multiuser Environment
OpenNebula in a Multiuser EnvironmentOpenNebula in a Multiuser Environment
OpenNebula in a Multiuser Environment
NETWAYS
 
Modules and artifacts in NPM by Anton Cherednikov
Modules and artifacts in NPM by Anton CherednikovModules and artifacts in NPM by Anton Cherednikov
Modules and artifacts in NPM by Anton Cherednikov
OdessaJS Conf
 

What's hot (20)

OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...
OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...
OpenNebulaConf 2016 - OpenNebula 5.0 Highlights and Beyond by Ruben S. Monter...
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...
OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...
OpenNebulaConf 2016 - Sunstone integration with FreeIPA using Single Sign by ...
 
Nuxeo World Session: Scaling Nuxeo Applications
Nuxeo World Session: Scaling Nuxeo ApplicationsNuxeo World Session: Scaling Nuxeo Applications
Nuxeo World Session: Scaling Nuxeo Applications
 
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
 
First Step towards WebAssembly with Rust
First Step towards WebAssembly with RustFirst Step towards WebAssembly with Rust
First Step towards WebAssembly with Rust
 
WebAssembly Fundamentals
WebAssembly FundamentalsWebAssembly Fundamentals
WebAssembly Fundamentals
 
Voyage en terre du multi-cloud
Voyage en terre du multi-cloudVoyage en terre du multi-cloud
Voyage en terre du multi-cloud
 
OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...
OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...
OpenNebulaConf 2016 - VTastic: Akamai Innovations for Distributed System Test...
 
oVirt – open your virtual datacenter
oVirt – open your virtual datacenteroVirt – open your virtual datacenter
oVirt – open your virtual datacenter
 
Step by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new onesStep by Step - Reusing old features to build new ones
Step by Step - Reusing old features to build new ones
 
Bye bye WCF, hello gRPC
Bye bye WCF, hello gRPCBye bye WCF, hello gRPC
Bye bye WCF, hello gRPC
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Microservice Workshop Hands On
Microservice Workshop Hands On Microservice Workshop Hands On
Microservice Workshop Hands On
 
Dev environment with Vagrant, Volodymyr Pavlenko
Dev environment with Vagrant, Volodymyr PavlenkoDev environment with Vagrant, Volodymyr Pavlenko
Dev environment with Vagrant, Volodymyr Pavlenko
 
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
 
Securing Your Deployment Pipeline With Docker
Securing Your Deployment Pipeline With DockerSecuring Your Deployment Pipeline With Docker
Securing Your Deployment Pipeline With Docker
 
Contrail Virtual Execution Platform
Contrail Virtual Execution PlatformContrail Virtual Execution Platform
Contrail Virtual Execution Platform
 
OpenNebula in a Multiuser Environment
OpenNebula in a Multiuser EnvironmentOpenNebula in a Multiuser Environment
OpenNebula in a Multiuser Environment
 
Modules and artifacts in NPM by Anton Cherednikov
Modules and artifacts in NPM by Anton CherednikovModules and artifacts in NPM by Anton Cherednikov
Modules and artifacts in NPM by Anton Cherednikov
 

Viewers also liked

Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.x
Mariam Hakobyan
 
Lean reactive services with vertx
Lean reactive services with vertxLean reactive services with vertx
Lean reactive services with vertx
Giancarlo Frison
 
Vert.x - 2014 JDay Lviv (English)
Vert.x - 2014 JDay Lviv (English)Vert.x - 2014 JDay Lviv (English)
Vert.x - 2014 JDay Lviv (English)Bartek Zdanowski
 
Reactive Systems And Vertx
Reactive Systems And VertxReactive Systems And Vertx
Reactive Systems And Vertx
Okay Aslan
 
Map Reduce in Hazelcast - Hazelcast User Group London Version
Map Reduce in Hazelcast - Hazelcast User Group London VersionMap Reduce in Hazelcast - Hazelcast User Group London Version
Map Reduce in Hazelcast - Hazelcast User Group London Version
Christoph Engelbert
 
Event driven microservices with vertx and kubernetes
Event driven microservices with vertx and kubernetesEvent driven microservices with vertx and kubernetes
Event driven microservices with vertx and kubernetes
Andy Moncsek
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVM
Massimiliano Dessì
 
Vert.x for Microservices Architecture
Vert.x for Microservices ArchitectureVert.x for Microservices Architecture
Vert.x for Microservices Architecture
Idan Fridman
 
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Red Hat Developers
 
Vert.x vs akka
Vert.x vs akkaVert.x vs akka
Vert.x vs akka
Chang-Hwan Han
 

Viewers also liked (10)

Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.x
 
Lean reactive services with vertx
Lean reactive services with vertxLean reactive services with vertx
Lean reactive services with vertx
 
Vert.x - 2014 JDay Lviv (English)
Vert.x - 2014 JDay Lviv (English)Vert.x - 2014 JDay Lviv (English)
Vert.x - 2014 JDay Lviv (English)
 
Reactive Systems And Vertx
Reactive Systems And VertxReactive Systems And Vertx
Reactive Systems And Vertx
 
Map Reduce in Hazelcast - Hazelcast User Group London Version
Map Reduce in Hazelcast - Hazelcast User Group London VersionMap Reduce in Hazelcast - Hazelcast User Group London Version
Map Reduce in Hazelcast - Hazelcast User Group London Version
 
Event driven microservices with vertx and kubernetes
Event driven microservices with vertx and kubernetesEvent driven microservices with vertx and kubernetes
Event driven microservices with vertx and kubernetes
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVM
 
Vert.x for Microservices Architecture
Vert.x for Microservices ArchitectureVert.x for Microservices Architecture
Vert.x for Microservices Architecture
 
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
 
Vert.x vs akka
Vert.x vs akkaVert.x vs akka
Vert.x vs akka
 

Similar to Vertx in production

Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.x
Sascha Möllering
 
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
VMware Tanzu
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platform
Ronak Banka
 
Cloud Foundry Roadmap in 2016
Cloud Foundry Roadmap in 2016Cloud Foundry Roadmap in 2016
Cloud Foundry Roadmap in 2016
Cloud Standards Customer Council
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
Brad Williams
 
eZ Publish Platform 5.4 public webinar
eZ Publish Platform 5.4 public webinareZ Publish Platform 5.4 public webinar
eZ Publish Platform 5.4 public webinar
Roland Benedetti
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Jeffrey T. Fritz
 
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
NETWAYS
 
Twelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring FrameworkTwelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring Framework
dinkar thakur
 
DevOps and BigData Analytics
DevOps and BigData Analytics DevOps and BigData Analytics
DevOps and BigData Analytics
sbbabu
 
create auto scale jboss cluster with openshift
create auto scale jboss cluster with openshiftcreate auto scale jboss cluster with openshift
create auto scale jboss cluster with openshift
Yusuf Hadiwinata Sutandar
 
The path to a serverless-native era with Kubernetes
The path to a serverless-native era with KubernetesThe path to a serverless-native era with Kubernetes
The path to a serverless-native era with Kubernetes
sparkfabrik
 
Serverless Pune Meetup 1
Serverless Pune Meetup 1Serverless Pune Meetup 1
Serverless Pune Meetup 1
Vishal Biyani
 
Devops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and OpenshiftDevops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and Openshift
Jonathan Tse
 
Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011
Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011
Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011
Nuxeo
 
MuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICDMuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICD
Pace Integration
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
Ravi Okade
 
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
VMware Tanzu
 
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
FalafelSoftware
 

Similar to Vertx in production (20)

Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.x
 
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platform
 
Cloud Foundry Roadmap in 2016
Cloud Foundry Roadmap in 2016Cloud Foundry Roadmap in 2016
Cloud Foundry Roadmap in 2016
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
 
eZ Publish Platform 5.4 public webinar
eZ Publish Platform 5.4 public webinareZ Publish Platform 5.4 public webinar
eZ Publish Platform 5.4 public webinar
 
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platformIntroducing ASP.NET vNext - A tour of the new ASP.NET platform
Introducing ASP.NET vNext - A tour of the new ASP.NET platform
 
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
 
Twelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring FrameworkTwelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring Framework
 
DevOps and BigData Analytics
DevOps and BigData Analytics DevOps and BigData Analytics
DevOps and BigData Analytics
 
create auto scale jboss cluster with openshift
create auto scale jboss cluster with openshiftcreate auto scale jboss cluster with openshift
create auto scale jboss cluster with openshift
 
The path to a serverless-native era with Kubernetes
The path to a serverless-native era with KubernetesThe path to a serverless-native era with Kubernetes
The path to a serverless-native era with Kubernetes
 
Serverless Pune Meetup 1
Serverless Pune Meetup 1Serverless Pune Meetup 1
Serverless Pune Meetup 1
 
Devops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and OpenshiftDevops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and Openshift
 
Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011
Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011
Nuxeo World Keynote: Roadmap - What to Expect from Nuxeo in 2011
 
MuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICDMuleSoft London Community November 2019 - MuleSoft and CICD
MuleSoft London Community November 2019 - MuleSoft and CICD
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
 
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
 
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
VMworld 2015: Build and Run Cloud Native Apps in your Software Defined Data C...
 
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
Introducing ASP.NET vNext – The Future of .NET on the Server | FalafelCON 2014
 

Recently uploaded

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
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
 
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
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
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
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
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
 
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
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.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
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
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
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
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...
 
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*
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
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
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
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
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.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.........
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
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
 

Vertx in production

  • 2. TABLE OF CONTENTS 1. Introduction 2. The Beginning 3. What is Vert.x? 4. How to start? 5. Infrastructure as code 6. Vert.x module system 7. Integration with messaging system 8. Kafka module 2Berlin | 2014 | zanox | JUG BB
  • 3. INTRODUCTION ZANOX Europe‘s leading performance advertising network 3Berlin | 2014 | zanox | JUG BB
  • 4. THE BEGINNING 4Berlin | 2014 | zanox | JUG BB Java Magazin 04.14: Vert.x im Unternehmenseinsatz Entwicklung und Betrieb von asynchronen Applikationen mit Vert.x in der Praxis
  • 5. THE BEGINNING ● New request processing-system for Zanox ● Requirements are pretty high (not negotiable): ● Low latency ● High throughput ● Scalable ● Resilient ● Responsive ● Event-Driven ● Fast 5Berlin | 2014 | zanox | JUG BB
  • 6. THE BEGINNING 6Berlin | 2014 | zanox | JUG BB
  • 7. “Vert.x is a lightweight, high performance application platform for the JVM that's designed for modern mobile, web, and enterprise applications.” Vert.x WHAT IS VERT.X? 7Berlin | 2014 | zanox | JUG BB
  • 8. WHAT IS VERT.X? 8Berlin | 2014 | zanox | JUG BB Polyglot
  • 9. WHAT IS A VERTICLE? ● Classes with an own Classloader ● operates Single Threaded ● executed by an Event Loop 9Berlin | 2014 | zanox | JUG BB
  • 10. 10Berlin | 2014 | zanox | JUG BB Event Loop Pool Event Bus V V V W W W TAKE A LOOK INSIDE
  • 11. WHAT‘S DEEP INSIDE? ● Build on top of Netty 4 ● Uses Hazelcast for node discovery ● Jackson for JSON ● Java7+ 11Berlin | 2014 | zanox | JUG BB
  • 12. HOW TO START? ● Prerequisite: JDK 7 ● download and unzip file from vertx.io ● put /bin directory to PATH variable 12Berlin | 2014 | zanox | JUG BB
  • 13. HOW TO START? ● mvn archetype:generate -Dfilter=io.vertx: (do not forget the colon!) ● generates structure for all languages (JS, Ruby, Groovy, Python) ● maven pom is already set with relevant data 13Berlin | 2014 | zanox | JUG BB
  • 14. HOW TO START? 14Berlin | 2014 | zanox | JUG BB
  • 15. BEST PRACTICES 15Berlin | 2014 | zanox | JUG BB
  • 16. BEST PRACTICES ● do not block the loop ● put blocking code or extensive computation into worker verticles ● keep the application responsive ● stress test as often as possible ● encapsulate common code in modules (more on this later) 16Berlin | 2014 | zanox | JUG BB
  • 17. INFRASTRUCTURE AS CODE 17Berlin | 2014 | zanox | JUG BB
  • 18. INFRASTRUCTURE AS CODE 18Berlin | 2014 | zanox | JUG BB "CHEF IS LIKE A LITTLE SYSTEM ADMIN ROBOT ... YOU TELL IT HOW YOU WANT YOUR SYSTEM CONFIGURED, AND IT WILL DO ALL THE DIRTY WORK.”
  • 19. INFRASTRUCTURE AS CODE 19Berlin | 2014 | zanox | JUG BB
  • 20. INFRASTRUCTURE AS CODE 20Berlin | 2014 | zanox | JUG BB Chef Cookbook
  • 21. INFRASTRUCTURE AS CODE 21Berlin | 2014 | zanox | JUG BB
  • 22. VERT.X MODULE SYSTEM ● Vert.x has a powerful module system. ● Package your Vert.x components into modules for encapsulation and reuse. ● The module is a zip file ● It can be just plugged in into your application 22Berlin | 2014 | zanox | JUG BB
  • 23. VERT.X MODULE SYSTEM ● Share your modules with the community by putting them in Maven Central, any other Maven repository, or in Bintray. ● Advertise your module in the module registry. 23Berlin | 2014 | zanox | JUG BB
  • 24. VERT.X MODULE REGISTRY ● Just fill in the form and wait for approval: 24Berlin | 2014 | zanox | JUG BB
  • 25. INTEGRATION WITH MESSAGING SYSTEM ● Apache Kafka is a publish-subscribe messaging implemented as a distributed commit log. ● Fast ● Scalable ● Durable ● Distributed 25 KAFKA MESSAGING SYSTEM Berlin | 2014 | zanox | JUG BB
  • 26. INTEGRATION WITH MESSAGING SYSTEM ● Topic - categories for feeds of messages ● Producer - publishes messages to topics ● Consumer - subscribes to topics and process the feed of published messages consumers ● Broker - Kafka is run as a cluster comprised of one or more servers each of which is called a broker. 26 MAIN TERMINOLOGY: Berlin | 2014 | zanox | JUG BB
  • 27. KAFKA MODULE ● Application sends messages to Kafka module using Vert.x event bus ● Kafka module acts as a producer ● Available on Maven Central and Vert.x module registry 27Berlin | 2014 | zanox | JUG BB
  • 28. KAFKA MODULE IN MODULE REGISTRY Open sourced Kafka module in Vert.x’s module registry - http://modulereg.vertx.io/ 28Berlin | 2014 | zanox | JUG BB
  • 29. USING VERT.X MODULE First, deploy the module into your application: container.deployModule("com.zanox.vertx~mo d-kafka~1.0.2", config); 29Berlin | 2014 | zanox | JUG BB
  • 30. USING KAFKA MODULE JsonObject config = new JsonObject(); config.putString("kafka-topic", „kafka_topic“); config.putString("metadata.broker.list", “localhost:9092”); config.putString("request.required.acks", "1"); 30 CONFIGURATION IS A JSON OBJECT: Berlin | 2014 | zanox | JUG BB
  • 31. METRICS OF VERT.X PROJECT ● On 4 Cores virtual machine we had the following results: ● ~28 K requests per second without Kafka, with lookup from Redis ● ~18 K requests per second with Kafka and lookup from Redis 31Berlin | 2014 | zanox | JUG BB
  • 32. 32Berlin | 2014 | zanox | JUG BB

Editor's Notes

  1. Continuous Deployment:- should be one of the first steps if you really want to use it (not just vert.x though) -> start early- more on this from my colleague Sascha ...
  2. started as a prototype in order to try out new technologieswas fun & easy to usecan we use it in production?approval needs to meet these requirements
  3. just another hipster framework?No! Far from it
  4. - started by Tim Fox- completed move to Eclipse Foundation
  5. Powered by n EventLoops (usually one per Core)Each Verticle bound to one EventLoop (single-threaded)No concurrency issues WorkerVerticle can be bound to an non EventLoop threadWorkerVerticles are useful for blocking calls (like legacy frameworks, e.g. JDBC)communication via Event Bus
  6. - check if everything went well with a “mvn package”- do a “vertxrunzippackagenamestuffi”
  7. to get a feeling of how easy this stuff can be: try out a simple webserver- extend it with a REST style path matching- diverse matcher
  8. - these are our learnings- advises to avoid pitfalls we have encounteredstarter verticle which calls all verticles- easy to manage especially if you have a big number of verticles- you can define the number of verticles
  9. Vert.x has a powerful module system.Vert.x allows you to package your applications or other re-usable functionality into modules which can then be deployed or used by other Vert.x code.What It gives:- your dependencies are encapsulated in a single artifact (the module zip file)- Vert.x can automatically download and install modules from any repository given just the module identifier.It is highly recommended that you always assemble your applications as modules and you don't use raw verticles.
  10. - your module can be pushed to any Maven repository or Bintray.Bintray is a social platform for developers to publish, download, store, promote, and share open source software packages.- Your module can be registered in the Vert.x module registry so others can discover and use it.
  11. Uses Zero Copy, that’s why it’s very fast, and is also lightweight.Fast also because of partitioning. Other advantage is that consumers keep the index of read data, not kafka itself.Fast - A single Kafka broker can handle hundreds of megabytes of reads and writes per second from thousands of clients.Scalable - It can be elastically and transparently expanded without downtime. Durable - Messages are persisted on disk and replicated within the cluster to prevent data loss.Distributed by Design - Kafka has a modern cluster-centric design based on multiple brokers and partitions
  12. To plug the module into your application, you need one line to specify which module should be deployed.Instances of the module can be deployed and run at the command line using vertxrunmod or programmatically using container.deployModule(...).Here is, how we run the kafka module:container.deployModule("com.zanox.vertx~mod-kafka~1.0.2", config);
  13. Configuration for a module should be specified using a JSON configuration file when deploying from the command line using vertxrunmodOR passed in when deploying a module programmatically.
  14. - 4 Cores, 16 GB, 12 GB Heap