Software für eine Cloud-Native-Umgebung entwerfen
AbgeschlossenVerbinden Sie reproduzierbare Infrastruktur, austauschbare Prozesse, dauerhaften Zustand und beobachtbares Verhalten. Bewerten Sie Cloud-Native-Design über Containerisierung hinaus.
Veröffentlicht von TaigaWie wir schreiben
Das lernen Sie
- Containerisierung und Cloud-Native-Verhalten unterscheiden.
- Risiken für Zustand, Wiederholungen und Austausch in einem generierten Dienst erkennen.
- Einen Plattformvertrag definieren, den Agenten und Menschen prüfen können.
Definieren Sie das benötigte Verhalten
Cloud-Native-Praktiken unterstützen wiederholbare Entwicklung und Betrieb in öffentlichen, privaten oder hybriden Umgebungen. Die CNCF betont Systeme, die bei Änderungen beherrschbar, beobachtbar und widerstandsfähig bleiben. Container und Orchestrierung können diesen Ansatz unterstützen. Sie stellen diese Eigenschaften nicht allein sicher.
Beginnen Sie mit einem fiktiven Berichtsdienst. Ein KI-Werkzeug erstellt einen Endpunkt, einen Worker und ein Container-Image. Eine Demo erzeugt das richtige PDF. Vor der Produktion muss das Team eine weitere Frage beantworten: Was passiert, wenn die Plattform den Worker während eines Jobs ersetzt?
Das ist eine Frage des Anwendungsentwurfs ebenso wie der Infrastruktur. Ein Neustart kann den Prozess wiederherstellen und dabei seine unvollendete Arbeit verlieren.
Trennen Sie Prozess und dauerhaften Zustand
Der Prototyp hält wartende Jobs und fertige Berichte im lokalen Dateisystem des Containers. Ein Austausch des Containers kann beides entfernen. Zusätzliche Worker können auch unterschiedliche Antworten liefern, je nachdem, welcher Worker eine Anfrage erhält.
Der überarbeitete Entwurf nutzt einen dauerhaften Jobspeicher und einen freigegebenen Objektspeicher. Eine Anfrage erfasst eine Jobidentität. Ein Worker übernimmt den Job, erzeugt das Ergebnis und speichert dessen Speicherort. Beim Herunterladen des Berichts gelten weiterhin Zugriffsprüfungen.
| Thema | Frage für den Berichtsdienst |
|---|---|
| Zustand | Welche Datensätze müssen einen Prozessaustausch überstehen? |
| Konfiguration | Wie läuft dasselbe Artefakt in jeder Umgebung? |
| Identität | Welche Dienstidentität darf den Job lesen und sein Ergebnis schreiben? |
| Funktionsfähigkeit | Kann der Worker Arbeit annehmen und abschließen? |
| Herunterfahren | Was passiert mit einem übernommenen Job, wenn ein Worker stoppt? |
| Kapazität | Welche Grenze greift zuerst: Worker, Datenbank, Speicher oder ein anderer Dienst? |
Halten Sie Secrets außerhalb des Images. Stellen Sie sie über das freigegebene Secret-System bereit. Dokumentieren Sie, welche Konfigurationsänderungen eine neue Veröffentlichung oder einen Prozessneustart benötigen.
Planen Sie Wiederholungen, bevor Sie Worker ergänzen
Angenommen, der Worker speichert ein PDF und stoppt dann vor der Jobbestätigung. Die Warteschlange liefert den Job erneut. Ein zweiter Versuch darf weder eine zweite Kundenbelastung auslösen noch widersprüchliche Abschlussmeldungen senden.
Nutzen Sie gegebenenfalls einen idempotenten Vorgang. Die Wiederholung derselben logischen Anfrage sollte die beabsichtigte Wirkung erhalten. Definieren Sie eine stabile Anfrageidentität, speichern Sie das Ergebnis dauerhaft und prüfen Sie jeden Fehlerpunkt. AWS beschreibt diese Technik im Leitfaden für sichere Wiederholungen.
Wiederholungen brauchen auch Grenzen. Nutzen Sie ein Zeitlimit, eine maximale Versuchszahl und eine Verzögerung, die gleichzeitige wiederholte Anfragen vermeidet. Bewahren Sie fehlgeschlagene Arbeit zur Untersuchung auf, statt sie endlos erneut auszuführen.
Machen Sie den Sollzustand prüfbar
Eine deklarative Konfiguration beschreibt das vorgesehene Deployment. Ein Controller versucht, diesen Zustand aufrechtzuerhalten. Ein Kubernetes Deployment verwaltet zum Beispiel Anwendungsreplikate und kontrollierte Updates. Die Anwendung muss den Austausch weiterhin korrekt verarbeiten.
Versionieren Sie Infrastruktur und Anwendungskonfiguration. Prüfen Sie Änderungen im normalen Lieferprozess. Beobachten Sie tatsächlich abgeschlossene Jobs, das Alter wartender Aufgaben, Fehler und Grenzen von Abhängigkeiten. Ein laufender Prozess kann trotzdem unfähig sein, einen Bericht zu erzeugen.
Wählen Sie eine Plattform, die das Team betreiben kann
Cloud Native verlangt nicht, dass jede Anwendung zu Microservices wird. Eine modulare Anwendung auf einer verwalteten Laufzeit kann ihre Anforderungen erfüllen. Mehr Dienste schaffen mehr Schnittstellen, Deployment-Entscheidungen und Betriebsarbeit.
Geben Sie dem Entwicklungsagenten den tatsächlichen Plattformvertrag: unterstützte Laufzeit, Identitätsverfahren, Datendienste, Deployment-Regeln und erforderliche Nachweise. Testen Sie neben erfolgreichen Anfragen auch Unterbrechungen und Austausch. Lesen Sie weiter über Verfügbarkeit und Ausfallgrenzen.
Übung bearbeiten
Ein fiktiver Berichtsdienst speichert Jobs und fertige Dateien im lokalen Dateisystem seines Containers. Zeichnen Sie den Ablauf von Anfrage über Job und Datei bis zum Download. Markieren Sie dauerhaften Zustand. Legen Sie fest, was passiert, wenn der Worker nach dem Schreiben einer Datei, aber vor der Jobbestätigung stoppt.
Arbeitsblatt herunterladen (Markdown)Verständnis prüfen
Quellen und weiterführende Lektüre
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗
Passende Lektüre von Taiga
Wenn Sie diese Auswahl aufheben, wird der gesamte in diesem Browser gespeicherte Fortschritt gelöscht.
Ihr Fortschritt bleibt in diesem Browser. Ohne Konto und Tracking.