Programmierschnittstellen-Projekte realisieren Backend-API mit Azure API Management

Von Dipl. -Ing. Thomas Drilling 6 min Lesedauer

Anbieter zum Thema

Das Azure API Management versteht sich als hybride Multi-Cloud-Managementplattform für APIs in allen denkbaren Umgebungen. Da es sich um eine Plattform-as-a-Service handelt, kümmert sie sich um den vollständigen Lebenszyklus der Programmierschnittstellen.

Die Architektur von Azure API Management.
Die Architektur von Azure API Management.
(Bild: Microsoft)

Die Zeiten wandeln sich. Im Spannungsfeld zwischen Software- und Systemarchitektur hat es über die Jahrzehnte viele Strömungen und Ideen von Enterprise Service Bus bis serviceorientierte Architektur (SOA) gegeben. Im Kern ging es dabei immer um die Frage, ob die „Intelligenz“ am Endpunkt oder im Bus unterzubringen ist.

Ganz generell verlagert sich beim Migrieren von Anwendungen in die Cloud ein Großteil der Komplexität, die bei klassischen Anwendungsdesign in der Software-Architektur steckte, in die Systemarchitektur. Dazu gehören Messaging-Lösungen ebenso wie APIs. Zu letzteren gehören mitnichten nur RESTful-APIs, auch wenn diese die Cloud-Welt dominieren.

Als PaaS, also Platform-as-a-Service, kann das Azure API-Gateway dabei helfen, die Komplexität der Back-End-Architektur von API-Konsumenten zu abstrahieren. Die Plattform dient dazu, Dienste sicher bereitzustellen, egal ob diese in Azure oder außerhalb gehostet sind. Außerdem unterstützt der Dienst die User beim „Beobachten“, Schützen oder Beschleunigen ihrer APIs sowie dabei, die API-Nutzung durch interne oder externe Nutzer zu überwachen.

Use Cases für API Management

Zu den populärsten Anwendungsfällen dieses Dienstes gehört zum Beispiel die B2B-Integration: stehen APIs Partnern und Kunden zur Verfügung, erleichtern sie die Integration von Geschäftsprozessen oder den Austausch von Daten. APIs eliminieren nämlich den Mehraufwand, der üblicherweise mit einer Point-to-Point-Integration einhergeht.

Zur Skalierung der B2B-Integrationen tragen insbesondere die API-Gateway-Funktionen Self-Service-Ermittlung und Self-Service-Onboarding bei. Auch die API-orientierte App-Integration ist ein Parade-Use-Case – schließlich ist eine API nicht anderes, als ein einfach einsetzbares, selbstbeschreibendes und standardisiertes Verfahren, um Anwendungen, Daten, Services oder Prozesse verfügbar zu machen und den Zugriff darauf zu verwalten.

Häufig kommen APIs auch zum Einsatz, um Legacy-Backends zu abstrahieren bzw. zu modernisieren, und sie mit Hilfe neuer Cloud-Dienste modernen Anwendungen zugänglich zu machen. So helfen APIs dabei, Innovationen zu testen bzw. voranzutreiben – ohne die Risiken und Verzögerungen, welche letztlich die Kosten treiben, die mit einer Migration einhergehen würden.

APIs kommen auch zum Einsatz, um Benutzerumgebungen wie Web-Anwendungen, mobile Anwendungen und IoT-Anwendungen zu realisieren: Schließlich lassen sich APIs problemlos wiederverwenden, was Entwicklung und Amortisation beschleunigt.

Komponenten von API Management

Das Microsoft Azure API Management stellt alle erforderlichen Funktionalitäten zur Verfügung, um erfolgreich ein API-Programm implementieren zu können, bei dem jede API aus einer oder mehreren Operationen besteht und zu einem oder mehreren „Produkten“ hinzugefügt werden kann.

User abonnieren dann einfach das „Produkt“, das diese API enthält und können dann Operationen in der der API aufrufen, natürlich in Abhängigkeit der jeweiligen Nutzungsrichtlinien. Im Detail besteht das API-Management aus dem eigentlichen API-Gateway, der Verwaltungsoberfläche im Azure-Portal für das Erstellen und Verwalten von APIs und einem Entwickler-Portal.

