Software Releases und Continuous Deployment
48 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Welche der folgenden Herausforderungen ist am wenigsten relevant bei der Verwaltung von Releases für clientseitig installierte Software im Vergleich zu Produktionsumgebungen?

  • Die Minimierung potenzieller Konflikte mit anderen installierten Anwendungen auf den Benutzerrechnern. (correct)
  • Die Komplexität des Testens von Upgrade-Prozessen, einschließlich Usability-Tests, auf einer breiten Palette von Endbenutzer-Systemen.
  • Die Sicherstellung der Kompatibilität mit einer Vielzahl von Hardwarekonfigurationen und Betriebssystemversionen.
  • Die Notwendigkeit, Crash Reports von einer Vielzahl von Benutzerkonfigurationen zu verarbeiten.

Warum ist es besonders anspruchsvoll, ältere Versionen von clientseitig installierter Software zu warten?

  • Ältere Versionen sind leichter zu warten, da sie weniger Funktionen haben.
  • Benutzer haben ein Recht auf Support für jede Version, die sie installiert haben.
  • Es ist schwierig, Sicherheitsupdates für veraltete Codebasen zu entwickeln und zu verteilen. (correct)
  • Die Wartung älterer Versionen erfordert keine zusätzlichen Ressourcen.

Welche der folgenden Praktiken unterstützt am wenigsten das Ideal, dass alle Benutzer die gleiche Version einer clientseitig installierten Software verwenden?

  • Regelmäßige, obligatorische Update-Prüfungen.
  • Rollback-Möglichkeiten auf ältere Versionen. (correct)
  • Automatische Installation neuer Versionen zu benutzerdefinierten Zeiten.
  • Downloads neuer Versionen im Hintergrund.

Welchen Vorteil bietet die Hintergrundinstallation neuer Softwareversionen dem Endbenutzer am wenigsten?

<p>Erhöhung der Transparenz des Installationsprozesses für den Benutzer. (A)</p> Signup and view all the answers

In welchem der genannten Beispiele für Continuous Deployment wurde vor allem darauf Wert gelegt, neue Mitarbeiter schnell in den Deployment-Prozess zu integrieren?

<p>Etsy (B)</p> Signup and view all the answers

Welche Aussage beschreibt die Herausforderung bei der Migration von Daten und Konfigurationen im Rahmen von Software-Releases am treffendsten?

<p>Eine fehlerhafte Migration kann zu Datenverlust und Funktionsstörungen führen. (C)</p> Signup and view all the answers

Welchen Aspekt der Softwareentwicklung und -wartung adressiert das Disaster Planning primär?

<p>Die Gewährleistung der Business Continuity im Falle von schwerwiegenden Störungen. (C)</p> Signup and view all the answers

Welche der folgenden Maßnahmen ist im Rahmen des Disaster Plannings am wenigsten geeignet, um die Auswirkungen eines schwerwiegenden Systemausfalls zu minimieren?

<p>Die vollständige Verlagerung der IT-Infrastruktur in eine private Cloud. (B)</p> Signup and view all the answers

Welche der folgenden Praktiken ist der wichtigste Aspekt bei der Planung eines Rollbacks während des Application Managements?

<p>Das Erstellen eines Backups des Status des Systems (Datenbanken, Dateisystem) vor dem Release. (C)</p> Signup and view all the answers

Warum ist das Testen des Rollback-Prozederes, einschliesslich der Wiederherstellung von Backups, ein wichtiger Bestandteil des Application Managements?

<p>Um im Notfall Zeit zu sparen und die Effektivität des Rollbacks zu gewährleisten. (A)</p> Signup and view all the answers

Was ist die Hauptvoraussetzung für die erfolgreiche Implementierung von Zero-Downtime-Releases?

<p>Ein einfacher, schneller Wechsel von Ressourcen wie Datenbanken und statischen Inhalten vor dem Release. (D)</p> Signup and view all the answers

