Blog

APIs nach einheitlichen Standards bereitstellen

Viele Herausforderungen bei der Bereitstellung von APIs können durch DevOps-Konzepte gelöst werden.
26. August 2022
Thomas Lindegaard

Die Vorteile von APIOps mit Azure API Management

Ob zur internen Verwendung oder extern für Kunden und Lieferanten: Dienste über APIs verfügbar zu machen, ist gefragt. Damit Entwicklungsteams hier gut zusammenarbeiten können, braucht es aber eine konsistente Methode zur Entwicklung, Bereitstellung, Dokumentation und Wartung von APIs. Viele Herausforderungen bei der Bereitstellung von APIs können durch DevOps-Konzepte gelöst werden. Hier spielt die Automatisierung mit Einsatz von auf Infrastructure as Code fokussierten CI- und CD-Pipelines eine zentrale Rolle. Dieses Mindset für die API-Entwicklung wird APIOps genannt. Unsere Expert*innen haben ihre Erfahrungen mit diesem Ansatz zusammengefasst:

Die Vorteile des Azure API Managements

Für die Verwaltung von APIs hat Microsoft die Plattform Azure API Management (APIM) entwickelt. Sie soll bei der Bewältigung der Probleme helfen, die mit der Offenlegung von APIs einhergehen. Azure APIM kann z.B. bei Folgendem helfen:

  • Ein Portal mit einer Übersicht aller auf der Plattform bereitgestellten APIs
  • Cloud-agnostic: APIs, die von Azure APIM verfügbar gemacht werden, können von jedem Cloud-Dienst oder On-Premises gehostet werden
  • Unterstützung eines API-First-Ansatzes bei der Entwicklung
  • Monitoring & Logging von APIs
  • Sicherheitsstandards für alle APIs
  • Authentifizierung & Autorisierung

Das Sammeln verschiedener APIs in einer Azure APIM-Instanz ermöglicht eine standardisierte und konsistente Sicherheit über alle APIs hinweg. Diese Dinge müssen damit nur einmal implementiert werden. Über APIM lässt sich sicherstellen, dass alle APIs dieselben Standards haben –  im Gegensatz zu verschiedenen Teams, die sie auf unterschiedliche Weise implementieren.

Was ist Azure API Management?

Azure APIM besteht aus zwei Bereichen: Einem Developer Portal und einem Gateway.

Das Developer Portal: Das Das Developer Portal ist die Nutzeroberfläche, auf der die User von APIs neue APIs anzeigen, finden und abonnieren können. Es ermöglicht das direkte Testen von APIs im Browser. APIs können so eingerichtet werden, dass sie eine Authentifizierung verlangen, bevor sie verwendet werden können, oder je nach Zugriff von Usern nicht gefunden werden können.

Das Gateway: Das Gateway ist der Endpunkt, den alle API-Konsumenten auf der Plattform erreichen müssen. Es ruft die APIs von der Verwaltungsebene ab, wo möglicherweise Kriterien wie etwa Richtlinien definiert wurden. Über Richtlinien lassen sich z.B. die Drosselung und Validierung von Anfragen definieren. Das schützt beispielsweise davor, dass böswillige Anfragen zum Backend gelangen. Das Gateway leitet die Anfragen nach Prüfung an das Backend weiter.

Die Vorteile von APIOps

APIOps führt die Konzepte DevOps und GitOps zusammen und nutzt sie, um die Entwicklung, das Testen und die Bereitstellung von APIs zu erleichtern. Durch die Automatisierung und Nutzung von Infrastructure as Code (IaC)-Prinzipien ermöglicht APIOps:

  • Eine schnellere, einfachere und sicherere API-Bereitstellung
  • Mandantenfähigkeit auf einer APIM-Plattform
  • Eine Qualitätssteigerung von APIs durch automatisiertes Testen, durch Validierung, Linting- und Breaking-Change-Erkennung, Dokumentationsanforderungen etc.

Man kann diese Vorteile mit Azure APIM kombinieren. So erhält man APIs, die sowohl konform als auch funktional und leicht zu finden sind.