Die Architektur von Azure API Management.
Die Architektur von Azure API Management.
(Bild: Microsoft)

Das API-Gateway als zentraler Dienst dient dem Akzeptieren und Weiterleiten von API-Aufrufen an die jeweiligen Backends, dem Überprüfen von API-Keys, JWTs, Zertifikaten oder anderen Anmeldeinformationen sowie der Erzwingung von Nutzungskontingenten oder der Drosselung der Übertragungsraten. Es erlaubt zudem ein dynamisches Transformieren von APIs ohne Code-Änderungen, das Zwischenspeichern von Backend-Antworten sowie das Protokollierung der Metadaten jedes Aufrufs zwecks weitergehender Analyse.

Im Azure-Portal-Blade von API-Management lassen sich API-Schemas definieren (oder vorhandene importieren), APIs zu „Produkten“ bündeln, Richtlinien konfigurieren, Transformationen oder Kontingente sowie die API-Nutzung überwachen. Außerdem dient das Azure-Portal der Benutzerverwaltung.

Entwickler und Entwicklerinnen verwenden das Developer-Portal zum Testen ihrer APIs mit der interaktiven Konsole, zum Erstellen von Konten und Anfordern von API-Schlüsseln sowie zur Analyse der eigenen Nutzung. Außerdem stellt das Portal die API-Dokumentation zur Verfügung.

Begrifflichkeiten

Das API-Management stellt so genannte „Produkte“ zur Verfügung. Jedes dieser Produkte enthält eine oder mehrere APIs mit Titel, Beschreibung und Nutzungsbedingungen, die offen oder geschützt sein können. Über „Gruppen“ (Administratoren, Entwickler, Gäste) wird die Sichtbarkeit von Produkten für verschiedene User realisiert.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

In einer API-Management- oder kurz APIM-Dienstinstanz ist ein „Entwickler“ ein Benutzerkonto. Dies wird von einem Administrator erstellt, entweder unmittelbar oder in Form einer Einladung, wobei jeder Developer Mitglied in einer oder mehreren der o. a. Gruppen ist und Produkte abonnieren kann, in den entsprechenden Gruppen sichtbar sind.

Beispiel-Szenario

Ein eigenes Szenario kann aus mehreren Front-End- und Back-End-Diensten bestehen. Dabei stellen sich dann meist Fragen: Wie erfährt z. B. der Client, welche Endpunkte er aufrufen muss? Was soll beim Einführen neuer oder Ändern vorhandener Dienste passieren? Wie gehen Dienste mit einer SSL-Beendigung um oder wie ist die Authentifizierung auszuhandeln? Hier kommt dann ein API-Gateway ins Spiel.

Beispiel-Szenario für das API-Management.
Beispiel-Szenario für das API-Management.
(Bild: Microsoft)

Allgemein kann ein API-Gateway als Reverse Proxy zwischen Clients und Diensten agieren. Es leitet Anforderungen von Clients an Dienste weiter und kann verschiedene übergreifende Aufgaben wie Authentifizierung, SSL-Terminierung oder eine Ratenbegrenzung zur Verfügung stellen.

Ohne API-Gateway müssten Clients Anforderungen immer direkt an die jeweiligen Front-End-Dienste senden. Dies kann mitunter zu zahlreichen Problemen führen, z. B. zu komplexerem Client-Code oder zu einer direkten Kopplung zwischen Client und Backend, bei der der Client Informationen zur Aufspaltung der einzelnen Dienste braucht. Dies erschwert die Verwaltung oder bedingt, dass für einen einzelnen Vorgang möglicherweise mehrere Dienste aufgerufen werden müssten, was wiederrum zu zusätzlichen Network Roundtrips zwischen Client und Server führen würde.

Jeder öffentliche Dienst müsste dann auch Aspekte wie Authentifizierung, SSL sowie Ratenbegrenzung behandeln und ein Client-freundliches Protokoll wie HTTP oder WebSocket zur Verfügung stellen. Dies wiederrum schränkt die in Frage kommenden Kommunikationsprotokolle ein. Zudem stellen öffentliche Endpunkte stets ein potenzielles Angriffsziel dar.

Erstellen eine Backend-API