Wie können wichtige, ausstehende Transaktionen während eines Zero-Downtime-Release-Prozesses behandelt werden, um Datenverlust zu vermeiden?

<p>Durch das Zwischenspeichern der Transaktionen, um sie nach dem Release fortzusetzen. (C)</p> Signup and view all the answers

Was impliziert der Begriff 'unverzüglich' im Kontext von Zero-Downtime Releases und Rollbacks?

<p>Dass der Wechsel oder das Rollback ohne wahrnehmbare Unterbrechung des Dienstes stattfindet. (A)</p> Signup and view all the answers

Warum ist die Versionierung von statischen Ressourcen wie Bildern in einem separaten Ordner (z.B. /static/3.0.1/images) ein wichtiger Aspekt bei Zero-Downtime Releases?

<p>Um sicherzustellen, dass ältere Versionen der Website weiterhin korrekt funktionieren, falls ein Rollback erforderlich ist. (A)</p> Signup and view all the answers

Welche Herausforderung entsteht hauptsächlich bei der Durchführung von Zero-Downtime-Releases in Bezug auf Datenbankwechsel?

<p>Der Datenbankwechsel kann komplex sein, insbesondere wenn Datenmigrationen oder Schemaänderungen erforderlich sind. (B)</p> Signup and view all the answers

Was ist der Hauptzweck der Blue-Green-Deployment-Strategie im Kontext von Application Management?

<p>Die Minimierung von Ausfallzeiten während Software-Releases durch den Wechsel zwischen zwei identischen Umgebungen. (D)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am treffendsten den Hauptvorteil von Canary Releasing im Kontext von Software-Deployments?

<p>Die Möglichkeit, A/B-Tests von Features durchzuführen und inkrementelle Kapazitätstests durchzuführen, indem neue Versionen langsam immer mehr Benutzern hinzugefügt werden. (C)</p> Signup and view all the answers

Warum ist es riskant, Codeänderungen direkt im Produktionssystem vorzunehmen, um Emergency Fixes durchzuführen?

<p>Weil dadurch das Risiko von Regression Bugs und Unknown State Risiken erhöht wird, da Fixes nicht vernünftig gespeichert oder aufgezeichnet werden. (B)</p> Signup and view all the answers

Welche der folgenden Maßnahmen ist entscheidend, um die Risiken im Zusammenhang mit Emergency Fixes zu minimieren?

<p>Die Einhaltung des Deployment-Prozesses, einschließlich Testing, auch bei Emergency Fixes. (A)</p> Signup and view all the answers

Welchen Vorteil bietet Canary Releasing im Hinblick auf Capacity Tests?

<p>Es ermöglicht inkrementelle Capacity Tests durch das langsame Hinzufügen von immer mehr Usern. (D)</p> Signup and view all the answers

Was sollte bei der Bestimmung des Schweregrades eines Bugs im Kontext von Emergency Fixes berücksichtigt werden?

<p>Die Anzahl der betroffenen User, die Häufigkeit des Fehlers und die Art und Weise, wie User betroffen sind. (A)</p> Signup and view all the answers

Warum ist es wichtig, Emergency Fixes nicht alleine und nicht in der Nacht durchzuführen?

<p>Um das Risiko von Fehlentscheidungen und unvollständigen Lösungen zu minimieren, indem man die Perspektiven und das Fachwissen mehrerer Personen einbezieht. (B)</p> Signup and view all the answers

In welchem Szenario wäre es akzeptabel, im Rahmen eines Emergency Fixes zu einer älteren Version der Software zurückzukehren?

<p>Wenn der Bug durch den Wechsel zu einer alten Version behoben werden kann und die Auswirkungen auf die Benutzer minimal sind. (A)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten die Bedeutung kurzer Deployment-Zeiten im Kontext von Emergency Fixes?

<p>Kurze Deployment-Zeiten sind umso wichtiger, um die Auswirkungen kritischer Bugs auf die Benutzer so schnell wie möglich zu minimieren. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten ein zentrales Ziel von DevOps?

