Microservices. Are your Frameworks ready? Martin Eigenbrodt Alexander Heusingfeld

Size: px
Start display at page:

Download "Microservices. Are your Frameworks ready? Martin Eigenbrodt Alexander Heusingfeld"

Transcription

1 Microservices Are your Frameworks ready? Martin Eigenbrodt Alexander Heusingfeld

2 Microservices?

3 Levels of Architecture

4

5 Domain architecture

6 Macro (technical) architecture Domain architecture

7 JRuby C# Scala Groovy Java Clojure

8 RDBMS NoSQL K/V RDBMS RDBMS/DWH NoSQL DocDB

9 RDBMS NoSQL K/V RDBMS RDBMS/DWH NoSQL DocDB Micro architecture

10 Challenges

11

12 Challenges

13 Challenges > many services to take care of

14 Challenges > many services to take care of > distributed system

15 Challenges > distributed configuration > service registration & discovery > resilience > fast, automated deployment > metrics

16 Macro- vs. Micro Architecture

17 Frameworks

18 Dropwizard

19 Dropwizard > Glue Code for well known libraries > Java

20 Dropwizard libraries

21 > Jetty Dropwizard libraries

22 Dropwizard libraries > Jetty > Jersey

23 Dropwizard libraries > Jetty > Jersey > Metrics

24 Dropwizard libraries > Jetty > Jersey > Metrics > Jackson > Guava > Logback > Hibernate Validator > Apache Http Client > JDBI > Liquibase > Freemarker & Mustache > Joda

25 Spring Boot and Spring Cloud

26 Spring Boot

27 Spring Boot > convention over configuration approach

28 Spring Boot > convention over configuration approach > Java, Groovy or Scala

29 Spring Boot > convention over configuration approach > Java, Groovy or Scala > self-contained jar or war

30 Spring Boot > convention over configuration approach > Java, Groovy or Scala > self-contained jar or war > tackles dependency-hell via pre-packaging

31 Spring Cloud

32 Spring Cloud > umbrella project for cloud connectors

33 Spring Cloud > umbrella project for cloud connectors > On top of Spring Boot

34 Spring Cloud > umbrella project for cloud connectors > On top of Spring Boot > config server for distributed configuration

35 Spring Cloud > umbrella project for cloud connectors > On top of Spring Boot > config server for distributed configuration > annotations for service-discovery & resilience

36 Play 2

37 Play 2 > Java or Scala > based on Akka > strong async support

38 Configuration

39 Play - Typesafe Config

40 Play - Typesafe Config > Config Library used by akka, play and other

41 Play - Typesafe Config > Config Library used by akka, play and other > HOCON - JSON Data Model + syntactic sugar

42 Play - Typesafe Config > Config Library used by akka, play and other > HOCON - JSON Data Model + syntactic sugar > override via system property

43 Play - Typesafe Config > Config Library used by akka, play and other > HOCON - JSON Data Model + syntactic sugar > override via system property > rich merge and include possibilities

44 public class OrderApp { public static void main(string[] args) { SpringApplication.run(OrderApp.class, args); } }

45 public class OrderApp { public static void main(string[] args) { SpringApplication.run(OrderApp.class, args); } }

46 public class OrderApp { public static void main(string[] args) { SpringApplication.run(OrderApp.class, args); } } > HTTP resource /autoconfig shows all properties

47 public class OrderApp { public static void main(string[] args) { SpringApplication.run(OrderApp.class, args); } } > HTTP resource /autoconfig shows all properties > overwrite via application.properties or CLI parameter

48 public class OrderApp { public static void main(string[] args) { SpringApplication.run(OrderApp.class, args); } } > HTTP resource /autoconfig shows all properties > overwrite via application.properties or CLI parameter > configuration in git? -> Check spring-cloud configserver

49 Http Client

50 Dropwizard public Product resolveproduct(string url) { Product product = client.resource(url).accept(mediatype.application_json).get(product.class); return product; }

51 Spring Boot public Product resolveproduct(string url) { return resttemplate.getforentity(url, Product.class); }

52 Play WS.url(apiUrl).get.map { response => response.json.as[list[bestseller]] }.recover { case e => List() }

53 Service Discovery

54 Service Discovery Service Registry 1. register service ("myself") & heartbeat 2. discover service instances Service Service Service 3. call service instance Client

55 @EnableDiscoveryClient public class OrdersApp { public static void main(string[] args) { SpringApplication.run(OrdersApp.class, args); } }

56 @EnableDiscoveryClient public class OrdersApp { public static void main(string[] args) { SpringApplication.run(OrdersApp.class, args); } }

57 @EnableDiscoveryClient public class OrdersApp { public static void main(string[] args) { SpringApplication.run(OrdersApp.class, args); } }

58 Service Discovery with Sidecar Service Registry 2. register service ("myself") & heartbeat 4. discover service instances Sidecar Service 5. call service instance Sidecar 3. Client 1. health check

59 Resilience

60 Resilience > isolate Failure > apply graceful degradation > be responsive in case of failure

61 Request closed service

62 Request closed service Request open service

63 Request closed service Request open service Request half- open service

64 > Provides Command-oriented Integration of Services > Introduces Circuit Breaker, Bulkheads and Isolation > Decouples from Service-dependencies > Provides metrics-facility to protect from failures

65 Hystrix & Dropwizard public class CommandInDropwizard extends TenacityCommand<Product> protected Product run() throws Exception { Product product = client.resource(url).accept(mediatype.application_json).get(product.class); return product; } } protected Product getfallback() { return FALLBACK_PRODUCT }

66 Hystrix & Dropwizard public class CommandInDropwizard extends TenacityCommand<Product> protected Product run() throws Exception { Product product = client.resource(url).accept(mediatype.application_json).get(product.class); return product; } } protected Product getfallback() { return FALLBACK_PRODUCT }

67 Hystrix & Dropwizard public class CommandInDropwizard extends TenacityCommand<Product> protected Product run() throws Exception { Product product = client.resource(url).accept(mediatype.application_json).get(product.class); return product; } } protected Product getfallback() { return FALLBACK_PRODUCT }

68 Hystrix & Dropwizard public class CommandInDropwizard extends TenacityCommand<Product> protected Product run() throws Exception { Product product = client.resource(url).accept(mediatype.application_json).get(product.class); return product; } } protected Product getfallback() { return FALLBACK_PRODUCT }

