java ee meets microservices

87
Java EE meets Microservices Are U serious? Lars Röwekamp CIO New Technologies #WISSENTEILEN @mobileLarson @_openKnowledge

Upload: open-knowledge-gmbh

Post on 21-Jan-2017

285 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Java EE meets Microservices

Java EE meets Microservices Are U serious?

Lars Röwekamp CIO New Technologies

#WISSENTEILEN

@mobileLarson @_openKnowledge

Page 2: Java EE meets Microservices

Microservices Wo liegt das Problem?

Was sind Microservices? Das geht mit Java EE?

Page 3: Java EE meets Microservices

Microservices Wo liegt das Problem? Was sind Microservices? Das geht mit Java EE?

Page 4: Java EE meets Microservices

„Monolithic Design”

Page 5: Java EE meets Microservices

#WISSENTEILENOFFENKUNDIGGUT

Was ist das Problem?

Page 6: Java EE meets Microservices

Was ist das Problem?

‣ Umsetzung von Features dauert zu lange ‣ Technologische „Schulden“ sind bekannt ‣ Architektur-Qualität nimmt ab (an Bedeutung) ‣ „-ility“ Probleme wohin man schaut ‣ Deployment ist kompliziert und dauert lang ‣ Skalierung hat Limit erreicht

‣ Replacement/Refactoring ist zu teuer

#WISSENTEILENOFFENKUNDIGGUT

Page 7: Java EE meets Microservices

„For a monolithic to change all must agree on each

change.

Each change has unanticipated effects

requiring testing beforehand.“

Was ist das Problem?

#WISSENTEILENOFFENKUNDIGGUT

Page 8: Java EE meets Microservices

Monolithic „Module“ Release

Was ist das Problem?

#WISSENTEILENOFFENKUNDIGGUT

Page 9: Java EE meets Microservices

Monolithic „Module“ Release

Was ist das Problem?

#WISSENTEILENOFFENKUNDIGGUT

Page 10: Java EE meets Microservices

Monolithic „Module“ Release

Was ist das Problem?

#WISSENTEILENOFFENKUNDIGGUT

Page 11: Java EE meets Microservices

Monolithic „Module“ Release

#WISSENTEILENOFFENKUNDIGGUT

Was ist das Problem?

Page 12: Java EE meets Microservices

Monolithic „Module“ Release

Was ist das Problem?

#WISSENTEILENOFFENKUNDIGGUT

Page 13: Java EE meets Microservices

Monolithic „Module“ Release

Scary!

Was ist das Problem?

#WISSENTEILENOFFENKUNDIGGUT

Page 14: Java EE meets Microservices

Was ist das Problem? „You want to be here.“

#WISSENTEILENOFFENKUNDIGGUT

Page 15: Java EE meets Microservices

Load Balancer Multi Tenancy

Mic

rose

rvic

es

Was ist das Problem? „You want to be here.“

#WISSENTEILENOFFENKUNDIGGUT

Page 16: Java EE meets Microservices

@Runtime@Runtim

e

a.k.

a. „

Tim

e to

Mar

ket“

Was ist das Problem? „You want to be here.“

#WISSENTEILENOFFENKUNDIGGUT

Page 17: Java EE meets Microservices

„Help; needed it is.”

Page 18: Java EE meets Microservices

Monolithic Design

‣ „one monolithic Application“ ‣ „one monolithic Database“ ‣ „one programming Language“ ‣ „very huge and slow Test Suite“ ‣ „logic is buried in Abstraction“ ‣ „logic is hidden in generated Code“ ‣ „deployment is kind of Scary“

#WISSENTEILENOFFENKUNDIGGUT

Page 19: Java EE meets Microservices

Microservices Wo liegt das Problem?

Was sind Microservices? Das geht mit Java EE?

Page 20: Java EE meets Microservices

#WISSENTEILENOFFENKUNDIGGUT

„Kind of Definition“

Page 21: Java EE meets Microservices

„Small autonomous services that work together.”

by Sam Newman (thoughtworks)

Page 22: Java EE meets Microservices

„Microservices are a self-contained and easily

understandable realization of domain logic, highly independent

of each other.” by Adam Bien (Freelancer)

