Unabhängig vom Architekturstil besteht jedes IT-System aus Diensten. Ein Microservice mit einem REST-API ist ein ein Dienst. In einem reaktiven IT-System gibt es Dienste, die Nachrichtenobjekte produzieren oder konsumieren. Auch in monolithischen IT-Systemen mit klassischen Applikationsservern lassen sich Dienste identifizieren. Der Baustein Service ist ein Artefakt der Systemstruktur, mit dem wir solche Artefakte der Software-Entwicklung dokumentieren. Dabei steht der fachliche Nutzen des Dienstes im Vordergrund. Der Titel des Bausteins gibt einem Dienst einen eindeutigen Namen.
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. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.
— —Martin Fowler
Agile Software-Entwicklung harmoniert sehr gut mit dem Konzept der Microservices. Spricht man von einem Microservice, dann meint man damit einen bestimmten Architekturstil. Das bedeutet, es gibt mehr als einen Weg, ein Microservice zu programmieren. Der Architekturstil bestimmt auch, wie Microservices miteinander verbunden sind, um Daten auszutauschen. Um dem Team in der agilen Software-Entwicklung den maximalen Spielraum für Experimente und kontinuierliche Verbesserungen der Code-Basis (engl. refactoring) zu geben, verwendet cards+ den Begriff Dienst als Abstraktion. Ein Dienst kann daher in der einfachsten Form ein einzelnes Microservice sein. Es macht aber aus Sicht einer robusten Produktdokumentation sehr häufig Sinn, eine Gruppe von Microservices zusammenzufassen, die eine hohe Kohäsion haben.
Autoren wollen im Baustein Service nur das dokumentieren, was Entwickler nicht durch lesbare Teile vom Code oder code-nahe Artefakte bereits ausreichend gut dokumentiert haben. Mit Swagger bzw. OpenAPI kann beispielsweise ein auf REST basierender Dienst spezifiziert werden, mit WSDL ein auf SOAP basierender Dienst. Autoren beschreiben im Wiki nur, was sich gar nicht oder sehr schwer aus dem Code herauslesen lässt. Sie erläutern Code ausschließlich dort, wo es notwendig ist.
Projektmanagement
Der Produktverantwortliche hat mit dem Baustein Service die Möglichkeit, frühzeitig einen wichtigen Dienst als Entwurf zu erfassen, wenn es für das Verständnis der Anwendungsdomäne hilfreich ist. Er macht das in Abstimmung mit dem Team.
Im Steckbrief des Bausteins befindet sich eine Liste der geplanten Technologien für die Implementierung des Dienstes. Das ist eine sehr wertvolle Information für das Architekturmanagement, um Themen wie Lizenzkosten, technische Unterstützung vom Hersteller oder unternehmensweite Vorgaben rechtzeitig zu behandeln.
Anforderungsanalyse
Der Produktverantwortliche hat mit dem Baustein Service die Möglichkeit, alle ein- und ausgehenden Daten und das Verhalten eines Dienstes zu beschreiben, die wichtig für das Verständnis der Fähigkeiten der Software sind.
Besonders bei Diensten, die Schnittstellen des IT-Systems zu anderen IT-Systemen realisieren, besteht oft die Notwendigkeit, frühzeitig Datenstrukturen, Protokolle und nicht funktionale Aspekte wie Sicherheit oder Robustheit zu fixieren. Er macht das in Abstimmung mit dem Team.
Produktentwicklung
Der Baustein Service ist für Leser (z.B. Entwickler oder Tester) der zentrale Einstieg, um sich über die Bedeutung eines Dienstes zu informieren. Der Überblick im Baustein muss jeden Leser in die Lage versetzen, den Dienst fachlich einzuordnen. Über die Verknüpfung der ein- und ausgehenden Daten mit den Bausteinen Entity oder Event bekommt ein Leser Informationen zu Objekten, die eine wichtige Rolle in der Datenverarbeitung und -speicherung spielen. In der im Baustein veröffentlichten Spezifikation finden Leser alle Details zur Implementierung des Dienstes.
Gemäß Prinzip COD gilt der Titel des Bausteins und die Namen der beschriebenen Eigenschaften als Vorgabe für den Namen der Implementierungsklasse eines Dienstes. Mit dieser einfach umzusetzenden Regel muss kein Autor mehr eine spezielle Dokumentation im Wiki schreiben, um einen Dienst mit der technischen Lösung zu verknüpfen. Der Titel des Bausteins reicht als Einstieg in die Implementierung.
Das Wiki.
Ein Erfolgsfaktor.
-
Neustart auf „grüner Wiese“.
Nehmen Sie an, Sie werden beauftragt, ein völlig neues Software-Produkt zu entwickeln. Sie bekommen die Chance, eine individuelle Lösung mit einer agilen Projektorganisation auf der „grünen Wiese” zu entwerfen.
Jetzt lesen -
Zurück auf Anfang.
Stellen Sie sich ein Szenario vor, in dem ein Auftraggeber ein individuell entwickeltes IT-System durch eine Lösung mit einem Standardprodukt ersetzen will. Sie bekommen den Auftrag, die Migration zu planen und umzusetzen.
Jetzt lesen -
Leistungsbeschreibung für den Auftraggeber
Aufgrund der noch immer fehlenden Rechtssicherheit bei Gewerken mit agiler Software-Entwicklung besteht regelmäßig der Bedarf an einem Lastenheft. Arbeiten Auftraggeber und Produktverantwortlicher konsequent mit cards+, dann besteht die Möglichkeit, die Leistungsbeschreibung für das Lastenheft zu großen Teilen aus dem Wiki zu exportieren.
Jetzt lesen -
Schnittstellenbeschreibung für Partnersysteme
Schnittstellenbeschreibungen sind alternativlos in einer komplexen IT-Systemlandschaft mit vielen unabhängigen Partnersystemen aus verschiedenen Organisationen eines Unternehmens. Ein Produktverantwortlicher darf sich trotzdem die Frage stellen, wie umfangreich so ein Dokument sein muss. Mit cards+ kann er das Wiki zu seinem Vorteil nutzen.
Jetzt lesen