<p>Die Förderung von häufigen Code-Deployments durch Automatisierung und verbesserte Zusammenarbeit zwischen Entwicklung und Betrieb. (C)</p> Signup and view all the answers

Inwiefern kann die Forderung nach DevOps nach einem schweren Fehler problematisch sein?

<p>Sie kann dazu führen, dass schlechte Praktiken unter dem Deckmantel von DevOps gerechtfertigt werden, anstatt die eigentlichen Ursachen des Fehlers zu beheben. (B)</p> Signup and view all the answers

Welche der folgenden Perspektiven ist typisch für das Entwicklungsteam im Kontext des Developer-Operations-Konflikts?

<p>Betonung von Innovation, hoher Geschwindigkeit und neuen Features. (B)</p> Signup and view all the answers

Was ist ein wesentlicher Vorteil der Kollaboration zwischen Entwicklern und dem Operations-Team?

<p>Entwickler und Operationsteam können voneinander lernen, um Prozesse zu automatisieren und das Verhalten der Anwendung im Produktiveinsatz besser zu verstehen. (B)</p> Signup and view all the answers

Welche der folgenden Aussagen beschreibt am besten die 'Two Pizza Theory' im Kontext von Teamstrukturen?

<p>Teams sollten so klein sein, dass sie mit maximal zwei Pizzen gesättigt werden können, um die Kommunikation und Koordination zu vereinfachen. (C)</p> Signup and view all the answers

Wie wirkt sich die DevOps-Philosophie typischerweise auf die Häufigkeit von Software-Deployments aus?

<p>DevOps erhöht die Deployment-Häufigkeit durch Automatisierung und verbesserte Zusammenarbeit, was zu schnelleren Releasezyklen führt. (C)</p> Signup and view all the answers

Warum ist es wichtig, dass das Operationsteam Einblicke in den Code der Entwickler erhält?

<p>Um zu verstehen, wie sich Änderungen im Code auf das Verhalten der Anwendung im Produktiveinsatz auswirken und potenzielle Probleme frühzeitig zu erkennen. (D)</p> Signup and view all the answers

Welche Konsequenz kann es haben, wenn Entwickler vollständigen Zugriff auf Produktivsysteme erhalten, und dies im Widerspruch zu regulatorischen Anforderungen steht?

<p>Potenzielle Verletzung von Compliance-Richtlinien und erhöhte Sicherheitsrisiken. (A)</p> Signup and view all the answers

Welche Aussage über die Verteilung der Commits bei Facebook (2008 bis Juni 2014) ist am treffendsten, wenn man die gegebenen Daten betrachtet?

<p>Web Frontend Commits machen den größten Anteil aller Commits aus und übertreffen die anderen Kategorien deutlich. (A)</p> Signup and view all the answers

Ein Entwickler bei Facebook führt durchschnittlich 3,5 Updates pro Woche durch, wobei 92 Codezeilen geändert werden. Welche Schlussfolgerung kann man hinsichtlich der Continuous Deployment Strategie ziehen?

<p>Die geringe Anzahl der geänderten Codezeilen pro Update deutet auf inkrementelle und potenziell risikoärmere Änderungen hin. (A)</p> Signup and view all the answers

Welche Aussage beschreibt am besten die Bedeutung von 'DevOps' im Kontext von Application Management und Continuous Deployment?

<p>DevOps integriert Entwicklung und Betrieb, um die schnelle und zuverlässige Bereitstellung von Software zu fördern. (B)</p> Signup and view all the answers

Wie beeinflusst das Management Continuous Deployment in einer Organisation wie Oanda?

<p>Unterstützung des Managements beeinflusst die Etablierung von CD, da die entsprechenden Ressourcen und die entsprechende Fehlerkultur gefördert werden müssen. (C)</p> Signup and view all the answers

Welche der folgenden Herausforderungen ist am wahrscheinlichsten, wenn ein Unternehmen Continuous Deployment einführt?

