Microservices – die Architektur für Agile-Entwicklung?
Christian Baranowski
Web - Application Mobile - Application
ApplicationServer
Presentation - LayerB
usiness - LayerD
ata - LayerDatabaseFilesystem …
external Services
Feature
Product Owner
User Stories
Developers & Testers
Scrum Master
Agile Entwicklung und Software Architektur
Web - Application Mobile - Application
ApplicationServer
Presentation - LayerB
usiness - LayerD
ata - LayerDatabaseFilesystem …
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
ApplicationServer
Presentation - LayerB
usiness - LayerD
ata - LayerDatabaseFilesystem …
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
ApplicationServer
Presentation - LayerB
usiness - LayerD
ata - LayerDatabaseFilesystem …
external Services
Feature
Product Owner
User Stories
Agile Entwicklung und Software Architektur
Feature Feature
Epics
Feature Teams
… selbstorganisierte Teams
agile „Features Teams“ sind…
… Teams die über längere Zeit zusammen „Feature“ realisieren
agile „Features Teams“ sind…
… Teams die alle notwendigen Arbeiten zur Bereitstellung des „Feature“ verantwortet
agile „Features Teams“ sind…
… alle Teammitglieder zu 100% einem „Feature“ Team zugeordnet
in agilen „Features Teams“ 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
JavaMySQL
TomcatJava
OSGi
jQueryNodeJS
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 AService B
Service B
Eureka
ZuulRibbon 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
– dat
a par
titonin
g
Scale
by sp
litting
simila
r thing
s
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?