Page 23: Java EE meets Microservices

„Loosely coupled service oriented architecture with bounded

contexts.”by Adrian Cockcroft (ehemals Netflix)

„btw: if every service has to be updated at the same

time it’s not loosely coupled.“

Page 24: Java EE meets Microservices

„Loosely coupled service oriented architecture with bounded

contexts.”by Adrian Cockcroft (ehemals Netflix)

„btw: If you have to know too much about

surrounding services you don’t have a bounded

context.“

Page 25: Java EE meets Microservices

„Eine Einheit, die von einem kleinen Team komplett – also

fachlich und technisch – beherrscht werden kann.”

Oliver Wegner (OTTO)

a.k.a. 2 Pizza Teams

Page 26: Java EE meets Microservices

„In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.”

Page 27: Java EE meets Microservices

„As we l l as the fact that serv ices are independently deployable and scalable, each service also provides a firm module boundary, even allowing for different services to be written in different programming languages. They can also be managed by different teams.”

Page 28: Java EE meets Microservices

„Microservice Charakteristika a.k.a. Lackmustest”

Page 29: Java EE meets Microservices

Charakteristika

„Componentization via Services“

#WISSENTEILENOFFENKUNDIGGUT

Page 30: Java EE meets Microservices

Charakteristika

Charakteristika„Organized via

Business Capabilities“

#WISSENTEILENOFFENKUNDIGGUT

Page 31: Java EE meets Microservices

Charakteristika

Charakteristika

„Organized via Business Capabilities“

„Any organization that designs a system (defined broadly) will

produce a design whose structure is a copy of the organization's

communication structure.“Conway Law (1967)

#WISSENTEILENOFFENKUNDIGGUT

Page 32: Java EE meets Microservices

Charakteristika

Charakteristika

„Organized via Business Capabilities“

Conway Law (1967)

#WISSENTEILENOFFENKUNDIGGUT

Page 33: Java EE meets Microservices

Charakteristika

Charakteristika

„Organized via Business Capabilities“

#WISSENTEILENOFFENKUNDIGGUT

Page 34: Java EE meets Microservices

Charakteristika

Charakteristika„Products, not Projects“

#WISSENTEILENOFFENKUNDIGGUT

Page 35: Java EE meets Microservices

„The traditional model is that you take your software to the wall that separates dev and ops, and throw it over and then forget about it.”

by Werner Vogel (Amazon)

Page 36: Java EE meets Microservices

by Werner Vogel (Amazon)

„Not at Amazon. You build it, you run it!”

Page 37: Java EE meets Microservices

Charakteristika

Charakteristika„Smart Endpoints, dumb Pipes“

#WISSENTEILENOFFENKUNDIGGUT

Page 38: Java EE meets Microservices

„Smart Endpoints, dumb Pipes“Charakteristika

#WISSENTEILENOFFENKUNDIGGUT

Page 39: Java EE meets Microservices

Charakteristika

Charakteristika„Decentralized Governance“

#WISSENTEILENOFFENKUNDIGGUT

Page 40: Java EE meets Microservices

Charakteristika

Charakteristika„Decentralized

Data Management“

#WISSENTEILENOFFENKUNDIGGUT

Page 41: Java EE meets Microservices

Charakteristika

Charakteristika

„Decentralized Data Management“

„App“ DBs

Single DB

#WISSENTEILENOFFENKUNDIGGUT

Page 42: Java EE meets Microservices

Charakteristika

Charakteristika

„Decentralized Data Management“

‣ a.k.a. Polyglot Persistence

‣ unterschiedliche Daten Modelle1) ‣ unterschiedliche Daten Storages

‣ Problemfeld „Updates“ ‣ Distributed Transactions zu komplex

‣ Eventual Consistency ‣ Compensation Operation 1) Bounded Context

#WISSENTEILENOFFENKUNDIGGUT

Page 43: Java EE meets Microservices

„Starbucks does not use Two-Phase Commit“http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html

Page 44: Java EE meets Microservices

Charakteristika

Charakteristika„Design

for Failure“

#WISSENTEILENOFFENKUNDIGGUT

Page 45: Java EE meets Microservices

Charakteristika

