Einrichten einer API Gateway-Canary-Release-Bereitstellung - Amazon API Gateway

Einrichten einer API Gateway-Canary-Release-Bereitstellung

Canary-Release ist eine Softwareentwicklungsstrategie, bei der eine neue Version einer API (und anderer Software) zu Testzwecken eingesetzt wird und die Basisversion weiterhin als Produktionsrelease für den normalen Betrieb auf derselben Stufe eingesetzt wird. Im Rahmen dieses Artikels gehen wir davon aus, dass die Basisversion das Produktionsrelease ist. Sie können das Canary-Release jedoch auch für Tests in jeder anderen Version verwenden.

Bei einer Canary-Release-Bereitstellung wird der gesamte API-Verkehr mit einem vorkonfigurierten Verhältnis nach dem Zufallsprinzip in ein Produktionsrelease und ein Canary-Release getrennt. Normalerweise erhält die Canary-Release einen kleinen Prozentsatz des API-Verkehrs und das Produktionsrelease nimmt den Rest in Anspruch. Die aktualisierten API-Features sind nur für den API-Verkehr über das Canary-Release sichtbar. Sie können den Prozentsatz des Canary-Datenverkehrs anpassen, um die Testabdeckung oder die Leistung zu optimieren.

Indem man den Canary-Verkehr gering und die Auswahl zufällig hält, werden die meisten Benutzer zu keiner Zeit durch potenzielle Fehler in der neuen Version beeinträchtigt und kein einzelner Benutzer wird ständig beeinträchtigt.

Nachdem die Testmetriken Ihre Anforderungen erfüllt haben, können Sie das Canary-Release in das Produktionsrelease überführen und Canary für die Bereitstellung deaktivieren. Damit stehen die neuen Features bereits in der Produktionsstufe zur Verfügung.

Canary-Release-Bereitstellung in API Gateway

In API Gateway verwendet eine Canary-Release-Bereitstellung die Bereitstellungsstufe für die Produktionsfreigabe der Basisversion einer API und fügt der Stufe ein Canary-Release für die neuen Versionen relativ zur Basisversion der API hinzu. Die Stufe ist der ersten Bereitstellung und das Canary-Release den nachfolgenden Bereitstellungen zugeordnet. Zu Beginn verweisen sowohl die Stufe als auch das Canary auf die gleiche API-Version. Wir nutzen die Begriffe Stufen- und Produktionsrelease und Canary und Canary-Release in diesem Abschnitt gleichwertig.

Um eine API mit einem Canary-Release bereitzustellen, erstellen Sie eine Canary-Release-Bereitstellung, indem Sie die Canary-Einstellungen zur Stufe einer regulären Bereitstellung hinzufügen. Die Canary-Einstellungen beschreiben das zugrunde liegende Canary-Release und die Stufe repräsentiert die Produktionsfreigabe der API innerhalb dieser Bereitstellung. Um Canary-Einstellungen hinzuzufügen, legen Sie canarySettings in der Bereitstellungsstufe fest und geben Sie Folgendes an:

Nachdem ein Canary-Release aktiviert wurde, kann die Bereitstellungsstufe nicht mit einem anderen nicht-Canary-Release verbunden werden, bis das Canary-Release deaktiviert und die Canary-Einstellungen von der Stufe entfernt wurden.

Wenn Sie die Protokollierung der API-Ausführung aktivieren, werden für das Canary-Release eigenen Protokolle und Metriken für alle Canary-Anforderungen generiert. Sie werden an eine CloudWatch Logs-Protokollgruppe der Produktionsstufe sowie an eine Canary-spezifische CloudWatch Logs-Protokollgruppe gemeldet. Gleiches gilt für die Zugriffsprotokollierung. Die separaten Canary-spezifischen Protokolle sind hilfreich, um neue API-Änderungen zu validieren und zu entscheiden, ob die Änderungen akzeptiert werden sollen und das Canary-Release in die Produktionsstufe übernommen werden soll oder ob die Änderungen verworfen werden sollen und das Canary-Release aus der Produktionsstufe zurückgenommen werden soll.

Die Protokollgruppe für die Ausführung in der Produktionsstufe heißt API-Gateway-Execution-Logs/{rest-api-id}/{stage-name} und die Protokollgruppe für die Ausführung im Canary-Release heißt API-Gateway-Execution-Logs/{rest-api-id}/{stage-name}/Canary. Für die Zugriffsprotokollierung müssen Sie eine neue Protokollgruppe anlegen oder eine bestehende auswählen. Der Name der Canary-Release-Zugriffsprotokollgruppe enthält das Suffix /Canary, das an den Namen der ausgewählten Protokollgruppe angehängt ist.

Ein Canary-Release kann den Stage-Cache nutzen (wenn er aktiviert ist), um Antworten zu speichern und Cache-Einträge zu verwenden, um die Ergebnisse innerhalb einer vorkonfigurierten Time-to-Live-Periode (TTL) an die nächsten Canary-Anforderungen zurückzugeben.

Bei einer Canary-Release-Bereitstellung können das Produktions- und das Canary-Release der API der gleichen Version oder verschiedenen Versionen zugeordnet werden. Wenn sie verschiedenen Versionen zugeordnet sind, werden die Antworten für Produktions- und Canary-Anforderungen getrennt zwischengespeichert und der Stage-Cache liefert entsprechende Ergebnisse für Produktions- und Canary-Anforderungen. Wenn das Produktionsrelease und das Canary-Release mit derselben Bereitstellung verbunden sind, verwendet der Stage-Cache einen einzigen Cache-Key für beide Arten von Anforderungen und gibt dieselbe Antwort für dieselben Anforderungen aus dem Produktionsrelease und dem Canary-Release zurück.