<p>Die Notwendigkeit einer engen Zusammenarbeit und Kommunikation zwischen Entwicklungs- und Betriebsteams. (B)</p> Signup and view all the answers

Welche Metrik wäre am wenigsten geeignet, um den Erfolg einer Continuous Deployment-Strategie zu messen?

<p>Die Anzahl der Codezeilen, die pro Deployment geändert wurden. (B)</p> Signup and view all the answers

Welche Aussage über die Commit-Statistiken von Facebook (2008 bis Juni 2014) lässt sich nicht direkt aus den gegebenen Daten ableiten?

<p>Die Daten zeigen detaillierte Informationen über die Art und den Inhalt der einzelnen Commits. (B)</p> Signup and view all the answers

Welche der folgenden Praktiken ist kein typisches Merkmal einer Continuous-Deployment-Pipeline?

<p>Manuelle Genehmigung jedes Commits durch ein Change Advisory Board (CAB). (C)</p> Signup and view all the answers

Was ist das Hauptziel der 'Two Pizza Theory' im Kontext des Application Managements?

<p>Die Optimierung der Teamgröße, um die Kommunikation und Zusammenarbeit zu verbessern. (B)</p> Signup and view all the answers

Welche Konsequenz kann entstehen, wenn zu viele kleine Teams gebildet werden, im Sinne der 'Two Pizza Theory'?

<p>Eine Zunahme des Kommunikationsaufwands zwischen den Teams. (B)</p> Signup and view all the answers

Was bedeutet der Begriff 'Experten Silos' im Kontext des Application Managements?

<p>Die Tendenz von Experten, Wissen und Informationen innerhalb ihrer eigenen Gruppe zu behalten, was die Zusammenarbeit behindert. (A)</p> Signup and view all the answers

Warum ist das Vermeiden von 'Volleyball Games' im Projektmanagement wichtig?

<p>Um Verantwortlichkeiten klar zu definieren und unproduktive Hin- und Hergaben von Aufgaben zu minimieren. (D)</p> Signup and view all the answers

Welchen Einfluss hat das Verhalten des Vorgesetzten typischerweise auf die Mitarbeiter?

<p>Mitarbeiter tendieren dazu, das Verhalten des Vorgesetzten zu imitieren. (B)</p> Signup and view all the answers

Welches Problem soll durch die beschriebenen Strategien (Two Pizza Teams, Vermeidung von Volleyball-Spielen, etc.)adressiert werden?

<p>Die Verbesserung der Teamarbeit und die Reduktion von Ineffizienzen in Softwareentwicklungsprozessen. (D)</p> Signup and view all the answers

Warum ist es wichtig, sich auf öffentlich zugängliche Referenzen wie die von Facebook und OANDA zu beziehen, wenn man Application-Management-Strategien entwickelt?

<p>Um von den Erfahrungen und bewährten Verfahren erfolgreicher Unternehmen zu lernen und diese an den eigenen Kontext anzupassen. (B)</p> Signup and view all the answers

Wie beeinflusst die Teamgrösse gemäss der 'Two-Pizza-Theorie' die Kommunikationsstruktur innerhalb eines Softwareentwicklungsteams, und welche Herausforderungen können sich daraus ergeben, wenn diese Theorie nicht beachtet wird?

<p>Kleinere Teams erleichtern die informelle Kommunikation und Entscheidungsfindung; die Überschreitung der idealen Grösse kann zu Kommunikationsengpässen und Koordinationsschwierigkeiten führen. (B)</p> Signup and view all the answers

Flashcards

Roll-Back Deployment

Die Wiederherstellung einer vorherigen Version nach einem fehlgeschlagenen Release.

Backup vor Release

Sollte vor jedem Release erfolgen, um im Notfall Daten wiederherstellen zu können.

Zero-Downtime Release

Ein Release, bei dem es zu keiner Ausfallzeit des Systems kommt.

Hot Deployment

