Problembeschreibung
Eine Microservice-Architektur verfolgt den Ansatz, ein IT-System (in der Regel eine webbasierte Anwendung) als Suite von weitgehend unabhängigen vertikalen Modulen aufzubauen. Diese können (weitgehend) unabhängig voneinander deployed und betrieben werden und benötigen nur ein Minimum an zentraler Kommunikationsinfrastruktur. Kommunikation zwischen Front- und Backend erfolgt über leichtgewichtige Protokolle wie etwa REST.
Dieser Architekturstil erlaubt es, Anwendungen nach Geschäftsfähigkeiten zu segmentieren, die jeweils mit einem Höchstmaß an Unabhängigkeit entwickelt und gewartet werden können. Das ist insbesondere bei Webportalen mit seinen schnellen Update-Zyklen ein deutlicher Vorteil. Beispielsweise kann so der Produktkatalog eines Webshops und die Zahlungsabwicklung durch unabhängige Microservices realisiert sein, so dass eine explorative Weiterentwicklung des Produktkatalogs den operativen Zahlungsverkehr nur minimal gefährden kann.
Projektbeschreibung
Ziel des Projekts ist es, für eine Beispielanwendung (Buchauskunft mit Bewertungsmöglichkeit und Suche) eine Microservice-Architektur zu konzipieren und umzusetzen bzw. weiterzuentwickeln. Dabei sollen die Stärken, Schwächen, Risiken und Grenzen dieses Ansatzes im Projektreport evaluiert werden.
Die genaue Aufgabenstellung ist hier dokumentiert.
Die Entwicklung erfolgt mittels jeweils geeigneter Technologie-Stacks (gemäß des Microservice-Ansatzes hat das verantwortliche Team weitgehende Freiheiten in der Technologiewahl). Diese Technologien werden wir gemeinsam in einem Kickoff-Workshop festlegen.
- Kandidat 1 für serverseitige Technologie ist das von dem Projektpartner Capgemini vorangetriebene Open-Source-Projekt Open Application Standard Platform (OASP, https://oasp.github.io/). OASP hat es sich zur Aufgabe gemacht, bewährte Open-Source-Frameworks zu einem „Best-of-Breed“-Anwendungspaket zu bündeln. Mit Hilfe von OASP können Softwareprojekte für kostensensitive Kunden (z.B. öffentliche Auftraggeber) ohne Zeitverlust durch die sonst übliche „Technologie-Findungsphase“ realisiert werden. Außerdem vermeidet man technologischen Wildwuchs, da OASP eine in sich konsistente Basisarchitektur darstellt. Zufallsarchitektur (Accidental Architecture) wird so zumindest bei der Technologieplattform vermieden.
- Kandidat 2 für serverseitige Technologie ist Java EE 7. Ein gewünschtes Ergebnis des Projekts ist in diesem Fall ein Vergleich dieser Technologien in Form eines „Wettstreit“ zwischen den Teams bei der Umsetzung von Mikroservices mit OASP respektive Java EE. Java EE ist bei Individualentwicklungen weiterhin verbreitet und durch die Vereinfachungen aus Java EE 6 / 7 effizient einsetzbar.
Clientseitig werden wir in diesem Projekt das Google-Framework AngularJS verwenden.
Projektmethodik
Die Umsetzung des Projekts sowie die Erstellung des Evaluationsberichts wird nach agiler Methodik (Scrum mit Elementen aus XP) erfolgen. Die agilen Teamprozesse werden gemäß Typ-A-Definition von Prof. Stumpf und seinem Team methodisch begleitet. Die agilen Teams wählen jeweils einen Scrum Master und einen Product Owner. Das Projekt wird in (vermutlich vierwöchige) Sprints gegliedert. Ein Vertreter von Capgemini wird bei den Entwicklungs-Demos am jeden Sprints als Kunde zugegen sein.
Nach jetziger Planung wird es eine Unterstützung von Seiten Capgeminis in Form eines 1-tägigen „Scrum Kickstart“-Seminars geben, mit der Option zur Zertifizierung zum Professional Scrum Master. Zusätzlich wird Prof. Bente während des Projekts als Ansprechpartner in Fragen der agilen Methodik verfügbar sein.
Technologisch werden wir den Entwicklungsprozess durch eine professionelle Umsetzung von Continuous Integration mittels Jenkins, Maven und Docker begleiten. Die Qualitätssicherung erfolgt durch automatische Tests.
Learning Outcomes
- Praxiserfahrung mit Microservice-Architekturen und deren Umsetzung in webbasierter Software-Entwicklung
- Methodik zur systematischen Evaluierung eines Architekturstils
- Erfahrungen mit Erstellung von AngularJS-basierten Webanwendungen
- Erfahrung mit agiler Entwicklungsmethodik in einem realistischen Softwareprojekt
- Expertise in Kommunikation und Dokumentation
- Teamwork- und Projektmanagement-Erfahrung
Voraussetzungen
- Programmierkenntnisse
- Interesse an professioneller Software-Entwicklung mit Java und/oder JavaScript
- Interesse an der Softwarearchitektur sowie Gestaltung von Nutzeroberflächen
- Interesse an komplexen Aufgabenstellungen und methodischem Vorgehen
- Bereitschaft, Teamarbeit tatsächlich physisch gemeinsam (im gleichen Raum, „collocated“) durchzuführen, um zu einem agilen Team zu reifen
- Bereitschaft, gemäß agiler Vorgehensweise durch geeignete Tools Transparenz über den eigenen Beitrag zur Gruppenleistung zuzulassen
Externe Projektpartner
Capgemini, Niederlassung Köln