Charakteristika

„Design for Failure“

‣ fehlertolerante Services-Consumer ‣ wie beeinflusst ein Fehler die UX?

‣ Fehler als „Normalfall“ nicht als „Ausnahme“ ‣ Netflix stellt regelmäßig Systeme ab

‣Monitoring & Resilience ‣ Fehler schnell oder sogar vorab erkennen! ‣ Fehler - wenn möglich - automatisch beheben

#WISSENTEILENOFFENKUNDIGGUT

Page 46: Java EE meets Microservices

Charakteristika

Charakteristika„Evolutionary Design“

#WISSENTEILENOFFENKUNDIGGUT

Page 47: Java EE meets Microservices

Charakteristika

Charakteristika„Scalable by Purpose“

#WISSENTEILENOFFENKUNDIGGUT

Page 48: Java EE meets Microservices

Charakteristika

Charakteristika„Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 49: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 50: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 51: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 52: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 53: Java EE meets Microservices

Charakteristika

Charakteristika

„Infrastructure Automation“

‣ Logging & Monitoring

‣ Dashboards (up/down Status) ‣ Dashboards (operational Metrics)

‣ Circuit Breaker Status ‣ Aktueller Durchsatz, Latency ‣ Check-Outs, Umsatz ‣…

#WISSENTEILENOFFENKUNDIGGUT

Page 54: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 55: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 56: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 57: Java EE meets Microservices

btw:Paperduty

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 58: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 59: Java EE meets Microservices

Aggregation

Charakteristika „Infrastructure Automation“

#WISSENTEILENOFFENKUNDIGGUT

Page 60: Java EE meets Microservices

Charakteristika „Infrastructure Automation“

Correlation IDs

#WISSENTEILENOFFENKUNDIGGUT

Page 61: Java EE meets Microservices

Wrap up

Page 62: Java EE meets Microservices

Wrap up

Charakteristika

#WISSENTEILENOFFENKUNDIGGUT

Page 63: Java EE meets Microservices

Microservices Wo liegt das Problem?

Was sind Microservices? Das geht mit Java EE?

Page 64: Java EE meets Microservices

Microservice & JEE

Management Monitoring Availability Managment Security

#WISSENTEILENOFFENKUNDIGGUT

Page 65: Java EE meets Microservices

Microservice & JEE

Passt das zusammen?

‣ „Maximal Cohesion, Minimal Coupling“1)

‣ Java EE Business Component ‣ Boundary Entity Control Pattern ‣ in einem eigenen WAR ‣ deployed in einer eigenen „Domain“ ‣ Kommunikation via JAX-RS 1) Blog von Adam Bien

#WISSENTEILENOFFENKUNDIGGUT

Page 66: Java EE meets Microservices

Microservice & JEE

http://techblog.net.lix.com/2013/01/announcing-ribbon-tying-net.lix-mid.html

#WISSENTEILENOFFENKUNDIGGUT

Page 67: Java EE meets Microservices

Die Idee „Micro Java EE“

‣ viele sind mit Java EE sehr zufrieden, ‣ robust, skalierbar, standard, integriert gut ‣ aber muss es immer der „Full/Web Stack“ sein? ‣ oder besser „Just enough Application Server“?

‣ Self-contained Java Microservices (jar) ‣ Java EE Komponenten on demand

Microservice & JEE

#WISSENTEILENOFFENKUNDIGGUT

Page 68: Java EE meets Microservices

Wildfly Swarm

#WISSENTEILENOFFENKUNDIGGUT

Page 69: Java EE meets Microservices

Dropwizard

#WISSENTEILENOFFENKUNDIGGUT

Page 70: Java EE meets Microservices

Spring Boot & Cloud

#WISSENTEILENOFFENKUNDIGGUT

Page 71: Java EE meets Microservices

Boot

Autoconfigure

Starters

CLI

Actuator

Tools

Samples

Main Library

@EnableAutoConfiguration

Convenient Dependency Descriptors

Compile & Run Groovy

Non-functional Features

Build & Run self-contained JAR/WAR

Tons of Samples

Spring Boot & Cloud

#WISSENTEILENOFFENKUNDIGGUT

Page 72: Java EE meets Microservices