Auch Hot Deployment genannt; ermöglicht sofortiges Umschalten zwischen Releases.

Signup and view all the flashcards

Wechselbare Ressourcen

Erlaubt das einfache Austauschen von Ressourcen wie Datenbanken oder statischen Dateien.

Signup and view all the flashcards

URI (Uniform Resource Identifier)

Eine eindeutige Adresse, die auf eine Ressource im Web verweist und für Zero-Downtime Releases angepasst werden kann.

Signup and view all the flashcards

Zwischenspeichern von Transaktionen

Diese sollten zwischengespeichert werden, um Datenverlust bei einem Release zu vermeiden.

Signup and view all the flashcards

Blue-Green Deployment

Eine Methode, bei der zwei identische Umgebungen (blau und grün) existieren, zwischen denen der Traffic umgeschaltet wird.

Signup and view all the flashcards

Disaster Planning

Planung zur Minimierung der Auswirkungen von Störungen oder Ausfällen auf IT-Systeme und Geschäftsprozesse.

Signup and view all the flashcards

User-Installierte Software Release

Die Veröffentlichung von Software, die von Benutzern auf ihren eigenen PCs installiert wird, unterscheidet sich von der Bereitstellung in einer Produktionsumgebung.

Signup and view all the flashcards

Crash Reports von Usern

Berichte über Programmabstürze, die von Benutzern bereitgestellt werden, um Fehler zu identifizieren und zu beheben.

Signup and view all the flashcards

Upgrade Prozess testen (inkl. Usability)

Die Erprobung des Aktualisierungsprozesses, einschließlich der Benutzerfreundlichkeit, um Probleme zu vermeiden.

Signup and view all the flashcards

Migration von Binärdateien, Daten und Konfigurationen

Die Migration von Binärdateien, Daten und Einstellungen beim Übergang zu einer neuen Softwareversion.

Signup and view all the flashcards

Roll Back Möglichkeit

Die Möglichkeit, zu einer vorherigen Softwareversion zurückzukehren, falls es Probleme gibt.

Signup and view all the flashcards

Continuous Deployment

Ein Softwareentwicklungsansatz, bei dem Änderungen automatisch in die Produktionsumgebung übernommen werden.

Signup and view all the flashcards

Regelmäßige Update Prüfungen

Regelmäßige automatische Überprüfung, ob eine neuere Version einer Software verfügbar ist.

Signup and view all the flashcards

Was ist Canary Releasing?

Eine Deploymentstrategie, bei der neue Features oder Versionen zuerst für eine kleine Untermenge von Benutzern freigegeben werden.

Signup and view all the flashcards

Vorteile von Canary Releasing?

Ermöglicht A/B-Tests von Features und inkrementelle Kapazitätstests durch das Hinzufügen von immer mehr Benutzern.

Signup and view all the flashcards

Rollback bei Canary Releasing?

Ein Rollback ist bei Problemen einfach durchzuführen.

Signup and view all the flashcards

Was sind Emergency Fixes?

Kritische Fehlerbehebungen, die außerhalb des regulären Deployment-Prozesses durchgeführt werden müssen.

Signup and view all the flashcards

Deployment-Pipeline bei Emergency Fixes?

Auch Emergency Fixes sollten idealerweise die Deployment-Pipeline durchlaufen (inklusive Tests).

Signup and view all the flashcards

Was sind Regression Bugs?

Das Risiko von unerwarteten Fehlern, die durch Änderungen entstehen.

Signup and view all the flashcards

Schweregrad eines Fehlers bestimmen?

Wie viele Benutzer sind betroffen? Wie oft tritt der Fehler auf? In welcher Form sind Benutzer betroffen?

Signup and view all the flashcards

Rollback als Fix?

Kann der Fehler behoben werden, indem man zu einer älteren, stabilen Version zurückkehrt?

Signup and view all the flashcards

Was ist Continuous Delivery?

Kontinuierliche Bereitstellung ist ein Softwareentwicklungsansatz, bei dem Codeänderungen automatisch in die Produktionsumgebung freigegeben werden.

