Anti-Pattern: Ressourcen ohne SCM (Source Control Management, Quellkontroll-Management) verwalten

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

Apigee stellt viele Ressourcentypen bereit. Jeder davon dient einem anderen Zweck. Bestimmte Ressourcen können nur von Nutzern mit den erforderlichen Rollen und Berechtigungen über die Apigee-UI, Apigee-APIs oder Tools, die APIs verwenden konfiguriert werden (d. h. erstellt, aktualisiert und/oder gelöscht). Beispiel: Nur Organisationsadministratoren, die zu einer bestimmten Organisation gehören, können diese Ressourcen konfigurieren. Das bedeutet, dass diese Ressourcen nicht von Endnutzern über Entwicklerportale oder auf irgendeine andere Weise konfiguriert werden können. Zu solchen Ressourcen gehören:

  • API-Proxys
  • Freigegebene Abläufe
  • API-Produkte
  • Caches
  • KVMs
  • Schlüsselspeicher und Truststores
  • Virtuelle Hosts
  • Zielserver
  • Ressourcendateien

Während diese Ressourcen eingeschränkten Zugriff haben, sollten sie, sofern sie von den autorisierten Nutzern geändert wurden, von den neuen Daten überschrieben werden. Das liegt daran, dass diese Ressourcen nur in ihrem aktuellen Status in Apigee gespeichert werden. Die wichtigsten Ausnahmen von dieser Regel sind API-Proxys und freigegebene Abläufe.

API-Proxies und freigegebene Abläufe unter der Revisionskontrolle

API-Proxys und freigegebene Abläufe werden unter Einsatz von Revisionen verwaltet (also erstellt, aktualisiert und bereitgestellt). Revisionen werden fortlaufend nummeriert, sodass Sie Änderungen hinzufügen und dann als neue Revision speichern können. Um eine Änderungen zurückzunehmen, stellen Sie eine vorherige Revision des API-Proxys/freigegebenen Ablaufs bereit. Es kann immer nur eine Revision eines API-Proxy-/gemeinsamen Ablaufs in einer Umgebung bereitgestellt werden, außer, die Revisionen haben abweichende Basispfade.

API-Proxys und freigegebene Abläufe werden zwar über Revisionen verwaltet, wird aber eine bestehende Revision verändert, so gibt es keine Möglichkeit eines Rollbacks, da frühere Änderungen einfach überschrieben werden.

Audits und Verlauf

Apigee bietet die Funktion "Audits", die bei der Fehlerbehebung hilfreich sein kann. Mit diesen Funktionen können Sie spezifische Informationen einsehen, beispielsweise wer bestimmte Vorgänge (Erstellen, Lesen, Aktualisieren, Löschen, Bereitstellen und Aufheben der Bereitstellung) wann für die Apigee-Ressourcen ausführen ließ. Wurden aber Aktualisierungs- oder Löschvorgänge an einer der Apigee-Ressourcen durchgeführt, so können Audits ältere Daten nicht bereitstellen.

Anti-Pattern

Direkte Verwaltung der Apigee-Ressourcen (oben aufgeführt) über die Apigee-Benutzeroberfläche oder APIs, ohne Verwendung des Quellkontrollsystems

Es wird oft fälschlicherweise angenommen, dass Apigee Ressourcen nach Änderungen oder Löschungen auf ihren vorherigen Status zurücksetzen kann. Apigee bietet das Zurücksetzen von Ressourcen auf ihrem vorherigen Zustand jedoch nicht an. Entsprechend sind Nutzer dafür verantwortlich, dass alle Daten im Zusammenhang mit Apigee-Ressourcen per SCM (Quellkontroll-Management) verwaltet werden, damit alte Daten schnell wiederhergestellt werden können, wenn sie versehentlich gelöscht wurden oder ein Rollback nötig wird. Dies ist insbesondere in Produktionsumgebungen wichtig, in denen diese Daten für den Laufzeit-Traffic erforderlich sind.

Wir erklären dies anhand einiger Beispiele und sehen uns an, was passieren könnte, würden nicht über ein Quellkontrollsystem verwaltete Daten bewusst oder unwissentlich geändert:

Beispiel 1: Löschen oder ändern eines API-Proxy

Wenn ein API-Proxy gelöscht oder eine Änderung an einer bestehenden Revision bereitgestellt wird, kann der vorherige Code nicht wiederhergestellt werden. Enthält der API-Proxy Java-, JavaScript- oder Python-Code, der nicht über ein SCM-System (Source Control Management) außerhalb von Apigee verwaltet wird, kann dies zu einem erheblichen Verlust an Entwicklungsarbeit führen.

Beispiel 2: Bestimmung der API-Proxys mithilfe bestimmter virtueller Hosts

Ein Zertifikat auf einem virtuellen Host läuft ab und der virtuelle Host muss aktualisiert werden. Die Ermittlung, welche API-Proxys den virtuellen Host zu Testzwecken verwenden, kann schwierig sein, falls viele API-Proxys vorhanden sind. Wenn die API-Proxys in einem SCM-System außerhalb von Apigee verwaltet werden, kann einfach das Repository durchsucht werden.

Beispiel 3: Löschen des Schlüsselspeicher/Truststore

Wird ein Schlüsselspeicher/Truststore, der von einem virtuellen Host oder einer Zielserverkonfiguration verwendet wird, gelöscht, so kann er nur wiederhergestellt werden, wenn die Konfigurationsdetails des Schlüsselspeichers/Truststores, einschließlich Zertifikate und/oder privater Schlüssel im SCM gespeichert sind.

Auswirkungen

  • Wird eine Apigee-Ressource gelöscht, können die Ressource und deren Inhalte nicht von Apigee wiederhergestellt werden.
  • API-Anfragen können aufgrund unerwarteter Fehler fehlschlagen, bis die Ressource wieder in den vorherigen Zustand zurückgesetzt wird.
  • Es ist schwierig, nach Interabhängigkeiten zwischen API-Proxys und anderen Ressourcen in Apigee zu suchen.

Best Practice

  • Zur Verwaltung von API-Proxys und freigegebenen Abläufen können Sie ein beliebiges Standard-SCM mit einer CICD-Pipeline (Continuous Integration and Continuous Deployment) verwenden.
  • Verwenden Sie ein beliebiges Standard-SCM zur Verwaltung der anderen Apigee-Ressourcen, darunter API-Produkte, Caches, KVMs, Zielserver, virtuelle Hosts und Schlüsselspeicher.
    • Wenn bereits Apigee-Ressourcen vorhanden sind, verwenden Sie Apigee-APIs, um die Konfigurationsdetails als JSON/XML-Nutzlast abzurufen und im SCM zu speichern.
    • Verwalten Sie neue Aktualisierungen dieser Ressourcen im SCM.
    • Wenn Sie neue Apigee-Ressourcen erstellen oder vorhandene Ressourcen aktualisieren müssen, verwenden Sie die entsprechende im SCM gespeicherte JSON/XML-Nutzlast und aktualisieren Sie die Konfiguration in Apigee mithilfe von APIs.

* Verschlüsselte KVMs können nicht im Nur-Text-Format aus der API exportiert werden. Es liegt in der Verantwortung des Nutzers, Aufzeichnungen darüber zu führen, welche Werte in verschlüsselte KVMs eingegeben werden.

Weitere Informationen