Um agile Entwicklung sinnvoll in einem Projekt zu ermöglichen, spielt die Architektur des Systems eine entscheidende Rolle. In einem agilen Projekt sind Architektureigenschaften wie Installierbarkeit und Prüfbarkeit entscheidend, da die Software in kurzen Abständen regelmäßig geliefert und im besten Fall dem Endnutzer zur Verfügung gestellt wird. Diese kurzen Releasezyklen gelingen nur durch ein hohes Maß an Automatisierung. Agile Projekte benötigen bereits passende Lösungsansätze in der Architektur, die es erlauben eine Continous Delivery Pipeline möglichst einfach zu realisieren; das Architekturmuster „Microservices“ versucht u.A. diesen Anforderungen gerecht zu werden.
Weitere Vorteile des Architekturmusters ergeben sich bei der Skalierung von Projekten. Durch den Einsatz von „Microservices“ können Projekte einfach aufgeteilt und parallel von mehreren Cross-Functional Teams mit agilen Methoden umgesetzt werden.
Die Idee eines Microservice ist nicht neu: das System wird in kleine, losgelöste Anwendungen (sog. Microservices) aufgeteilt. Diese Bausteine stellen Ihre Funktionalität als Service zur Verfügung. Der Vortrag gibt einen Praxiseinblick, auf welche Weise man vom Einsatz des Architekturmusters „Microservice“ in einem agilen Projektumfeld profitieren kann. Es wird aufgezeigt, wo sich in der Praxis Schwierigkeiten ergeben und wie man diesen vorbeugen kann. Der gesamte Vortrag gibt einen grundlegenden Einblick in die agile Entwicklung auf Basis einer Microservice-Architektur.
2. 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
3. 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
4. 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
5. 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
7. 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
9. … Teams die über längere Zeit
zusammen „Feature“ realisieren
agile „FeaturesTeams“ sind…
10. … Teams die alle notwendigen Arbeiten zur
Bereitstellung des „Feature“ verantwortet
agile „FeaturesTeams“ sind…
11. … alle Teammitglieder zu 100%
einem „Feature“ Team zugeordnet
in agilen „FeaturesTeams“ sind…
12. 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.
13. …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
14. 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
16. Loose Kopplung der einzelnen Services in
Anwendungen ermöglicht die Aufteilung
der Software in mehrere getrennte
Projekte.
17. Eine Microservice Architektur
ermöglicht agile Lösungen durch die
richtige Technologie für das richtige
Probleme. Kurz gesagt Polyglotte
Lösungen und Plattformen!
18. Einzelne Services lassen sich getrennt
Erstellen und in Betrieb nehmen dies
führt zu einfachen und schnellen
Continuous Delivery Pipelines.
19. Die Teams sind für den gesamten
Lebenszyklus des Service verantwortlich
von der Entwicklung bis in den Betrieb.
25. 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
27. 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.