Signup and view all the flashcards

Hauptsegmente von Facebooks Software

Web Frontend Code (PHP, Python), Android Frontend Code (Java), iOS Frontend Code (Objective-C), Backend Infrastruktur Code (C, C++, Java, Python).

Signup and view all the flashcards

Facebook Commit Statistik (2008-2014)

Web Frontend: 705.631, Android Frontend: 68.272, iOS Frontend: 146.658, Backend: 238.742.

Signup and view all the flashcards

Facebooks durchschnittliche Developer Updates

Entwickler führen durchschnittlich 3,5 Updates pro Woche mit je 92 LOC aus.

Signup and view all the flashcards

Was bedeutet DevOps?

DevOps ist eine Kombination aus 'Development' und 'Operations'.

Signup and view all the flashcards

Rolle von Oanda im Continuous Deployment

Oanda wird als Beispiel dafür genannt, wie Management Continuous Deployment beeinflusst.

Signup and view all the flashcards

Wichtigkeit von sicheren Softwaresystemen

Sicherstellen der Software-Integrität und des Schutzes vor Schwachstellen.

Signup and view all the flashcards

Was sind Commit Types?

Die Häufigkeit und Art der Code-Einreichungen in einem Softwareprojekt.

Signup and view all the flashcards

Two Pizza Theory

Teams sollten so klein sein, dass zwei Pizzen für alle reichen.

Signup and view all the flashcards

Experten Silos

Spezialisten horten Wissen, was die Zusammenarbeit behindert.

Signup and view all the flashcards

Volleyball Games vermeiden

Informationen werden nicht direkt, sondern indirekt weitergegeben.

Signup and view all the flashcards

Vorbildfunktion der Vorgesetzten

Mitarbeiter ahmen das Verhalten ihrer Vorgesetzten nach.

Signup and view all the flashcards

Teamgröße nach Two Pizza Theory

Kleine Teams mit 8-10 Personen fördern die Agilität.

Signup and view all the flashcards

Nachteile sehr kleiner Teams

Zu viele kleine Teams können den Kommunikationsaufwand erhöhen.

Signup and view all the flashcards

Beispiele für Continuous Deployment

Facebook und OANDA setzen auf Continuous Deployment.

Signup and view all the flashcards

DevOps Ziele

Effektive Zusammenarbeit und Kommunikation von Entwicklung und Betrieb zur Erhöhung von Zuverlässigkeit und Geschwindigkeit.

Signup and view all the flashcards

Häufige Deployments

So oft wie möglich Code veröffentlichen, idealerweise durch Automatisierung, um große Releases zu vermeiden.

Signup and view all the flashcards

Interdisziplinäres Team

Ein Team, das verschiedene Fähigkeiten und Perspektiven aus Entwicklung und Betrieb vereint.

Signup and view all the flashcards

DevOps Konflikt

Die unterschiedlichen Prioritäten von Entwicklung (Geschwindigkeit, neue Features) und Betrieb (Stabilität, Sicherheit).

Signup and view all the flashcards

Sichtweise des Entwicklungsteams

Entwickler fokussieren sich auf neue Features und Updates.

Signup and view all the flashcards

Sichtweise des Operationteams

Betrieb fokussiert sich auf Zuverlässigkeit, Sicherheit und Risikomanagement.

Signup and view all the flashcards

DevOps Kollaboration

Austausch von Wissen und Fähigkeiten zwischen Entwicklern und Betrieb, um Prozesse zu automatisieren und das Verständnis für die Applikation im Betrieb zu verbessern.

Signup and view all the flashcards

Study Notes

Deployment Aspekte & DevOps Prinzipien

  • Kontinuierliche Bereitstellung und Gastvorlesung von Marco werden betrachtet.
  • In Deployment-Pipeline gibt es Commit Stage, Automated Acceptance Test Stages, Manual Test Stages und Release Stage