69 Hystrix & Dropwizard ResolveProductCommand command = new ResolveProductCommand(client, url); Product product = command.execute();

70 Spring Cloud = fallbackproduct") private Pair<String, ResponseEntity<Product>> resolveproduct(string producturi) { final RestTemplate resttemplate = new RestTemplate(); return new Pair(productUri, resttemplate.getforentity(producturi, Product.class)); } private Pair<String, ResponseEntity<Product>> fallbackproduct(string producturi) { final Product product = new Product(productUri, null, BigDecimal.ZERO); final ResponseEntity<Product> response = new ResponseEntity<Product>(product, PARTIAL_CONTENT); return new Pair(productUri, response); }

71 Spring Cloud Hystrix auto-wrapped with = fallbackproduct") private Pair<String, ResponseEntity<Product>> resolveproduct(string producturi) { final RestTemplate resttemplate = new RestTemplate(); return new Pair(productUri, resttemplate.getforentity(producturi, Product.class)); } private Pair<String, ResponseEntity<Product>> fallbackproduct(string producturi) { final Product product = new Product(productUri, null, BigDecimal.ZERO); final ResponseEntity<Product> response = new ResponseEntity<Product>(product, PARTIAL_CONTENT); return new Pair(productUri, response); }

72 Spring Cloud = fallbackproduct") private Pair<String, ResponseEntity<Product>> resolveproduct(string producturi) { final RestTemplate resttemplate = new RestTemplate(); return new Pair(productUri, resttemplate.getforentity(producturi, Product.class)); } private Pair<String, ResponseEntity<Product>> fallbackproduct(string producturi) { final Product product = new Product(productUri, null, BigDecimal.ZERO); final ResponseEntity<Product> response = new ResponseEntity<Product>(product, PARTIAL_CONTENT); return new Pair(productUri, response); }

73 Spring Cloud = fallbackproduct") private Pair<String, ResponseEntity<Product>> resolveproduct(string producturi) { final RestTemplate resttemplate = new RestTemplate(); return new Pair(productUri, resttemplate.getforentity(producturi, Product.class)); } private Pair<String, ResponseEntity<Product>> fallbackproduct(string producturi) { final Product product = new Product(productUri, null, BigDecimal.ZERO); final ResponseEntity<Product> response = new ResponseEntity<Product>(product, PARTIAL_CONTENT); return new Pair(productUri, response); }

74 Spring Cloud Hystrix method = fallbackproduct") private Pair<String, ResponseEntity<Product>> resolveproduct(string producturi) { final RestTemplate resttemplate = new RestTemplate(); return new Pair(productUri, resttemplate.getforentity(producturi, Product.class)); } private Pair<String, ResponseEntity<Product>> fallbackproduct(string producturi) { final Product product = new Product(productUri, null, BigDecimal.ZERO); final ResponseEntity<Product> response = new ResponseEntity<Product>(product, PARTIAL_CONTENT); return new Pair(productUri, response); }

75 Play - Circuit Breaker val apiurl = "..." val breaker = CircuitBreaker(Akka.system().scheduler, maxfailures = 5, calltimeout = 2.seconds, resettimeout = 1.minute) def getbestseller : Future[List[Bestseller]] = { breaker.withcircuitbreaker( WS.url(apiUrl).get.map { response => response.json.as[list[bestseller]] }).recover { case e => List() } }

76 Play - Circuit Breaker val apiurl = "..." val breaker = CircuitBreaker(Akka.system().scheduler, maxfailures = 5, calltimeout = 2.seconds, resettimeout = 1.minute) def getbestseller : Future[List[Bestseller]] = { breaker.withcircuitbreaker( WS.url(apiUrl).get.map { response => response.json.as[list[bestseller]] }).recover { case e => List() } }

77 Play - Circuit Breaker val apiurl = "..." val breaker = CircuitBreaker(Akka.system().scheduler, maxfailures = 5, calltimeout = 2.seconds, resettimeout = 1.minute) def getbestseller : Future[List[Bestseller]] = { breaker.withcircuitbreaker( WS.url(apiUrl).get.map { response => response.json.as[list[bestseller]] }).recover { case e => List() } }

78 Play - Circuit Breaker val apiurl = "..." val breaker = CircuitBreaker(Akka.system().scheduler, maxfailures = 5, calltimeout = 2.seconds, resettimeout = 1.minute) def getbestseller : Future[List[Bestseller]] = { breaker.withcircuitbreaker( WS.url(apiUrl).get.map { response => response.json.as[list[bestseller]] }).recover { case e => List() } }

79 Play - Circuit Breaker val apiurl = "..." val breaker = CircuitBreaker(Akka.system().scheduler, maxfailures = 5, calltimeout = 2.seconds, resettimeout = 1.minute) def getbestseller : Future[List[Bestseller]] = { breaker.withcircuitbreaker( WS.url(apiUrl).get.map { response => response.json.as[list[bestseller]] }).recover { case e => List() } }

80 Deployment

81 Spring Boot - Packaging./gradlew build./gradlew distzip

82 Spring Boot - Packaging executable JAR./gradlew build./gradlew distzip

83 Spring Boot - Packaging executable JAR./gradlew build./gradlew distzip ZIP + shell-script

84 Play - Packaging sbt dist sbt debian:packagebin sbt rpm:packagebin

85 Metrics

86 Dropwizard > Metrics Integrated with Dropwizard on Resources > HTTP Client is already instrumented > JVM Data

87 "org.apache.http.client.httpclient.cart.get-requests": { "count": 11, "max": , "mean": , "min": , "p50": , "p75": , "p95": , "p98": , "p99": , "p999": , "stddev": , "m15_rate": 0, "m1_rate": 0, "m5_rate": 0, "mean_rate": , "duration_units": "seconds", "rate_units": "calls/second" } "cart.resources.shoppingcartresource.shoppingcart": { "count": 22, "max": , "mean": , "min": , "p50": , "p75": , "p95": , "p98": , "p99": , "p999": , "stddev": , "m15_rate": , "m1_rate": , "m5_rate": , "mean_rate": , "duration_units": "seconds", "rate_units": "calls/second" }

88 Dropwizard Metrics > Exposed over HTTP (as Json) > Exposed as jmx > Others available: stdout, csv, slf4j, ganglia, graphite