APIOps in Kombination mit Azure API Management

Um APIOps mit Azure APIM zu erreichen, müssen sowohl die Governance als auch die Infrastruktur kontrolliert werden. Dies geschieht durch die Verwendung von Version Control und IaC. Dafür müssen alle Änderungen an einer APIM-Instanz, etwa das Bereitstellen einer neuen API, mit Git und Pipelines in Azure DevOps abgewickelt werden, anstatt eine manuelle Änderung über das Azure-Portal vorzunehmen.

Alle Änderungen können über ein Pull-Reuqest an den Branch deployt werden, der die aktuelle Konfiguration der bereitgestellten API darstellt. Durch die Verwendung von Pull-Requests ist es möglich, Regeln zu konfigurieren, die befolgt werden müssen, bevor der Pull-Request abgeschlossen und zusammengeführt werden kann. Sobald die Regeln befolgt wurden, kann die Zusammenführung abgeschlossen werden, woraufhin die API automatisch über Azure DevOps bereitgestellt wird. Durch die Verwendung von IaC ist sichergestellt, dass immer dieselben Richtlinien, die richtigen Authentifizierungsmethoden usw. verwendet werden, wenn eine API veröffentlicht wird.

Die Bereitstellung der APIM-Plattform selbst erfolgt ebenfalls über IaC, was das Betreiben mehrerer Umgebungen erleichtert, z. B. für Developer Testing, Consumer Testing und Produktionsumgebungen. Die Deployments in den verschiedenen Umgebungen können über verschiedene Branches und Pipelines verwaltet werden. Das macht den Entwicklungsprozess für die API-Entwickler schnell und einfach.

APIOps-Mandantenfähigkeit mit Azure API Management

Azure APIM ist nicht auf Mandantenfähigkeit ausgelegt. Daher ist es wahrscheinlicher, dass Sie ein APIM pro Team haben, was schnell teuer wird, da APIM eine teure Ressource ist. Microsoft hat einen eigenen Vorschlag gemacht, wie ein solches mandantenfähiges System aussehen könnte – zu sehen im obigen Bild. Dieser Ansatz basiert darauf, dass Entwickler eine API-Vorlage basierend auf ihrer API-Spezifikation oder ihrer eigenen APIM-Instanz erstellen können.

Bei Skaylink verwenden unsere Expert*innen einen etwas anderen Ansatz: Dieser Ansatz besteht darin, eine höhere Abstraktionsebene zu erreichen. Auf diese Weise müssen unsere Entwickler*innen Richtlinien und API-Ressourcenschemata nicht verstehen oder erstellen, sondern lediglich eine API-Spezifikation definieren. Gleichzeitig können sie so sofort einsatzbereite Funktionen anbieten, um Einheitlichkeit und Kontrolle darüber zu gewährleisten, wie eine API aussieht.

Diese Abstraktion ermöglicht es, die APIM-Instanz und die APIs getrennt von ihren jeweiligen Repositories bereitzustellen. Auf diese Weise haben Entwickler*innen volle Autonomie innerhalb der Regeln und Richtlinien der Organisation. Alle Repositories werden auf derselben APIM-Instanz bereitgestellt, wobei IaC, Versionskontrolle und die eigenen Regeln verwendet werden. So können alle APIs auf die gleiche Weise bereitgestellt werden.

Fazit

Wer es gewohnt ist, nach den DevOps-Prinzipien zu arbeiten, kann die Methoden auf APIs übertragen und vorteilhaft mit Azure API Management kombinieren. Auf diese Weise erreicht man ganz einfach die Ziellinie und profitiert von allen Vorteilen von APIOps, egal mit welcher Art von Organisation zusammengearbeitet wird. Dabei muss jedoch besonders darauf geachtet werden, wie man Herausforderungen eines Multi-Tenants begegnet, da dies einen großen Einfluss auf die Kosten der Lösung hat.

Dieser Beitrag wurde uns freundlicherweise von der Skaylink Tochter cVation zur Verfügung gestellt. Den Originalbeitrag finden Sie hier.