Das erste Deployment

  • Der erste Release ist das riskanteste und erfordert eine gute Planung.
  • Deployment sollte von Anfang an geübt und automatisiert werden.
  • Das erste Deployment sollte für einen Prototyp verwendet werden.
  • Für das erste Deployment des Prototyps ist die Commit Stage erforderlich.
  • Es ist eine IT-Umgebung erforderlich, die Produktivsystemen ähnelt.
  • Ein automatisierter Prozess zum Installieren von Binärdateien in dieser Umgebung ist notwendig.
  • Zum Schluss ist ein einfacher Smoke-Test nötig.

Die IT-Umgebung für das erste Deployment

  • Die IT-Umgebung braucht die gleichen Eigenschaften wie das Produktivsystem.
  • Das umfassen das gleiche Betriebssystem, gleiche installierte Software, den gleichen Betrieb und die gleiche Wartung.
  • Es sollten keine Compiler und IDEs auf der Entwicklungsmaschine verwendet werden.
  • Die Hardwarekonfigurationen sollten ähnlich sein.

Rolling Back Deployments

  • Falls etwas schiefgeht, muss eine Möglichkeit bestehen, eine alte Version wiederherzustellen.
  • Das Debugging auf Produktivsystemen sollte vermieden werden.
  • Es ist eine Herausforderung, Releases rückgängig zu machen, die Daten verändert haben.
  • Als Plan für Roll-Back sollte der Status (Datenbanken, Dateisystem) vor dem Release gesichert werden.
  • Das Roll-Back (inklusive Restore vom Backup) sollte trainiert werden.

Zero-Downtime Releases

  • Zero-Downtime Releases können auch als Hot Deployments bezeichnet werden.
  • Wechsel zwischen Releases muss sofort erfolgen.
  • Roll-Back sollte hierbei auch unverzüglich passieren.
  • Einfaches Wechseln von Ressourcen wie Datenbanken, Services und statischen Ressourcen vor dem Release ist eine Voraussetzung.
  • Zum Beispiel kann dies durch Ändern einer URI (Uniform Resource Identifier) erfolgen.
  • Dazu ist oft eine Versionierung notwendig, wie z.B. /static/3.0.1/images.
  • Datenbankwechsel kann kompliziert sein.
  • Daher müssen wichtige ausstehende Transaktionen zwischengespeichert werden, um sie nicht zu verlieren.

Blue-Green Deployments

  • Das Umschalten zwischen Versionen erfolgt durch einfaches Umschalten im Router (unter einer Sekunde).
  • Probleme können mit Datenbanken auftreten, insbesondere bei Datenmigrationen während des Schemawechsels.
  • Eine Strategie besteht darin, die Applikation in einen Read-Only-Modus zu versetzen.
  • Danach müssen Sie die Daten von der grünen in die blaue Datenbank migrieren.
  • Dann ist es wichtig, zur blauen Datenbank zu wechseln und den Read-Write-Modus zu aktivieren.
  • Blue-Green Deployments sind auf einer einzelnen Produktionsumgebung oder bei höherem Budget auf einem Replikat möglich

Canary Releasing

  • Das Canary Releasing ist motiviert durch die Tatsache, dass Tests nie 100%ig sind.
  • Probleme treten oft auf, wenn die Applikation produktiv geschaltet wird.
  • Des Weiteren kann Canary Releasing bei sehr großen Produktivsystemen zum Einsatz kommen, da große Capacity Tests schwierig vorab durchzuführen sind.

Diskussion zu Canary Releasing

  • Roll-Back ist einfach.
  • Es besteht die Möglichkeit, A/B-Tests von Features durchzuführen.
  • Hierbei werden neue Features genutzt und mehr Umsatz durch die neue Version erzilet
  • Inkrementelle Capacity Tests werden durch das langsame Hinzufügen von immer mehr Usern durchgeführt.
  • Der Umgang mit geteilten Ressourcen ist zu beachten.

