Microservices – die Architektur
für Agile-Entwicklung?
Christian Baranowski
Web - Application Mobile - Application
Application
Server
Presentation-LayerBusiness-LayerData-Layer
DatabaseFilesystem …
external Services
Feature
Product Owner
User Stories
Developers & Testers
Scrum Master
Agile Entwicklung und Software Architektur
Web - Application Mobile - Application
Application
Server
Presentation-LayerBusiness-LayerData-Layer
DatabaseFilesystem …
external Services
Product Owner
User Stories
Developers & Testers
Scrum Master
Agile Entwicklung und Software Architektur
Feature
Data Sprint Logic Sprint UI Sprint
Any organization that designs a system (defined
broadly) will produce a design whose structure is a
copy of the organization's communication structure.
-- Melvyn Conway, 1967
Agile Entwicklung und Software Architektur
Web - Application Mobile - Application
Application
Server
Presentation-LayerBusiness-LayerData-Layer
DatabaseFilesystem …
external Services
Feature
Product Owner
UX Team
Middelware Team
DB Team
User Stories
Component Teams
Conway's Law in action
Agile Entwicklung und Software Architektur
Component Teams
Web - Application Mobile - Application
Application
Server
Presentation-LayerBusiness-LayerData-Layer
DatabaseFilesystem …
external Services
Feature
Product Owner
User Stories
Agile Entwicklung und Software Architektur
Feature Feature
Epics
Feature Teams
… selbstorganisierte Teams
agile „FeaturesTeams“ sind…
… Teams die über längere Zeit
zusammen „Feature“ realisieren
agile „FeaturesTeams“ sind…
… Teams die alle notwendigen Arbeiten zur
Bereitstellung des „Feature“ verantwortet 

agile „FeaturesTeams“ sind…
… alle Teammitglieder zu 100%
einem „Feature“ Team zugeordnet
in agilen „FeaturesTeams“ sind…
Feature Teams and Agile
• Manifesto for Agile Software Development
• Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
• Business people and developers must work together daily
throughout the project.
• The most efficient and effective method of conveying
information to and within a development team is face-to-face
conversation.
• The best architectures, requirements, and designs emerge from
self-organizing teams.
…designs emerge from self-organizing teams
Feature Team A Feature Team B Feature Team C
Business
Expert
Business
Expert
Business
Expert
Java
MySQL
Tomcat
Java
OSGi
jQuery
NodeJS
MongoDB
AngularJS
Microservice Architektur
Feature Team A Feature Team B Feature Team C
http://martinfowler.com/articles/microservices.html
How big is a microservice?
The largest sizes reported
follow Amazon's notion of
the Two Pizza Team
Monolithische und Microservice Architekturen
Loose Kopplung der einzelnen Services in
Anwendungen ermöglicht die Aufteilung
der Software in mehrere getrennte
Projekte.
Eine Microservice Architektur
ermöglicht agile Lösungen durch die
richtige Technologie für das richtige
Probleme. Kurz gesagt Polyglotte
Lösungen und Plattformen!
Einzelne Services lassen sich getrennt
Erstellen und in Betrieb nehmen dies
führt zu einfachen und schnellen
Continuous Delivery Pipelines.
Die Teams sind für den gesamten
Lebenszyklus des Service verantwortlich
von der Entwicklung bis in den Betrieb.
Abstimmung zwischen den
Teams beschränkt sich auf die
Vereinbarung der Schnittstellen
und Schnittstellenverträge.
Abstimmung zwischen den Teams
gemeinsame Datenbank
Feature Team A
Feature Team B
Abstimmung zwischen den Teams
REST API (Service)
Feature Team A Feature Team B
Abstimmung zwischen den Teams
Link
Feature Team A
Feature Team B
Abstimmung zwischen den Teams
MQ
Messaging
Feature Team A Feature Team B
Microservices Baukasten von Netflix
Service A
Service B
Service B
Eureka
Zuul
Ribbon Client
Ribbon Client
https://github.com/Netflix/eureka
https://github.com/Netflix/zuul
https://github.com/Netflix/ribbon
Hystrix
https://github.com/Netflix/Hystrix
Microservice Skalierung
Z
axis
–
data
partitoning
Scale
by
splitting
sim
ilarthings
X axis – horizontal duplication
Scale by cloning
Y axis – functional
decomposition
Scaling by splitting different things.
Quelle: THE ART OF SCALABILITY, MARTIN L. ABBOTT & MICHAEL T. FISHER
Microservices eignet sich nicht für jede
Software Architektur. Der Architekturstil
richtet sich besonderes an große
Lösungen z.B. Internet Dienste mit
besonderen Anforderungen an Skalierung.
Eine Microservice Architektur
führt zusätzliche Komplexität in
eine Architektur ein, mit der
umgegangen werden muss.
Eine monolithische Architektur
ist einfach zu bauen und für
kleine Projekte geeignet.
Transaktion Management in einer
Microservices Architektur mit
unterschiedlichen Datenbanken
ist eine große Herausforderung.
Polyglotte Plattform können
auch zu einem Technologie
Dschungel führen.
Es gibt neben Microservices auch
andere Möglichkeiten z.B. Plugin
Architekturen wie OSGi die es
ermöglichen Teile getrennt zu bauen.
Microservices – die
Architektur für Agile-
Entwicklung?