Einige Micro JEE Server

‣Wildfly Swarm ‣ TomEE Shades ‣ Payara Micro Glassfish ‣ KumuluzEE

‣ Dropwizard ‣ Spring Boot

1) JSR 111 (Service Framework)

Microservice & JEE

#WISSENTEILENOFFENKUNDIGGUT

Page 73: Java EE meets Microservices

Charakteristika

„Decentralized Governance“Microservice & JEE

#WISSENTEILENOFFENKUNDIGGUT

Page 74: Java EE meets Microservices

#WISSENTEILENOFFENKUNDIGGUT

Page 75: Java EE meets Microservices

#WISSENTEILENOFFENKUNDIGGUT

Page 76: Java EE meets Microservices

Charakteristika

„Decentralized Governance“Microservice & JEE

#WISSENTEILENOFFENKUNDIGGUT

Page 77: Java EE meets Microservices

Java EE meets Microservices Ein „subjektives“ Fazit

Page 78: Java EE meets Microservices

„subjektives“ Fazit

‣ gutes Konzept zu Modularisierung ‣ gutes Konzept zur Entkopplung ‣ gutes Konzept zu Skalierung ‣ gutes Konzept zur Evolution

‣ fachliche Komplexität beherrschbar ‣ technologische Komplexität automatisierter

‣ geht natürlich (auch) mit Java EE ;-)

#WISSENTEILENOFFENKUNDIGGUT

Page 79: Java EE meets Microservices

„subjektives“ Fazit

#WISSENTEILENOFFENKUNDIGGUT

„Ein Microservice kommt selten allein!“

by Lars Röwekamp (CIO New Technologies)

Page 80: Java EE meets Microservices

Drei Thesen zum Schluß

#WISSENTEILENOFFENKUNDIGGUT

Page 81: Java EE meets Microservices

Drei Thesen zum Schluß

#WISSENTEILENOFFENKUNDIGGUT

„Komplexität wird durch Microservices

verlagert, nicht verringert“

Page 82: Java EE meets Microservices

Drei Thesen zum Schluß

#WISSENTEILENOFFENKUNDIGGUT

„Das Finden der richtigen Bounded Contexts ist der

Schlüssel zum Erfolg“

Page 83: Java EE meets Microservices

Drei Thesen zum Schluß

#WISSENTEILENOFFENKUNDIGGUT

„Transaktionen sind ein Zeichen für einen

fehlenden Plan B“

Page 84: Java EE meets Microservices

Charakteristika? ? ?#WISSENTEILENOFFENKUNDIGGUT

Page 85: Java EE meets Microservices

Java EE meets Microservices Are U serious?

Lars Röwekamp CIO New Technologies

#wissenteilen

@mobileLarson @_openKnowledge

Page 86: Java EE meets Microservices

Charakteristika

#WISSENTEILENOFFENKUNDIGGUT

Bildnachweise

‣ #1: iStock.com / Andrew Rich (000029536120) ‣ #4: © Daniel Steger for openphoto.net ‣ #14: The Art of Scalability / theartofscalability.com ‣ #17: iStock.com / jpgfactory (000059091620) ‣ #20: iStock.com / VisualField (3096596) ‣ #21: https://pbs.twimg.com/profile_images/585298659589267456/xAPhHpWz.jpg ‣ #22: http://www.jugh.de/files/jugh_content/Referenten/Adam%20Bien.jpg ‣ #23: aws.amazon.com/de/heroes/usa/adrian-cockcroft/ ‣ #25: twitter.com/olliwegner ‣ #29: pixabay,con ‣ #31: Wikimedia / Webysther 20150414193208 ‣ #35: Guido van Nispen / via WIkiepedia ‣ #43: pixabay.com ‣ …

Page 87: Java EE meets Microservices

Charakteristika

#WISSENTEILENOFFENKUNDIGGUT

Bildnachweise

‣ … ‣ #64: http://www.programering.com/ ‣ #66: http://techblog.netflix.com/2013/01/announcing-ribbon-tying-netflix-mid.html ‣ #82: http://projects.spring.io/spring-boot/ ‣ #74, #75: © embarc ‣ #76: https://netflix.github.io