89 Spring Boot Metrics > Prepackaged Spring Boot starter module > enables HTTP resources for metrics > configurable via application.properties

90 Spring Boot Metrics Using a counter metric in your Java code counterservice.increment("checkouts.withproducts." + producturis.size()); will display it in the /metrics JSON GET /metrics HTTP/1.1 { } "counter.checkouts.withproducts.3": 4,...

91 Summary

92 Summary Modularize into independent, self-contained systems

93 Summary Modularize into independent, self-contained systems Separate micro and macro architectures

94 Summary Modularize into independent, self-contained systems Separate micro and macro architectures Strike a balance between control and decentralization

95 Summary Modularize into independent, self-contained systems Separate micro and macro architectures Strike a balance between control and decentralization MicroServices aren t micro!

96 Summary Modularize into independent, self-contained systems Separate micro and macro architectures Strike a balance between control and decentralization MicroServices aren t micro! frameworks can t solve all your problems

97 Thank you! Questions? Comments? Martin Alexander innoq Deutschland GmbH innoq Schweiz GmbH Krischerstr. 100 Ohlauer Straße 43 Robert-Bosch-Straße 7 Radlkoferstraße 2 Gewerbestr Monheim am Rhein Berlin Darmstadt D München CH-6330 Cham Germany Phone: Germany Phone: Germany Phone: Germany Telefon +49 (0) Switzerland Phone:

Microservices mit Java, Spring Boot & Spring Cloud. Eberhard Wolff

Microservices mit Java, Spring Boot & Spring Cloud. Eberhard Wolff Microservices mit Java, Spring Boot & Spring Cloud Eberhard Wolff Fellow @ewolff What are Microservices? Micro Service: Definition > Small > Independent deployment units > i.e. processes or VMs > Any technology

More information

Microservices Implementations not only with Java. Eberhard Wolff Fellow

Microservices Implementations not only with Java. Eberhard Wolff Fellow Microservices Implementations not only with Java Eberhard Wolff http://ewolff.com @ewolff Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/ http://microservices-book.com/

More information

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard Fellow

Four times Microservices: REST, Kubernetes, UI Integration, Async. Eberhard  Fellow Four times Microservices: REST, Kubernetes, UI Integration, Async Eberhard Wolff @ewolff http://ewolff.com Fellow http://continuous-delivery-buch.de/ http://continuous-delivery-book.com/ http://microservices-buch.de/

More information

SPRING CLOUD AGIM EMRULI - MIMACOM

SPRING CLOUD AGIM EMRULI - MIMACOM SPRING CLOUD AGIM EMRULI - MIMACOM AGIM EMRULI @AEMRULI AEMRULI AGIM.EMRULI@ MIMACOM.COM XD BOOT GRAILS CLOUD IO EXECUTION STREAMS, TAPS, JOBS FULL STACK, WEB SERVICE REGISTRY, CIRCUIT BREAKER, METRICS

More information

One size does not fit all

One size does not fit all One size does not fit all Stefan Tilkov @stilkov GOTO London 2016 Building blocks lambdas components functions containers VMs services units dynamic libraries objects libraries images classes procedures

More information

Java9 - Features abseits von Jigsaw und JShell. BED-Con September 2017

Java9 - Features abseits von Jigsaw und JShell. BED-Con September 2017 Java9 - Features abseits von Jigsaw und JShell BED-Con 2017 22. September 2017 Michael Vitz Senior Consultant @ innoq michael.vitz@innoq.com @michaelvitz Zeitplan Features JEP 102 Process API Updates

More information

What is Spring Cloud

What is Spring Cloud What is Spring Cloud 1 What is Spring Cloud Service Discovery (Eureka) API Gateway (Zuul) Config Server (Spring Config) Circuit Breaker (Hystrix, Turbine) Client Side Load-balancing (Ribbon) Distributed

More information

REST: I don't Think it Means What You Think it Does. Stefan

REST: I don't Think it Means What You Think it Does. Stefan REST: I don't Think it Means What You Think it Does Stefan Tilkov @stilkov REST: An architectural style defined by the constraints Client-Server, Stateless Communication, Caching, Uniform Interface, Layered

More information

Hands-On: Hystrix. Best practices & pitfalls

Hands-On: Hystrix. Best practices & pitfalls Hands-On: Hystrix Best practices & pitfalls Hystrix...What? built, heavily tested & used in production by Net ix Java library, implementation of resilience patterns Goals: fault tolerant/robust self-healing

More information

Ray Tsang Developer Advocate Google Cloud Platform

Ray Tsang Developer Advocate Google Cloud Platform Ray Tsang Developer Advocate Google Cloud Platform @saturnism +RayTsang Ray Tsang Developer Architect Traveler Photographer flickr.com/saturnism Writing a Kubernetes Autoscaler Kubernetes API - In Depth

More information

Spring Cloud, Spring Boot and Netflix OSS