Emergency Fixes

  • In jedem System kommt der Moment, wo ein kritischer Bug auftaucht.
  • Trotzdem sollte der Deployment-Prozess eingehalten werden.
  • Dementsprechend müssen Emergency Fixes die Deployment-Pipeline durchlaufen (inklusive Testing).
  • Oft wird einfach am Produktivsystem Code geändert, um den Bug zu beheben.
  • Dabei entstehen Risiken von Regression Bugs und Unknown-State-Risiken, weil Fixes nicht vernünftig gespeichert/aufgezeichnet werden.
  • Umso wichtiger sind kurze Deployment-Zeiten.

Weitere Aspekte von Emergency Fixes

  • Der Schweregrad des Problems muss bestimmt werden.
  • Fragen sind z.b. Wie viele User sind betroffen, wie oft kommt der Fehler vor, in welcher Form sind User betroffen?
  • Nicht alleine fixen und nicht in der Nacht fixen
  • Darüber hinaus stellt sich die Frage, ob der Bug behoben werden kann, indem zu einer alten Version gewechselt wird?

Release von User-Installed Software

  • Releases von Client-installierter Software auf eigenen User-PCs unterscheiden sich von Releases einer Applikation in einer Produktionsumgebung.
  • Wichtige zu berücksichtigende Aspekte sind Crash Reports von Usern erhalten
  • Des Weiteren ist das Testen des Upgrade-Prozesses (inkl. Usability) notwendig
  • Wartung von alten Versionen sind oft aufwändig
  • Es besteht die Möglichkeit für ein Roll-Back.
  • Idealerweise sollten alle die gleiche Version haben.
  • Auch regelmäßige Update Prüfungen sind von Vorteil.
  • Downloads und Installationen der neuen Version sollten im Hintergrund stattfinden.

Continuous Deployment bei Facebook und Oanda

  • Continuous Deployment ist eine Software-Engineering-Praxis, bei der viele kleine, inkrementelle Software-Updates in die Produktion überführt werden.
  • Facebook verwendet Continuous Deployment seit 2005 und das bei 3,5 Updates pro Woche
  • Flickr meldete durchschnittlich 10 Software-Deployments pro Tag in 2009.
  • Etsy berichtete über 11.000 Software-Deployments in 2011.

DevOps

  • Ziele von DevOps sind effektive Kollaboration und Kommunikation von Entwicklung und Operations.
  • DevOps ermöglicht häufiges Deployen von Code (Automatisierung, kein Big-Bang).
  • DevOps ist sehr populär geworden, aber kann dazu führen das schlechte Praktiken gerechtfertigt werden.
  • Entwickler erhalten oft vollständigen Zugriff auf Produktivsysteme entgegen regulatorischer Anforderungen.
  • Bei der DevOps Umsetzung wird oft ein schwerer Fehler gefordert

Developer and Operations Kollaboration

  • Teilen von Fähigkeiten, Expertisen und Vorgehensweisen
  • Entwickler erlernen schnell neue Technologien; sind aber auf Operations angewiesen damit Prozesse automatisierbar sind
  • Entwickler verstehen die Details des Codes; Operationsteam versteht, wie sich die Applikation im Produktiveinsatz verhält

Two Pizza Theory

  • Zwei Pizza Theory ist Restrukturierung in kleinen Teams.
  • Dabei soll das Team so klein sein, dass 2 Pizzen ausreichen.
  • Annahme sind 2 große Pizzen mit jeweils 8 Stücken = Team Größen von 8-10 Personen.
  • Nicht immer ist es möglich so kleine Teams zu bilden.
  • Zu viele kleine Teams erhöht den Kommunikationsaufwand.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Description

Dieser Text behandelt Herausforderungen bei Software-Releases, insbesondere bei clientseitig installierter Software. Außerdem werden Continuous Deployment und Disaster Planning thematisiert. Der Fokus liegt auf der Migration von Daten und Konfigurationen.

More Like This

Use Quizgecko on...
Browser
Browser