Dieses Intensivformat verbindet produktive Bereitstellung, Leistungsanalyse, Hintergrundverarbeitung und asynchrone beziehungsweise verteilte Abläufe. Damit entsteht ein durchgängiger Betriebsweg vom Build bis zur Kapazitätsgrenze.
WSGI-Server, Proxy, Container, Secrets und Rollout werden gemeinsam mit Profiling, Caching, Worker-Dimensionierung, Celery, Async Views, Streaming und Telemetrie behandelt. Jede Betriebsentscheidung wird gemessen oder durch eine Störungssimulation überprüft.
Inhaltsübersicht
- Produktionsbetrieb mit WSGI-Servern
- Reverse Proxy, TLS und Proxy-Vertrauen
- Container-Image und reproduzierbare Laufzeit
- Secrets, Umgebungswerte und Betriebsparameter
- Health Checks, Migrationen und Rollback
- Strukturiertes Logging und Korrelationskennungen
- Metriken, Tracing und Anwendungsdiagnose
- Alarmierung und Störungsbearbeitung
- Messstrategie und Profiling
- Datenbank- und ORM-Optimierung
- Caching und Invalidierungsstrategien
- Worker-Modell und horizontale Skalierung
- Lasttests und Kapazitätsgrenzen
- Celery-Integration und Brokeranbindung
- Task-Schnittstellen und Zustandsmodell
- Retries, Idempotenz und Fehlerpfade
- Zeitplanung, Workflows und Task-Ketten
- Queue-Betrieb, Monitoring und Kapazität
- Async Views im WSGI-Modell
- Parallele I/O-Aufrufe und Zeitlimits
- Streaming-Antworten und große Datenmengen
- Echtzeitmuster und Integrationsgrenzen
- Entscheidung zwischen Flask, ASGI-Adapter und async-first Framework
- Praxisprojekt und Wissenssicherung
Lernziele
- Eine reproduzierbare und gehärtete Produktionsbereitstellung aufbauen.
- Leistungsengpässe messen und gezielt optimieren.
- Worker, Cache und horizontale Skalierung belastbar dimensionieren.
- Hintergrundjobs mit Retries und Idempotenz betreiben.
- Async- und Streamingmuster realistisch einordnen.
- Störungen über Logs, Metriken, Traces und Alarme diagnostizieren.
Zielgruppe
Erfahrene Flask-Entwickler, DevOps-, Plattform-, SRE- und Betriebsteams mit Verantwortung für Verfügbarkeit, Leistung und Verarbeitungskapazität.
Voraussetzungen
Sehr gute Flask-Kenntnisse, Linux- und HTTP-Grundlagen sowie Erfahrung mit Datenbanken, Containern und automatisierten Tests.
Seminarinhalte
1. Produktionsbetrieb mit WSGI-Servern
Der Entwicklungsserver wird durch einen belastbaren WSGI-Server mit passendem Worker-Modell ersetzt.
- Schritt 1: Anwendungsimport beziehungsweise Factory-Aufruf für den Server eindeutig konfigurieren.
- Schritt 2: Prozess-, Thread- und asynchrone Worker nach Lastprofil auswählen.
- Schritt 3: Timeouts, Workeranzahl, Max-Requests und Graceful Shutdown festlegen.
- Schritt 4: Start, Reload, Absturz und kontrolliertes Herunterfahren unter Last prüfen.
2. Reverse Proxy, TLS und Proxy-Vertrauen
Externe Verbindungen werden am HTTP-Server terminiert und vertrauenswürdige Weiterleitungsinformationen korrekt behandelt.
- Schritt 1: Reverse-Proxy-Pfad, Host, Protokoll und Clientadresse als Datenfluss dokumentieren.
- Schritt 2: Forwarded Header nur für die bekannte Anzahl vertrauenswürdiger Proxies auswerten.
- Schritt 3: TLS, HSTS, Größenlimits und statische Dateien am vorgeschalteten Server konfigurieren.
- Schritt 4: Direktzugriff, gefälschte Header und falsche Präfixe mit Integrationstests prüfen.
3. Container-Image und reproduzierbare Laufzeit
Die Anwendung wird als kleines, nicht privilegiertes und reproduzierbares OCI-Image bereitgestellt.
- Schritt 1: Build- und Laufzeitabhängigkeiten trennen und einen festen Basisstand wählen.
- Schritt 2: Anwendung als Paket installieren und Build-Cache sinnvoll nutzen.
- Schritt 3: Nicht als root ausführen, Schreibpfade begrenzen und Konfiguration erst zur Laufzeit injizieren.
- Schritt 4: Image lokal, in der CI und mit schreibgeschütztem Dateisystem testen.
4. Secrets, Umgebungswerte und Betriebsparameter
Geheime und veränderliche Werte werden außerhalb des Images verwaltet und beim Start geprüft.
- Schritt 1: Schlüssel, Datenbankzugänge und Provider-Credentials inventarisieren.
- Schritt 2: Secret-Dateien oder Secret-Store-Anbindung mit minimalen Dateirechten konfigurieren.
- Schritt 3: Rotation vorbereiten und mehrere gültige Schlüssel während eines Übergangs unterstützen.
- Schritt 4: Fehlende, abgelaufene oder versehentlich protokollierte Secrets erkennen.
5. Health Checks, Migrationen und Rollback
Bereitstellungen werden mit Zustandsprüfungen, kontrollierten Schemaänderungen und einem Rückweg abgesichert.
- Schritt 1: Liveness, Readiness und fachliche Abhängigkeiten getrennt definieren.
- Schritt 2: Datenbankmigrationen als eigenen, einmaligen Deployment-Schritt ausführen.
- Schritt 3: Rolling-, Blue-Green- oder einfache Austauschstrategie passend zur Plattform wählen.
- Schritt 4: Fehlgeschlagene Version anhand von Metriken erkennen und Rollback praktisch durchführen.
6. Strukturiertes Logging und Korrelationskennungen
Protokolle werden so gestaltet, dass technische Abläufe und einzelne Requests zuverlässig nachvollziehbar bleiben.
- Schritt 1: Logger-Hierarchie, Level und Handler zentral konfigurieren.
- Schritt 2: Request-, Benutzer- und Korrelationskennung als strukturierte Felder ergänzen.
- Schritt 3: Sensible Daten, Tokens und vollständige Request-Körper konsequent filtern.
- Schritt 4: Logausgabe für Entwicklung und zentrale Sammlung getrennt testen.
7. Metriken, Tracing und Anwendungsdiagnose
Latenz, Durchsatz, Fehler und Abhängigkeiten werden messbar gemacht, ohne unnötige Kardinalität zu erzeugen.
- Schritt 1: Golden Signals und fachliche Kennzahlen für die Anwendung festlegen.
- Schritt 2: Metriken an Request-Grenzen und kritischen Services erfassen.
- Schritt 3: Trace-Kontext über HTTP-, Datenbank- und Queue-Grenzen weitergeben.
- Schritt 4: Dashboards anhand realer Betriebsfragen statt dekorativer Diagramme strukturieren.
8. Alarmierung und Störungsbearbeitung
Alarme werden aus Nutzerwirkung abgeleitet und mit klaren Diagnose- und Eskalationsschritten verbunden.
- Schritt 1: Schwellwerte und SLO-Verletzungen statt einzelner Logzeilen als Signal definieren.
- Schritt 2: Warnung, dringenden Alarm und Informationsereignis voneinander trennen.
- Schritt 3: Runbooks mit Prüfpfad, Verantwortlichkeit und sicheren Sofortmaßnahmen erstellen.
- Schritt 4: Störung simulieren, Alarmweg prüfen und Erkenntnisse in Tests sowie Monitoring zurückführen.
9. Messstrategie und Profiling
Optimierungen beginnen mit reproduzierbaren Messungen statt mit Vermutungen.
- Schritt 1: Relevante Nutzerpfade, Lastprofile und Zielwerte festlegen.
- Schritt 2: Request-Latenzen, CPU-Zeit, Speicher und externe Wartezeiten getrennt erfassen.
- Schritt 3: Profiler in einer sicheren Testumgebung einsetzen und Hotspots priorisieren.
- Schritt 4: Vorher-Nachher-Messung mit identischen Daten und Lastbedingungen durchführen.
10. Datenbank- und ORM-Optimierung
Abfragen werden anhand realer Ausführungspläne und Zugriffsprofile verbessert.
- Schritt 1: Langsame Abfragen und N+1-Zugriffe über Logging beziehungsweise Tracing identifizieren.
- Schritt 2: Ladeoptionen, Pagination und gezielte Spaltenauswahl einsetzen.
- Schritt 3: Indizes aus Filter-, Join- und Sortiermustern ableiten und mit Ausführungsplänen prüfen.
- Schritt 4: Transaktionsdauer und Poolauslastung unter paralleler Last messen.
11. Caching und Invalidierungsstrategien
Caches werden nur für klar definierte Daten, Lebensdauern und Konsistenzanforderungen eingesetzt.
- Schritt 1: Cachekandidaten anhand Berechnungskosten, Änderungsrate und Nutzerwirkung auswählen.
- Schritt 2: Schlüssel, TTL, Mandantenbezug und maximale Größe festlegen.
- Schritt 3: Cache-Aside, gezielte Invalidierung und Schutz vor Cache Stampede implementieren.
- Schritt 4: Trefferquote, veraltete Daten und Ausfall des Cache-Backends testen.
12. Worker-Modell und horizontale Skalierung
Prozesse, Threads und Instanzen werden anhand von CPU-, I/O- und Speicherprofil dimensioniert.
- Schritt 1: Synchrones, Thread- und asynchrones Worker-Verhalten für den Anwendungsfall vergleichen.
- Schritt 2: Startwert für Worker und Threads festlegen und mit Lasttests verifizieren.
- Schritt 3: Sitzungs-, Datei- und Cachezustand für mehrere Instanzen externalisieren.
- Schritt 4: Überlastschutz, Warteschlangen und kontrollierte Degradation definieren.
13. Lasttests und Kapazitätsgrenzen
Die Anwendung wird mit realistischen Szenarien bis zu klar erkennbaren Sättigungspunkten geprüft.
- Schritt 1: Nutzerpfade, Denkzeiten, Datenvariation und Anlaufphase modellieren.
- Schritt 2: Baseline, Ziel- und Stresstest mit identischer Telemetrie durchführen.
- Schritt 3: Fehlerquote, Perzentile, Ressourcen und Abhängigkeiten gemeinsam auswerten.
- Schritt 4: Kapazitätsannahmen, Sicherheitsreserve und nächste Optimierung dokumentieren.
14. Celery-Integration und Brokeranbindung
Hintergrundverarbeitung wird an die Application Factory angebunden und vom Request-Prozess entkoppelt.
- Schritt 1: Broker, Ergebnisbackend und Serialisierung nach Betriebsanforderung auswählen.
- Schritt 2: Celery-App in create_app initialisieren und Anwendungskontext für Tasks bereitstellen.
- Schritt 3: Worker und Scheduler mit getrennten Konfigurationen starten.
- Schritt 4: Verbindungsabbruch, Neustart und fehlerhafte Brokerkonfiguration testen.
15. Task-Schnittstellen und Zustandsmodell
Aufgaben werden klein, serialisierbar und unabhängig von flüchtigem Request-Zustand entworfen.
- Schritt 1: Nur stabile Kennungen und primitive Daten statt ORM-Objekte an Tasks übergeben.
- Schritt 2: Task-Eingaben validieren und benötigte Daten innerhalb des Tasks erneut laden.
- Schritt 3: Status, Fortschritt und Ergebnis nur bei fachlichem Bedarf speichern.
- Schritt 4: Task separat ohne laufenden Webserver testen.
16. Retries, Idempotenz und Fehlerpfade
Wiederholungen werden gezielt auf vorübergehende Fehler begrenzt und verursachen keine doppelten Seiteneffekte.
- Schritt 1: Temporäre, dauerhafte und fachliche Fehler in getrennte Kategorien einordnen.
- Schritt 2: Exponentielles Backoff, Jitter und maximale Versuche konfigurieren.
- Schritt 3: Idempotenzschlüssel oder Zustandsprüfungen für verändernde Tasks implementieren.
- Schritt 4: Doppelte Zustellung, Workerabbruch und erschöpfte Retries automatisiert prüfen.
17. Zeitplanung, Workflows und Task-Ketten
Wiederkehrende und mehrstufige Abläufe werden mit klarer Reihenfolge und Fehlerstrategie modelliert.
- Schritt 1: Periodische Aufgaben mit Zeitzone und eindeutiger Zuständigkeit planen.
- Schritt 2: Ketten, Gruppen und Akkorde nur für nachvollziehbare Abhängigkeiten einsetzen.
- Schritt 3: Teilresultate, Abbruch und Kompensation mehrstufiger Abläufe festlegen.
- Schritt 4: Zeitplanänderungen und parallele Ausführung gegen Doppelverarbeitung absichern.
18. Queue-Betrieb, Monitoring und Kapazität
Warteschlangen werden nach Priorität, Laufzeit und Fehlerverhalten beobachtet und dimensioniert.
- Schritt 1: Queues nach Arbeitsart und Priorität trennen, ohne unnötige Fragmentierung.
- Schritt 2: Wartelänge, Laufzeit, Fehlerrate und Retry-Anteil als Metriken erfassen.
- Schritt 3: Dead-Letter- beziehungsweise Fehlerablage und kontrollierte Wiederaufnahme definieren.
- Schritt 4: Workerzahl und Vorabruf anhand gemessener Last einstellen.
19. Async Views im WSGI-Modell
Asynchrone View-Funktionen werden nur dort eingesetzt, wo parallele I/O-Arbeit tatsächlich einen Vorteil bringt.
- Schritt 1: Sync- und Async-View hinsichtlich Workerbindung und Event-Loop-Verhalten vergleichen.
- Schritt 2: Async-Unterstützung installieren und erste await-fähige Route implementieren.
- Schritt 3: Blockierende Bibliotheksaufrufe in Async-Views identifizieren und vermeiden.
- Schritt 4: Laufzeit, Fehlverhalten und Workerbelegung mit reproduzierbaren Messungen prüfen.
20. Parallele I/O-Aufrufe und Zeitlimits
Mehrere unabhängige Netzwerk- oder Datenzugriffe werden kontrolliert parallelisiert und mit Grenzen versehen.
- Schritt 1: Unabhängige I/O-Aufgaben erkennen und gemeinsam starten.
- Schritt 2: Timeouts, Abbruch und Fehleraggregation für Teilaufrufe definieren.
- Schritt 3: Ergebnisse deterministisch zusammenführen und Teilausfälle fachlich behandeln.
- Schritt 4: Sequenzielle und parallele Variante unter identischer Last vergleichen.
21. Streaming-Antworten und große Datenmengen
Große oder fortlaufend erzeugte Inhalte werden speicherschonend übertragen, ohne Header- und Kontextregeln zu verletzen.
- Schritt 1: Generator für schrittweise Ausgabe erstellen und passenden Inhaltstyp setzen.
- Schritt 2: Alle Header vor Beginn des Nachrichtentextes festlegen.
- Schritt 3: Request-Kontext bei Bedarf mit geeigneter Kontextbindung erhalten.
- Schritt 4: Proxy-Pufferung, Clientabbruch und Fehler nach Streamingbeginn testen.
22. Echtzeitmuster und Integrationsgrenzen
Polling, Server-Sent Events, WebSockets und Nachrichtenbroker werden nach Anwendungsfall und Betriebsmodell bewertet.
- Schritt 1: Latenz-, Verbindungs- und Skalierungsanforderungen des Anwendungsfalls erfassen.
- Schritt 2: Polling beziehungsweise Streaming als einfachste tragfähige Lösung prototypisch umsetzen.
- Schritt 3: WebSocket- oder Socket-Erweiterungen nur bei echtem bidirektionalem Bedarf einplanen.
- Schritt 4: Verbindungsabbruch, Wiederaufnahme und horizontale Skalierung im Architekturentwurf berücksichtigen.
23. Entscheidung zwischen Flask, ASGI-Adapter und async-first Framework
Die technische Plattform wird anhand des tatsächlichen Parallelitäts- und Verbindungsmodells ausgewählt.
- Schritt 1: Anteil asynchroner Logik, Langläufer und dauerhafter Verbindungen quantifizieren.
- Schritt 2: Flask mit WSGI, Flask über Adapter und ein ASGI-natives Modell gegenüberstellen.
- Schritt 3: Erweiterungskompatibilität, Betriebskomplexität und Migrationsaufwand bewerten.
- Schritt 4: Entscheidung mit messbaren Kriterien und einer kleinen Lastprobe dokumentieren.
Praxisprojekt
Eine Anwendung wird containerisiert, hinter einem Proxy betrieben und telemetrisch sichtbar gemacht. Anschließend werden Lastprobleme behoben, ein Celery-Workflow integriert, eine Streamingroute ergänzt und ein fehlerhafter Rollout diagnostiziert.
Methodik
Kurze fachliche Einordnungen wechseln mit Demonstrationen, geführten Umsetzungen, Fehleranalysen und eigenständigen Übungen. Jede größere Änderung wird durch einen Test, eine Diagnose oder eine betriebliche Prüfroutine abgesichert. Die Arbeitsstände werden schrittweise zu einem durchgängigen Beispielprojekt zusammengeführt.
Fachbereichsleitung / Trainerteam / Ansprechpartner
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
Seminardetails
| Dauer: | 5 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 2.995 zzgl. MwSt. Inhaus: € 8.500 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Erfahrene Flask-Entwickler, DevOps-, Plattform-, SRE- und Betriebsteams mit Verantwortung für Verfügbarkeit, Leistung und Verarbeitungskapazität. |
| Voraussetzungen: | Sehr gute Flask-Kenntnisse, Linux- und HTTP-Grundlagen sowie Erfahrung mit Datenbanken, Containern und automatisierten Tests. |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Vortrag, Demonstrationen, praktische Übungen am System |
| Seminararten: | Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
