Thilo Frotscher Freelancer

Web-APIs eigenen sich hervorragend, um Integrationslösungen umzusetzen, sowohl für die Integration unterschiedlicher Systeme als auch für Kommunikation innerhalb ein und desselben Systems, etwa im Fall einer Microservices-Architektur.

Web-APIs erfreuen sich großer Beliebtheit, bieten sie doch eine scheinbar perfekte Lösung zur Systemintegration. Jedoch gibt es auch einige Fallstricke, die unbedingt beachtet werden sollten. So führen Web-APIs zu einer recht engen Kopplung. Deshalb wird unter anderem eine Strategie für den Umgang mit vorübergehend nicht verfügbaren Kommunikationspartnern benötigt. Weitere Aspekte sind die fehlende Zuverlässigkeit von HTTP oder auch die Tatsache, dass SSL in manchen Produktivumgebungen keine ausreichende Sicherheit bietet.

Web-APIs sind aus der Softwareentwicklung aktuell nicht mehr wegzudenken. Zahllose Unternehmen bieten auf diese Weise den Zugriff auf ihre Daten und Dienste an, und Behörden stellen zunehmend große Informationsmengen zur Verfügung. Aber auch zur Systemintegration innerhalb eines Unternehmens haben sich Web-APIs inzwischen ihren festen Platz gesichert. Und schließlich haben Web-APIs auch durch den Trend zu Microservices-Architekturen einen weiteren Schub erfahren. Denn auch hier gilt es, eine Kommunikation zwischen den einzelnen Services zu implementieren.

Dabei ist der Begriff Web-API an sich gar nicht so leicht zu greifen. Wie so oft, gibt es durchaus unterschiedliche Definitionen und Ansichten, was genau ein Web-API ist, wodurch es sich auszeichnet oder welche Regeln es einhalten sollte. Diese Diskussion soll hier jedoch nicht geführt werden. Im Kontext des Artikels soll der Begriff Web-API eher allgemein definiert sein als eine Schnittstelle auf Basis von Webtechnologien, insbesondere HTTP.

Solche Schnittstellen lassen sich mit aktuellen Frameworks glücklicherweise recht schnell implementieren. Ganz gleich, ob man Spring oder Java EE einsetzt oder vielleicht eines der vielen anderen verfügbaren Frameworks. In aller Regel können Entwickler schon nach recht kurzer Zeit einen ersten Prototyp des neuen Web-API auf einem Testserver bereitstellen. Diese Mächtigkeit heutiger Frameworks ist nicht hoch genug zu bewerten. Im Vergleich zu früheren Zeiten müssen Entwickler heute deutlich weniger Code schreiben, um zum gleichen Ergebnis zu kommen. Dies ermöglicht nicht nur ein agileres Vorgehen, sondern bedeutet auch, dass entsprechend mehr Zeit bleibt, um sich auf die Fachlichkeit zu konzentrieren.

Es besteht jedoch gleichzeitig die Gefahr, dass die Entwicklung der Schnittstelle dadurch unterschätzt wird. Denn es scheint nur auf den ersten Blick eine leichte Aufgabe zu sein, ein gutes Web-API zu erstellen. Doch je länger ein Projekt andauert, je mehr Anforderungen hinzukommen, je besser die Anwendung getestet und je länger sie betrieben wird, desto mehr zeigt sich, dass viele Aspekte bedacht werden müssen. Und dabei lauern einige Fallen. Denn auch wenn Frameworks viele Dinge erleichtern und verbergen, mindestens eine Komplexität bleibt auf jeden Fall erhalten: die Herausforderungen, die verteilte Systeme mit sich bringen. Hierzu zählen unter anderem Kopplung, Fehlerbehandlung, Zuverlässigkeit, Wiederholbarkeit und Sicherheit.

Vorsicht bei enger Kopplung

Zunächst ist festzustellen, dass eine auf HTTP basierende Kommunikation zu einer recht engen Kopplung zwischen den Kommunikationspartnern führt. Diese resultiert aus der direkten Punkt-zu-Punkt-Verbindung zwischen Clients und dem Anwendungsendpunkt, der das Web-API bereitstellt. So ist zwingend erforderlich, dass beide Kommunikationspartner gleichzeitig gestartet und verfügbar sind. Sie kommunizieren synchron und müssen sich gegenseitig kennen. Vor diesem Hintergrund ist die häufig geäußerte Einschätzung, REST-Schnittstellen führten zu einer losen Kopplung, zumindest kritisch zu hinterfragen. Denn Kopplung kann in verschiedenen Varianten auftreten. Und während sich für Web-APIs in manchen Kriterien sicherlich eine eher lose Kopplung feststellen lässt, sind zumindest die genannten Charakteristiken eindeutige Anzeichen für eine enge Kopplung.

Gleichzeitig ist festzuhalten, dass eine enge Kopplung zwischen Kommunikationspartnern nicht automatisch etwas Schlechtes ist. Im Gegenteil, sie hat durchaus auch positive Aspekte. Allerdings bringt sie eben auch verschiedene Nachteile mit sich, die bei der Entwicklung von Web-APIs bedacht werden sollten. Beispielsweise ist eine Strategie notwendig für solche Fälle, in denen der Kommunikationspartner vorübergehend nicht verfügbar ist oder wenn asynchrone Aufgaben mit synchroner Kommunikation angestoßen und verfolgt werden sollen.

Eine besonders problematische Situation kann entstehen, wenn eine größere Anzahl von Systemen eng miteinander gekoppelt wird. Wenn also beispielsweise alle diese Systeme über Punkt-zu-Punkt-Verbindungen miteinander kommunizieren. In einem Systemverbund resultieren Requests an ein System oft in Folge-Requests an weitere Systeme; und diese möglicherweise wiederum in weiteren Requests innerhalb des Verbunds. Mit der Zeit entsteht so ein kaum noch zu überblickender und beherrschender Abhängigkeitsgraph. Gerade bei enger Kopplung können sich lokale Probleme eines Systems recht schnell auf zahlreiche andere Systeme auswirken. Der Systemverbund wird zu einem fragilen Gebilde. Eine solche Entwicklung geschieht meist schleichend und über einen längeren Zeitraum. Es ist daher wichtig, sich dieser Problematik bewusst zu sein, um von Beginn an Gegenmaßnahmen ergreifen zu können. Beispielsweise können zumindest punktuell alternative Kommunikationslösungen zum Einsatz kommen, beispielsweise Messaging. In jedem Fall aber sollte der Resilienz der einzelnen Systeme hohe Beachtung zukommen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 4.17 - "APIs"

Alle Infos zum Heft
579777421Fallstricke beim Design von Web-APIs
X
- Gib Deinen Standort ein -
- or -