Für die einen das Allheilmittel gegen die vielfältigen Probleme monolithischer Anwendungen, für die anderen lediglich „alter Wein in neuen Schläuchen“. Wohl kaum ein Architekturansatz polarisiert derzeit so extrem wie Microservices. Doch was steckt wirklich hinter dem „neuen“ Paradigma, welche Vor- und Nachteile bringt es mit sich, und wie wird es in der Praxis bestmöglich umgesetzt? Die Session gibt einen Einblick in die Welt der Microservices im Zusammenspiel mit Java EE. Dabei steht nicht nur die reine Entwicklung im Fokus der Betrachtung, sondern auch Real-Life-Aspekte wie Deployment und Betrieb.
6. 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
7. „For a monolithic to change
all must agree on each
change.
Each change has
unanticipated effects
requiring testing beforehand.“
Was ist das Problem?
#WISSENTEILENOFFENKUNDIGGUT
22. „Microservices are a
self-contained and easily
understandable realization of
domain logic, highly independent
of each other.” by Adam Bien (Freelancer)
23. „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.“
24. „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.“
25. „Eine Einheit, die von einem
kleinen Team komplett – also
fachlich und technisch –
beherrscht werden kann.”
Oliver Wegner (OTTO)
a.k.a.
2 Pizza
Teams
26. „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.”
27. „As well as the fact that services 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.”
35. „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)
36. by Werner Vogel (Amazon)
„Not at Amazon.
You build it, you run it!”
45. 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
65. 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
67. 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