Spring Cloud, Spring Boot and Netflix OSS Spring Cloud, Spring Boot and Netflix OSS Spencer Gibb twitter: @spencerbgibb email: sgibb@pivotal.io Dave Syer twitter: @david_syer email: dsyer@pivotal.io (Spring Boot and Netflix OSS or Spring Cloud

More information

Road to Auto Scaling

Road to Auto Scaling Road to Auto Scaling Varun Thacker Lucidworks Apache Lucene/Solr Committer, and PMC member Agenda APIs Metrics Recipes Auto-Scale Triggers SolrCloud Overview ZooKee per Lots Shard 1 Leader Shard 3 Replica

More information

EAI War Stories. ! Alexander Martin Praxisbeispiele zu EAI-Pattern und Lessons Learned

EAI War Stories. ! Alexander Martin Praxisbeispiele zu EAI-Pattern und Lessons Learned EAI War Stories Praxisbeispiele zu EAI-Pattern und Lessons Learned! Alexander Heusingfeld, @goldstift Martin Huber, @waterback We take care of it - personally! EAI Pattern in 2013? Nobody uses them anymore!

More information

Service Mesh with Istio on Kubernetes. Dmitry Burlea Software FlixCharter

Service Mesh with Istio on Kubernetes. Dmitry Burlea Software FlixCharter Service Mesh with Istio on Kubernetes Dmitry Burlea Software Developer @ FlixCharter Road to Microservices Monolith (all-in-one) Road to Microservices Images from http://amazon.com/ Road to Microservices

More information

Microservices To-Go mit Dropwizard

Microservices To-Go mit Dropwizard Microservices To-Go mit Dropwizard Mario Goller Software Engineer, Swisscom AG mario.goller@swisscom.com Java Forum Stuttgart 2017 Excursion: Architecture Comparison Monolith: multiple modules in the same

More information

Anti-fragile Cloud Architectures. Agim Emruli - mimacom

Anti-fragile Cloud Architectures. Agim Emruli - mimacom Anti-fragile Cloud Architectures Agim Emruli - @aemruli - mimacom Antifragility is beyond resilience or robustness. The resilient resists shocks and stays the same; the antifragile gets better. Nasim Nicholas

More information

Microprofile Fault Tolerance. Emily Jiang 1.0,

Microprofile Fault Tolerance. Emily Jiang 1.0, Microprofile Fault Tolerance Emily Jiang 1.0, 2017-09-13 Table of Contents 1. Architecture.............................................................................. 2 1.1. Rational..............................................................................

More information

Cloud Service Engine. Product Description. Issue 01 Date

Cloud Service Engine. Product Description. Issue 01 Date Issue 01 Date 2018-04-09 Contents Contents 1 Overview... 1 2 Functions... 2 3 Advantages...3 4 Application Scenarios...6 5 Terms...7... 12 6.1 LocalServiceCenter... 12 6.2 Java SDK... 13 6.3 Go SDK...

More information

Ops for Developers Monitor your Java application with Prometheus

Ops for Developers Monitor your Java application with Prometheus .consulting.solutions.partnership Ops for Developers Monitor your Java application with Prometheus Alexander Schwartz, Principal IT Consultant CloudNativeCon + KubeCon Europe 2017 30 March 2017 Ops for

More information

Resilience, Service- Discovery and Z- D Deployment. Bodo Junglas, York Xylander

Resilience, Service- Discovery and Z- D Deployment. Bodo Junglas, York Xylander Resilience, Service- Discovery and Z- D Deployment Bodo Junglas, York Xylander Who is leanovate? 2 100 25 people, HQ in Kreuzberg Mission: Build learning organizaions What do we do? 3 100 Dev Meth Doing

More information

GAVIN KING RED HAT CEYLON SWARM

GAVIN KING RED HAT CEYLON SWARM GAVIN KING RED HAT CEYLON SWARM CEYLON PROJECT A relatively new programming language which features: a powerful and extremely elegant static type system built-in modularity support for multiple virtual

More information

To Microservices and Beyond!

To Microservices and Beyond! To Microservices and Beyond! YOW! Conference 2014 Matt Stine (@mstine) - Senior Product Manager, Spring for Pivotal CF Simon Elisha (@simon_elisha) - CTO & Senior Manager, Field Engineering 1 M!CR0S3RV!C3$!!!!!

More information

Cloud Native Architecture 300. Copyright 2014 Pivotal. All rights reserved.

Cloud Native Architecture 300. Copyright 2014 Pivotal. All rights reserved. Cloud Native Architecture 300 Copyright 2014 Pivotal. All rights reserved. Cloud Native Architecture Why What How Cloud Native Architecture Why What How Cloud Computing New Demands Being Reactive Cloud

More information

Microservices stress-free and without increased heart-attack risk

Microservices stress-free and without increased heart-attack risk Microservices stress-free and without increased heart-attack risk Uwe Friedrichsen (codecentric AG) microxchg Berlin, 12. February 2015 @ufried Uwe Friedrichsen uwe.friedrichsen@codecentric.de http://slideshare.net/ufried

More information

CADEC 2016 MICROSERVICES AND DOCKER CONTAINERS MAGNUS LARSSON

CADEC 2016 MICROSERVICES AND DOCKER CONTAINERS MAGNUS LARSSON CADEC 2016 MICROSERVICES AND DOCKER CONTAINERS MAGNUS LARSSON 2016-01-27 CALLISTAENTERPRISE.SE AGENDA Microservices in reality - Managing a system landscape with many microservices - Very little high level

More information

Flexible EAI-Lösungen mit Glassfish

Flexible EAI-Lösungen mit Glassfish Flexible EAI-Lösungen mit Glassfish Praxisbeispiele und War Stories zu EAI-Pattern Alexander Heusingfeld, @goldstift Martin Huber, @waterback We take care of it - personally! EAI Pattern in 2013? EAI

More information

Simple REST-APIs with Dropwizard and Swagger. Bernd Schönbach LeanIX GmbH

Simple REST-APIs with Dropwizard and Swagger. Bernd Schönbach LeanIX GmbH Simple REST-APIs with Dropwizard and Swagger Bernd Schönbach LeanIX GmbH Motivation Quickly create REST-APIs Make it testable Deploy with a click Or even better automatically Provide Documentation without

More information

Exercise for OAuth2 security. Andreas Falk

Exercise for OAuth2 security. Andreas Falk Exercise for OAuth2 security Andreas Falk Table of Contents 1. What we will build....................................................................... 1 2. Step 1....................................................................................

More information

Eclipse MicroProfile: Accelerating the adoption of Java Microservices

Eclipse MicroProfile: Accelerating the adoption of Java Microservices Eclipse MicroProfile: Accelerating the adoption of Java Microservices Emily Jiang twitter @emilyfhjiang 10 th October 2017 What is Eclipse MicroProfile? Eclipse MicroProfile is an open-source community

More information

SAMPLE CHAPTER. John Carnell MANNING

SAMPLE CHAPTER. John Carnell MANNING SAMPLE CHAPTER John Carnell MANNING Spring Microservices in Action by John Carnell Sample Chapter 6 Copyright 2017 Manning Publications brief contents 1 Welcome to the cloud, Spring 1 2 Building microservices

More information

Cloud Native Java with Kubernetes

Cloud Native Java with Kubernetes Cloud Native Java with Kubernetes @burrsutter burr@redhat.com developers.redhat.com We cannot solve our problems with the same thinking we used when we created them. Albert Einstein (Theoretical Physicist)

More information

Red Hat OpenShift Application Runtimes 1

Red Hat OpenShift Application Runtimes 1 Red Hat OpenShift Application Runtimes 1 Red Hat OpenShift Application Runtimes Release Notes For use with Red Hat OpenShift Application Runtimes Last Updated: 2018-01-10 Red Hat OpenShift Application

More information

Clojure for OOP folks Stefan innoq

Clojure for OOP folks Stefan innoq Clojure for OOP folks Stefan Tilkov @stilkov innoq 1 Motivation 2 Syntax Idioms 3 OOP Thinking model domains with classes & interfaces encapsulate data in objects prefer specific over generic solutions

More information

MODERN APPLICATION ARCHITECTURE DEMO. Wanja Pernath EMEA Partner Enablement Manager, Middleware & OpenShift

MODERN APPLICATION ARCHITECTURE DEMO. Wanja Pernath EMEA Partner Enablement Manager, Middleware & OpenShift MODERN APPLICATION ARCHITECTURE DEMO Wanja Pernath EMEA Partner Enablement Manager, Middleware & OpenShift COOLSTORE APPLICATION COOLSTORE APPLICATION Online shop for selling products Web-based polyglot

More information

@unterstein #bedcon. Operating microservices with Apache Mesos and DC/OS

@unterstein #bedcon. Operating microservices with Apache Mesos and DC/OS @unterstein @dcos @bedcon #bedcon Operating microservices with Apache Mesos and DC/OS 1 Johannes Unterstein Software Engineer @Mesosphere @unterstein @unterstein.mesosphere 2017 Mesosphere, Inc. All Rights

More information

Building Microservices with Kotlin. Haim Yadid

Building Microservices with Kotlin. Haim Yadid Building Microservices with Kotlin Haim Yadid Disclaimer The purpose of this talk is to share our experience and with Kotlin not to teach the language syntax. I will delve into some details for for the

More information

Advanced Clojure Microservices. Tobias Bayer Hamburg,

Advanced Clojure Microservices. Tobias Bayer Hamburg, Advanced Clojure Microservices Tobias Bayer Hamburg, 30.09.2016 Tobias Bayer Senior Developer / Software Architect inovex GmbH Clojure, Java, Cloud tobias.bayer@inovex.de https://github.com/tobiasbayer

More information

Blockchain (a.k.a. the slowest, most fascinating database you ll ever see)

Blockchain (a.k.a. the slowest, most fascinating database you ll ever see) Blockchain (a.k.a. the slowest, most fascinating database you ll ever see) GOTO Amsterdam 13 June, 2017 Stefan Tilkov, @stilkov I don t know Blockchain and so can you 1. Bitcoin > Practical application

More information

Application Resilience Engineering and Operations at Netflix. Ben Software Engineer on API Platform at Netflix

Application Resilience Engineering and Operations at Netflix. Ben Software Engineer on API Platform at Netflix Application Resilience Engineering and Operations at Netflix Ben Christensen @benjchristensen Software Engineer on API Platform at Netflix Global deployment spread across data centers in multiple AWS regions.

More information

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke

Going Reactive. Reactive Microservices based on Vert.x. JavaLand Kristian Kottke Going Reactive Reactive Microservices based on Vert.x JavaLand Kristian Kottke Whoami Kristian Kottke Lead Software Engineer -> iteratec Interests Software Architecture Big Data Technologies Kristian.Kottke@iteratec.de

More information

CHALLENGES IN A MICROSERVICES AGE: MONITORING, LOGGING AND TRACING ON OPENSHIFT. Martin Etmajer Technology May 4, 2017

CHALLENGES IN A MICROSERVICES AGE: MONITORING, LOGGING AND TRACING ON OPENSHIFT. Martin Etmajer Technology May 4, 2017 CHALLENGES IN A MICROSERVICES AGE: MONITORING, LOGGING AND TRACING ON OPENSHIFT Martin Etmajer Technology Lead @Dynatrace May 4, 2017 WHY A CHALLENGE? Microservice A Microservice B Microservice C Microservice

More information

Why real integration developers ride Camels

Why real integration developers ride Camels Why real integration developers ride Camels Christian Posta Principal Middleware Specialist/Architect Blog: http://blog.christianposta.com Twitter: @christianposta Email: christian@redhat.com Committer

More information

A Comparision of Service Mesh Options

A Comparision of Service Mesh Options A Comparision of Service Mesh Options Looking at Istio, Linkerd, Consul-connect Syed Ahmed - CloudOps Inc Introduction About Me Cloud Software Architect @ CloudOps PMC for Apache CloudStack Worked on network

More information

Introduction to reactive programming. Jonas Chapuis, Ph.D.

Introduction to reactive programming. Jonas Chapuis, Ph.D. Introduction to reactive programming Jonas Chapuis, Ph.D. Reactive programming is an asynchronous programming paradigm oriented around data flows and the propagation of change wikipedia Things happening

More information

Fault Tolerance in Microservices

Fault Tolerance in Microservices Masaryk University Faculty of Informatics Fault Tolerance in Microservices Master s Thesis Bc. Tomáš Livora Brno, Fall 2016 Declaration Hereby I declare that this paper is my original authorial work,

More information

MSB to Support for Carrier Grade ONAP Microservice Architecture. Huabing Zhao, PTL of MSB Project, ZTE

MSB to Support for Carrier Grade ONAP Microservice Architecture. Huabing Zhao, PTL of MSB Project, ZTE MSB to Support for Carrier Grade ONAP Microservice Architecture Huabing Zhao, PTL of MSB Project, ZTE ONAP Architecture Principle: Microservices ONAP Architecture Principle: ONAP modules should be designed

More information

The Fallacies of Distributed Computing: What if the Network Fails?

The Fallacies of Distributed Computing: What if the Network Fails? The Fallacies of Distributed Computing: What if the Network Fails? Bert Ertman and Willem Dekker Those who stand for nothing, fall for anything - Alexander Hamilton About us Bert Ertman Fellow Willem Dekker

More information

A T O O L K I T T O B U I L D D I S T R I B U T E D R E A C T I V E S Y S T E M S

A T O O L K I T T O B U I L D D I S T R I B U T E D R E A C T I V E S Y S T E M S VERT.X A T O O L K I T T O B U I L D D I S T R I B U T E D R E A C T I V E S Y S T E M S CLEMENT ESCOFFIER Vert.x Core Developer, Red Hat V E R T. X I S A T O O L K I T T O B U I L D D I S T R I B U T

More information

Huge Codebases Application Monitoring with Hystrix

Huge Codebases Application Monitoring with Hystrix Huge Codebases Application Monitoring with Hystrix 30 Jan. 2016 Roman Mohr Red Hat FOSDEM 2016 1 About Me Roman Mohr Software Engineer at Red Hat Member of the SLA team in ovirt Mail: rmohr@redhat.com

More information

Using the SDACK Architecture to Build a Big Data Product. Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver

Using the SDACK Architecture to Build a Big Data Product. Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver Using the SDACK Architecture to Build a Big Data Product Yu-hsin Yeh (Evans Ye) Apache Big Data NA 2016 Vancouver Outline A Threat Analytic Big Data product The SDACK Architecture Akka Streams and data

More information

Creating RESTful web services with Spring Boot

Creating RESTful web services with Spring Boot Creating RESTful web services with Spring Boot The Spring framework Free and open source Inversion of Control Container (IoC) Modules DI / AOP Data /Security Web MVC/ REST So much more +++ What is Spring

More information

Migrating to Java 9 Modules. Paul Bakker

Migrating to Java 9 Modules. Paul Bakker Migrating to Java 9 Modules Paul Bakker Why care about modules? lib/nebula-4.0.12.jar:lib/netflix-gradle-lint-8.6.1.jar:lib/gretty-2.0.0.jar:lib/gradle-infamous-plugin-1.28.jar:lib/java-semver-0.9.0.jar:lib/guava-20.0.jar:lib/

More information

Groovy and Grails in Google App Engine

Groovy and Grails in Google App Engine Groovy and Grails in Google App Engine Benefit from a Java-like dynamic language to be more productive on App Engine Guillaume Laforge Head of Groovy Development Guillaume Laforge Groovy Project Manager

More information

DON'T BLOCK YOUR MOBILES AND INTERNET OF THINGS

DON'T BLOCK YOUR MOBILES AND INTERNET OF THINGS DON'T BLOCK YOUR MOBILES AND INTERNET OF THINGS Use non blocking I/O for scalable and resilient server applications MAGNUS LARSSON, PÄR WENÅKER, ANDERS ASPLUND 2014-10-23 CALLISTAENTERPRISE.SE AGENDA The

More information

Dropwizard. A RESTful Love Story. Ryan Kennedy Core Yammer

Dropwizard. A RESTful Love Story. Ryan Kennedy Core Yammer Dropwizard A RESTful Love Story Ryan Kennedy (@rckenned) Core Services @ Yammer Dropwizard A RESTful Love Story Ryan Kennedy (@rckenned) Core Services @ Yammer + MicrosoE What on earth is Dropwizard? Some

More information

Przyspiesz tworzenie aplikacji przy pomocy Openshift Container Platform. Jarosław Stakuń Senior Solution Architect/Red Hat CEE

Przyspiesz tworzenie aplikacji przy pomocy Openshift Container Platform. Jarosław Stakuń Senior Solution Architect/Red Hat CEE Przyspiesz tworzenie aplikacji przy pomocy Openshift Container Platform Jarosław Stakuń Senior Solution Architect/Red Hat CEE jstakun@redhat.com Monetize innovation http://www.forbes.com/innovative-companies/list/

More information

Philipp Wille. Beyond Scala s Standard Library

Philipp Wille. Beyond Scala s Standard Library Scala Enthusiasts BS Philipp Wille Beyond Scala s Standard Library OO or Functional Programming? Martin Odersky: Systems should be composed from modules. Modules should be simple parts that can be combined

More information

Patterns of Resilience How to build robust, scalable & responsive systems

Patterns of Resilience How to build robust, scalable & responsive systems Patterns of Resilience How to build robust, scalable & responsive systems Uwe Friedrichsen (codecentric AG) GOTO Night Amsterdam 18. May 2015 @ufried Uwe Friedrichsen uwe.friedrichsen@codecentric.de http://slideshare.net/ufried

More information

Keep Learning with Oracle University

Keep Learning with Oracle University Keep Learning with Oracle University Classroom Training Learning Subscription Live Virtual Class Training On Demand Cloud Technology Applications Industries education.oracle.com 3 Session Surveys Help

More information

Stream and Batch Processing in the Cloud with Data Microservices. Marius Bogoevici and Mark Fisher, Pivotal

Stream and Batch Processing in the Cloud with Data Microservices. Marius Bogoevici and Mark Fisher, Pivotal Stream and Batch Processing in the Cloud with Data Microservices Marius Bogoevici and Mark Fisher, Pivotal Stream and Batch Processing in the Cloud with Data Microservices Use Cases Predictive maintenance

More information

Spring Boot Reference Guide

Spring Boot Reference Guide 1.5.4.RELEASE Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons Copyright 2012-2017 Copies of this document

More information

Open Java EE and Eclipse MicroProfile - A New Java Landscape for Cloud Native Apps

Open Java EE and Eclipse MicroProfile - A New Java Landscape for Cloud Native Apps EclipseCon Europe 2017 Open Java EE and Eclipse MicroProfile - A New Java Landscape for Cloud Native Apps Kevin Sutter MicroProfile and Java EE Architect @kwsutter Emily Jiang MicroProfile Development

More information

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower

Reactive Java: Promises and Streams with Reakt. Geoff Chandler and Rick Hightower Reactive Java: Promises and Streams with Reakt Geoff Chandler and Rick Hightower What is Reakt in 30 seconds! Reakt General purpose library for callback coordination and streams Implements JavaScript

More information

Scala Java Sparkle Monday, April 16, 2012

Scala Java Sparkle Monday, April 16, 2012 Scala Java Sparkle Scala Scala Java Scala "Which Programming Language would you use *now* on top of JVM, except Java?". The answer was surprisingly fast and very clear: - Scala. http://www.adam-bien.com/roller/abien/entry/java_net_javaone_which_programming

More information

Demystifying Spring Boot Magic. Patrick DevOps Pro Moscow 2018

Demystifying Spring Boot Magic. Patrick DevOps Pro Moscow 2018 Demystifying Spring Boot Magic Patrick Baumgartner @patbaumgartner DevOps Pro Moscow 2018 Who am I? Patrick Baumgartner Spring Boot And Magic? Some famous tweets Magic or Boilerplate? Magic Things happen

More information

Getting Started with Kotlin. Commerzbank Java Developer Day

Getting Started with Kotlin. Commerzbank Java Developer Day Getting Started with Kotlin Commerzbank Java Developer Day 30.11.2017 Hello! Alexander Hanschke Hello! Alexander Hanschke CTO at techdev Solutions GmbH in Berlin Hello! Alexander Hanschke CTO at techdev

More information

Application Design and Development: October 30

Application Design and Development: October 30 M149: Database Systems Winter 2018 Lecturer: Panagiotis Liakos Application Design and Development: October 30 1 Applications Programs and User Interfaces very few people use a query language to interact

More information

7 Topics Concerning Languages & Architecture Stefan JUG KA 2011

7 Topics Concerning Languages & Architecture Stefan JUG KA 2011 7 Topics Concerning Languages & Architecture Stefan Tilkov @stilkov JUG KA 2011 1 http://www.innoq.com Stefan Tilkov stefan.tilkov@innoq.com @stilkov 2 http://rest-http.info 3 1. Language Equality 4 Languages

More information

Java Architectures A New Hope. Eberhard Wolff

Java Architectures A New Hope. Eberhard Wolff Java Architectures A New Hope Eberhard Wolff http://ewolff.com What happens with a talk titled like this? Architecture of Enterprise Java Apps How can I implement a new feature??? ! ECommerce System

More information

MICROSERVICES I PRAKTIKEN från tröga monoliter till en arkitektur för kortare ledtider, högre skalbarhet och ökad feltolerans

MICROSERVICES I PRAKTIKEN från tröga monoliter till en arkitektur för kortare ledtider, högre skalbarhet och ökad feltolerans MICROSERVICES I PRAKTIKEN från tröga monoliter till en arkitektur för kortare ledtider, högre skalbarhet och ökad feltolerans MAGNUS LARSSON 2015.05.21 CALLISTAENTERPRISE.SE 1 AGENDA What s the problem?

More information

Open-O Command- Line Interface (CLI)

Open-O Command- Line Interface (CLI) Open-O Command- Line Interface (CLI) One command to command whole open-o Kanagaraj Manickam Huawei License Copyright 2017 Huawei Technologies Co., Ltd. Licensed under the Apache License, Version 2.0 (the

More information

Grails Seminar 11/12/09. Groovy And Grails. An Overview

Grails Seminar 11/12/09. Groovy And Grails. An Overview Grails Seminar 11/12/09 Groovy And Grails An Overview Groovy What Is Groovy? Groovy... Is A Dynamic Language For The Java Virtual Machine (JVM) Takes inspiration from Smalltalk, Python and Ruby (etc...)

More information

LEAN & MEAN - GO MICROSERVICES WITH DOCKER SWARM MODE AND SPRING CLOUD

LEAN & MEAN - GO MICROSERVICES WITH DOCKER SWARM MODE AND SPRING CLOUD LEAN & MEAN - GO MICROSERVICES WITH DOCKER SWARM MODE AND SPRING CLOUD ERIK LUPANDER 2017-11-09 CALLISTAENTERPRISE.SE ABOUT ME Erik Lupander, consultant at Callista Enterprise. Primarily a Java dude. Discovered

More information

Developer Experience with. Spencer Gibb, Dave Syer, Spring Cloud

Developer Experience with. Spencer Gibb, Dave Syer, Spring Cloud Developer Experience with Spencer Gibb, Dave Syer, 2015 Spring Cloud Authors Spencer Gibb, @spencerbgibb, sgibb@pivotal.io Dave Syer, @david_syer, dsyer@pivotal.io Developer Experience Microservices lead

More information

Logging in the age of

Logging in the age of Logging in the age of and the Cloud Microservices @axelfontaine POLL: what type of infrastructure are you running on? On Premise Colocation Root Server Cloud The (good) old days of logging ssh me@myserver

More information

Ratpacked Notebook. Experience Ratpack with code snippets. Hubert Klein Ikkink. This book is for sale at

Ratpacked Notebook. Experience Ratpack with code snippets. Hubert Klein Ikkink. This book is for sale at Ratpacked Notebook Experience Ratpack with code snippets Hubert Klein Ikkink This book is for sale at http://leanpub.com/ratpacked-notebook This version was published on 2016-11-14 This is a Leanpub book.

More information

How to write Cynical software

How to write Cynical software How to write Cynical software Stability patterns and anti-patterns dagi@goodata.com https://twitter.com/_dagi How to become cynical Eat your own dog food Strong feedback Pager duty (Engineer on duty) DevOps

More information

Harnessing the Power of YARN with Apache Twill

Harnessing the Power of YARN with Apache Twill Harnessing the Power of YARN with Apache Twill Andreas Neumann andreas[at]continuuity.com @anew68 A Distributed App Reducers part part part shuffle Mappers split split split A Map/Reduce Cluster part

More information

Spring MVC 4.x Spring 5 Web Reactive

Spring MVC 4.x Spring 5 Web Reactive Part 1 Spring MVC 4.x Spring 5 Web Reactive Rossen Stoyanchev @rstoya05 Spring MVC 4.3 Reactive programming for Java devs Spring 5 Web Reactive Shortcut Annotations @RequestMapping @GetMapping @PostMapping

More information

Achieving Continuous Delivery - Micro Services. - Vikram Gadang

Achieving Continuous Delivery - Micro Services. - Vikram Gadang Achieving Continuous Delivery - Micro Services - Vikram Gadang Agenda Starting point Observations and lessons learned Architecting for CD Build pipeline strategy Testing strategy Deployment strategy State

More information

Upgrading to Spring Boot 2.0

Upgrading to Spring Boot 2.0 APPENDIX A Upgrading to Spring Boot 2.0 Introduction This book uses the Spring Boot version 1.5.7 for the different microservices that are part of the evolving application. Spring Boot 2.0, which is to

More information

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS ContainerCon @ Open Source Summit North America 2017 Elizabeth K. Joseph @pleia2 1 Elizabeth K. Joseph, Developer Advocate

More information

Reactive Microservices Architecture on AWS

Reactive Microservices Architecture on AWS Reactive Microservices Architecture on AWS Sascha Möllering Solutions Architect, @sascha242, Amazon Web Services Germany GmbH Why are we here today? https://secure.flickr.com/photos/mgifford/4525333972

More information

Spoilt for Choice Which Integration Framework to choose? Mule ESB. Integration. Kai Wähner

Spoilt for Choice Which Integration Framework to choose? Mule ESB. Integration.  Kai Wähner Spoilt for Choice Which Integration Framework to choose? Integration vs. Mule ESB vs. Main Tasks Evaluation of Technologies and Products Requirements Engineering Enterprise Architecture Management Business

More information

Simplifying Asynchronous Code with

Simplifying Asynchronous Code with Simplifying Asynchronous Code with Scala Async PHILIPP HALLER The Problem Asynchronous code Using an API that requires you to register callbacks? Then you re writing asynchronous code! Problem: callbacks

More information

MODERN IT ARCHITECTURE

MODERN IT ARCHITECTURE MODERN IT ARCHITECTURE 2 ABOUT ME 3 ABOUT ME AGENDA 1. KEY CONCEPTS Microservices, containers, etc. 2. HOLISTIC VIEW Making businesses agile 3. ARCHITECTURE Faster, flatter, and more flexible 4. LAB MATERIALS

More information

Creating Manageable Systems With JMX, Spring, AOP, and Groovy

Creating Manageable Systems With JMX, Spring, AOP, and Groovy Creating Manageable Systems With JMX, Spring, AOP, and Groovy Vladimir Vivien Sr. Software Engineer Simplius, LLC http://simpli.us/ TS-1106 2007 JavaOne SM Conference Session TS-1106 Goal Build runtime

More information

Demystifying Spring Boot Magic. # K100 on slido.co. Patrick DevDays Vilnius 2018 Socialiniu mokslu kolegija /

Demystifying Spring Boot Magic. # K100 on slido.co. Patrick DevDays Vilnius 2018 Socialiniu mokslu kolegija / Demystifying Spring Boot Magic # K100 on slido.co Patrick Baumgartner @patbaumgartner DevDays Vilnius 2018 Socialiniu mokslu kolegija / 24.05.2018 Who am I? Patrick Baumgartner Spring Boot And Magic? Some

More information

Index D, E. mydocuments-aopcontext.xml,

Index D, E. mydocuments-aopcontext.xml, Index A Advance Message Queue Protocol (AMQP), 159, 217 Aspect-oriented programming (AOP), 89, 91 AfterLoggingModule.java, 98 annotations caching.java, 107 108 mydocuments-aop-annotatedcontext.xml, 108

More information

Session 24. Spring Framework Introduction. Reading & Reference. dev.to/lechatthecat/how-to-use-spring-boot-java-web-framework-withintellij-idea-202p

Session 24. Spring Framework Introduction. Reading & Reference. dev.to/lechatthecat/how-to-use-spring-boot-java-web-framework-withintellij-idea-202p Session 24 Spring Framework Introduction 1 Reading & Reference Reading dev.to/lechatthecat/how-to-use-spring-boot-java-web-framework-withintellij-idea-202p http://engineering.pivotal.io/post/must-know-spring-boot-annotationscontrollers/

More information

An Application for Monitoring Solr

An Application for Monitoring Solr An Application for Monitoring Solr Yamin Alam Gauhati University Institute of Science and Technology, Guwahati Assam, India Nabamita Deb Gauhati University Institute of Science and Technology, Guwahati

More information

An Architecture for Self-Organizing Continuous Delivery Pipelines

An Architecture for Self-Organizing Continuous Delivery Pipelines An Architecture for Self-Organizing Continuous Delivery Pipelines Master Thesis Final Talk Jan Simon Döring jan.simon.doering@rwth-aachen.de Towards Continuous Delivery 2.0 The next generation Software

More information

Tapestry. Code less, deliver more. Rayland Jeans

Tapestry. Code less, deliver more. Rayland Jeans Tapestry Code less, deliver more. Rayland Jeans What is Apache Tapestry? Apache Tapestry is an open-source framework designed to create scalable web applications in Java. Tapestry allows developers to

More information

FreeMarker in Spring Web. Marin Kalapać

FreeMarker in Spring Web. Marin Kalapać FreeMarker in Spring Web Marin Kalapać Agenda Spring MVC view resolving in general FreeMarker what is it and basics Configure Spring MVC to use Freemarker as view engine instead of jsp Commonly used components

More information

Modularity in Java. With OSGi. Alex Docklands.LJC January Copyright 2016 Alex Blewitt

Modularity in Java. With OSGi. Alex Docklands.LJC January Copyright 2016 Alex Blewitt Modularity in Java With OSGi Alex Blewitt @alblue Docklands.LJC January 2016 Modularity in Java Modularity is Easy? Modularity is Hard! Modularity is Hard! Modularity is Hard! Modularity is Hard! Modularity

More information

Container 2.0. Container: check! But what about persistent data, big data or fast data?!

Container 2.0. Container: check! But what about persistent data, big data or fast data?! @unterstein @joerg_schad @dcos @jaxdevops Container 2.0 Container: check! But what about persistent data, big data or fast data?! 1 Jörg Schad Distributed Systems Engineer @joerg_schad Johannes Unterstein

More information

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009

Enterprise Java Development using JPA, Hibernate and Spring. Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 Enterprise Java Development using JPA, Hibernate and Spring Srini Penchikala Detroit JUG Developer Day Conference November 14, 2009 About the Speaker Enterprise Architect Writer, Speaker, Editor (InfoQ)

More information

Big Data Applications with Spring XD

Big Data Applications with Spring XD Big Data Applications with Spring XD Thomas Darimont, Software Engineer, Pivotal Inc. @thomasdarimont Unless otherwise indicated, these slides are 2013-2015 Pivotal Software, Inc. and licensed under a

More information

Spring Professional v5.0 Exam

Spring Professional v5.0 Exam Spring Professional v5.0 Exam Spring Core Professional v5.0 Dumps Available Here at: /spring-exam/core-professional-v5.0- dumps.html Enrolling now you will get access to 250 questions in a unique set of

More information

High performance reactive applications with Vert.x

High performance reactive applications with Vert.x High performance reactive applications with Vert.x Tim Fox Red Hat Bio Employed By Red Hat to lead the Vert.x project Worked in open source exclusively for the past 9 years Some projects I've been involved

More information