Im folgenden abschließenden Beispiel wollen wir nun eine einfache Backend-API über das Azure-Portal bereitstellen. Ein Azure-Account wird hierfür vorausgesetzt.

Anmelden beim Azure-Account in der Azure CLI und Festlegen benötigter Variablen.
Anmelden beim Azure-Account in der Azure CLI und Festlegen benötigter Variablen.
(Bild: Drilling / Microsoft)

Zum Erstellen einer ersten API-Management-Instanz verwenden wir die Azure-CLI, konkret den Befehl „az apim create“. Dazu legen wir zuerst einige Variablen fest, neben Location und E-Mail-Adresse vor allem den Namen der API:

myApiName=dri-apim-$RANDOM
mylocation=eastus
myemail=<Ihre E-Mail>

Erstellen einer neuen APIM-Instanz in einer neuen Ressourcengruppe.
Erstellen einer neuen APIM-Instanz in einer neuen Ressourcengruppe.
(Bild: Drilling / Microsoft)

Dann erstellen wir eine passende Ressourcen-Gruppe und schließlich die APIM-Instanz im „Consumption“-Plan. Für diesen Beispiel importieren wir nun eine Back-End-API mit OpenAPI-Spezifikation im Azure Portal.

Das API Management im Azure-Portal mit einen großen Katalog an Vorlagen. Wir verwenden „OpenAPI“.
Das API Management im Azure-Portal mit einen großen Katalog an Vorlagen. Wir verwenden „OpenAPI“.
(Bild: Drilling / Microsoft)

Hierfür suchen wir im Azure Portal nach „API Management-Dienste“, wählen die erstellte API Management-Instanz aus und navigieren dort zum Eintrag APIs. Nun klicken wir im Abschnitt „Create from definition“ auf „OpenAPI“, setzen den Sichtbarkeits-Schieberegler auf „Full“ und füllen den Dialog „Create from OpenAPI specification“ wie folgt aus.

Eine offene Konferenz-API auf Basis der OpenAI/Swagger-Spezifikationen.
Eine offene Konferenz-API auf Basis der OpenAI/Swagger-Spezifikationen.
(Bild: Drilling / Microsoft)

Der Eintrag unter OpenAPI-Spezifikationen lautet: https://conferenceapi.azurewebsites.net/, eine auf Swagger basierende Beispiel-OpenAPI-Spezifikation für ein Konferenzverwaltungssystem. Anzeigename, Name und Beschreibung lassen sich nach Wunsch ausfüllen, um dann auf „Create“ zu klicken.

Prüfen der Einstellungen für die Backend-API.
Prüfen der Einstellungen für die Backend-API.
(Bild: Drilling / Microsoft)

Damit wird die neue Konferenz-API erstellt und wir müssen nun ein Backend angeben. Hierfür navigieren wir im Hauptfenster der API auf der rechten Seite zu „Settings“ und prüfen, dass bei „Web service URL“ der Wert https://conferenceapi.azurewebsites.net/ eingetragen wurde. Das Häkchen im Abschnitt „Subscription“ bei „Subscription required“ entfernen wir, um die Demo nicht unnötig zu erschweren.

Auswahl eines API-Aufrufs zum Testen direkt im Azure-Portal.
Auswahl eines API-Aufrufs zum Testen direkt im Azure-Portal.
(Bild: Drilling / Microsoft)

Nun lässt sich die API prüfen, ein Klick auf „Test“ genügt. Anschließend können wir uns einen beliebigen Aufruf der API wählen, z. B. „GetSessions“. Auf der rechten Seiten finden sich beispielsweise diverse Abfrageparameter wie „speakername“ sowie weiter unten den „Request URL“ und der „Http-Request“. Ein ggf. erforderlicher Ocp-Apim-Subscription-Key, der dieser API zugeordnet ist, würde automatisch ausgefüllt.

Ein erfolgreicher Test-Aufruf.
Ein erfolgreicher Test-Aufruf.
(Bild: Drilling / Microsoft)

Ist alles okay, können wir auf „Send“ klicken und sollten im positiven Fall einen HTTP-Response mit dem Status Code „200“ und der Liste der gewünschten Speaker im HTTP1.1-Format erhalten.

(ID:49318419)