Microservices – die Architektur für Agile-Entwicklung?

  • 1.
    Microservices – dieArchitektur für Agile-Entwicklung? Christian Baranowski
  • 2.
    Web - ApplicationMobile - Application Application Server Presentation-LayerBusiness-LayerData-Layer DatabaseFilesystem … external Services Feature Product Owner User Stories Developers & Testers Scrum Master Agile Entwicklung und Software Architektur
  • 3.
    Web - ApplicationMobile - Application Application Server Presentation-LayerBusiness-LayerData-Layer DatabaseFilesystem … external Services Product Owner User Stories Developers & Testers Scrum Master Agile Entwicklung und Software Architektur Feature Data Sprint Logic Sprint UI Sprint
  • 4.
    Any organization thatdesigns a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure. -- Melvyn Conway, 1967
  • 5.
    Agile Entwicklung undSoftware Architektur Web - Application Mobile - Application Application Server Presentation-LayerBusiness-LayerData-Layer DatabaseFilesystem … external Services Feature Product Owner UX Team Middelware Team DB Team User Stories Component Teams Conway's Law in action
  • 6.
    Agile Entwicklung undSoftware Architektur Component Teams
  • 7.
    Web - ApplicationMobile - Application Application Server Presentation-LayerBusiness-LayerData-Layer DatabaseFilesystem … external Services Feature Product Owner User Stories Agile Entwicklung und Software Architektur Feature Feature Epics Feature Teams
  • 8.
    … selbstorganisierte Teams agile„FeaturesTeams“ sind…
  • 9.
    … Teams dieüber längere Zeit zusammen „Feature“ realisieren agile „FeaturesTeams“ sind…
  • 10.
    … Teams diealle notwendigen Arbeiten zur Bereitstellung des „Feature“ verantwortet 
 agile „FeaturesTeams“ sind…
  • 11.
    … alle Teammitgliederzu 100% einem „Feature“ Team zugeordnet in agilen „FeaturesTeams“ sind…
  • 12.
    Feature Teams andAgile • Manifesto for Agile Software Development • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. • Business people and developers must work together daily throughout the project. • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. • The best architectures, requirements, and designs emerge from self-organizing teams.
  • 13.
    …designs emerge fromself-organizing teams Feature Team A Feature Team B Feature Team C Business Expert Business Expert Business Expert Java MySQL Tomcat Java OSGi jQuery NodeJS MongoDB AngularJS
  • 14.
    Microservice Architektur Feature TeamA Feature Team B Feature Team C http://martinfowler.com/articles/microservices.html How big is a microservice? The largest sizes reported follow Amazon's notion of the Two Pizza Team
  • 15.
  • 16.
    Loose Kopplung dereinzelnen Services in Anwendungen ermöglicht die Aufteilung der Software in mehrere getrennte Projekte.
  • 17.
    Eine Microservice Architektur ermöglichtagile Lösungen durch die richtige Technologie für das richtige Probleme. Kurz gesagt Polyglotte Lösungen und Plattformen!
  • 18.
    Einzelne Services lassensich getrennt Erstellen und in Betrieb nehmen dies führt zu einfachen und schnellen Continuous Delivery Pipelines.
  • 19.
    Die Teams sindfür den gesamten Lebenszyklus des Service verantwortlich von der Entwicklung bis in den Betrieb.
  • 20.
    Abstimmung zwischen den Teamsbeschränkt sich auf die Vereinbarung der Schnittstellen und Schnittstellenverträge.
  • 21.
    Abstimmung zwischen denTeams gemeinsame Datenbank Feature Team A Feature Team B
  • 22.
    Abstimmung zwischen denTeams REST API (Service) Feature Team A Feature Team B
  • 23.
    Abstimmung zwischen denTeams Link Feature Team A Feature Team B
  • 24.
    Abstimmung zwischen denTeams MQ Messaging Feature Team A Feature Team B
  • 25.
    Microservices Baukasten vonNetflix Service A Service B Service B Eureka Zuul Ribbon Client Ribbon Client https://github.com/Netflix/eureka https://github.com/Netflix/zuul https://github.com/Netflix/ribbon Hystrix https://github.com/Netflix/Hystrix
  • 26.
    Microservice Skalierung Z axis – data partitoning Scale by splitting sim ilarthings X axis– horizontal duplication Scale by cloning Y axis – functional decomposition Scaling by splitting different things. Quelle: THE ART OF SCALABILITY, MARTIN L. ABBOTT & MICHAEL T. FISHER
  • 27.
    Microservices eignet sichnicht für jede Software Architektur. Der Architekturstil richtet sich besonderes an große Lösungen z.B. Internet Dienste mit besonderen Anforderungen an Skalierung.
  • 28.
    Eine Microservice Architektur führtzusätzliche Komplexität in eine Architektur ein, mit der umgegangen werden muss.
  • 29.
    Eine monolithische Architektur isteinfach zu bauen und für kleine Projekte geeignet.
  • 30.
    Transaktion Management ineiner Microservices Architektur mit unterschiedlichen Datenbanken ist eine große Herausforderung.
  • 31.
    Polyglotte Plattform können auchzu einem Technologie Dschungel führen.
  • 32.
    Es gibt nebenMicroservices auch andere Möglichkeiten z.B. Plugin Architekturen wie OSGi die es ermöglichen Teile getrennt zu bauen.
  • 33.
    Microservices – die Architekturfür Agile- Entwicklung?