Frage

Wenn Sie Änderungen an einer Live-Website ausrollen, wie gehen Sie zu überprüfen, ob die leben System richtig funktioniert? Welche Tools verwenden Sie? Wer macht es? Haben Sie Zugriff auf die Website sperren für die Testphase? Welche Menge an Ausfallzeit ist akzeptabel?

War es hilfreich?

Lösung

Ich neige dazu, alle meine Tests in einer anderen Umgebung zu tun (nicht die Live-one!). Dies ermöglicht es mir, den Updates zu der Live-Site drücken zu wissen, dass der Code sollte in Ordnung arbeiten, und ich tue nur geistige Gesundheit auf den Live-Daten testen - stellen Sie sicher, dass ich eine Datei nicht irgendwo vergessen habe, oder hatte etwas falsch seltsam gehen <. / p>

So ordnungsgemäße Prüfung in einer Test- oder Staging-Umgebung, dann nur trivial geistige Gesundheit zu überprüfen. Keine Notwendigkeit für Ausfallzeiten.

Andere Tipps

Es gibt viele gute Ratschläge bereits.

Da die Menschen erwähnt haben, wenn Sie nicht über einzelnen Punkt beteiligt haben, ist es einfach nur Phase in Änderungen durch einen App-Server zu einem Zeitpunkt, zu aktualisieren. Aber das ist selten der Fall, so lassen wir das ignorieren und konzentrieren sich auf die schwierigen Bits.

Normalerweise gibt es eine db es in die alles andere üblich ist. So bedeutet, dass Ausfallzeiten für das gesamte System. Wie minimieren Sie das?

Automation . Script der gesamten Bereitstellungsverfahren. Diese (insbesondere) umfasst alle Datenbankschemaänderungen. Diese (insbesondere) umfasst jede Datenmigration Sie zwischen den Versionen des Schemas benötigen.

Qualitätskontrolle . Stellen Sie sicher, es gibt Tests. Automatisierte Akzeptanztests (was der Benutzer sieht und erwartet von einer Business-Logik / Erfahrung Perspektive). Betrachten Sie Testkonten in das Produktionssystem, die Sie Skript Nur-Lese-Aktivitäten zu testen. Wenn Sie nicht mit anderen externen Systemen interagieren, als zu schreiben Aktivitäten. Sie müssen möglicherweise in bestimmten Teilen des Systemtests Kontoaktivität, um herauszufiltern, vor allem, wenn sie mit Geld und Buchhaltung beschäftigen. Erbsenzähler aufregen, aus guten Gründen, wenn die Bohnen nicht übereinstimmen.

Rehearse . Bereitstellen in einer Bereitstellungsumgebung, die so identisch wie möglich hergestellt wird. Tun Sie dies mit Produktionsdatenmengen und Produktionsdaten. Sie müssen spüren, wie lange ein alter Tisch nimmt. Und Sie müssen prüfen, ob ein alter table funktioniert sowohl strukturell und mit allen Fremdschlüssel in den aktuellen Daten.

Wenn Sie große Datenmengen haben, Schemaänderungen wird einige Zeit dauern. Vielleicht mehr Zeit, als Sie nach unten sein kann es sich leisten. Eine Lösung ist zu verwenden, Phased-Datenmigrationen , so dass die Schemaänderung mit „jüngsten“ bevölkert wird oder „Strom“ (sagen wir mal ein oder drei Monate alt) Daten, die während der Ausfallzeiten und die Daten für die restlichen 5 Jahre können rieseln in nachdem Sie wieder online sind. Zum Ende aussehen Benutzer Dinge in Ordnung, aber einige Funktionen können nicht für ein paar Stunden / Tage zugegriffen werden / was auch immer.

Bei der Arbeit verbringen wir Zeit mit dem Code in der Testumgebung eingefroren. Dann, nach ein paar Wochen der Mitteilung, nehmen wir die Seite nach unten um Mitternacht Freitag Abend, arbeiten die ganze Nacht hindurch sich entfaltenden und Validieren und legte es Samstag am späten Morgen. Verkehrsstatistik zeigte uns dies die beste Zeit war, es zu tun.

Wenn Sie eine Reihe von Servern mit Lastausgleich haben, werden Sie in der Lage sein, eine nach der anderen offline separat zu nehmen und aktualisieren. Keine Ausfallzeiten für die Benutzer!

Haben Sie ein nettes, entwaffnend Bild und / oder Backup-Seite. Einige Websites implementieren einfache Javascript-Spiele Sie beschäftigt zu halten, während für das Update warten.

Zum Beispiel, Ausfallenwal.

-Adam

Beim letzten Ort, an dem ich gearbeitet hätte, würde QA-Tests im QA-Umgebung ausführen. Alle größeren Probleme würden fixiert, getestet und überprüft, bevor Ausrollen.

Nach dem Build von QA zertifiziert wurde, schob die Produktion Support-Team den Code an die Staging-Umgebung, wo der Kunde auf der Website sieht und überprüft, ob alles wie gewünscht.

Der eigentliche Produktion Roll-out erfolgt außerhalb der Geschäftszeiten (nach 21.00 Uhr, wenn es ein Notfall Nacht Push ist, oder von 05.00 bis 08.00, wenn es ein normalerweise geplant Roll-out ist).

Die Seite ist auf mehreren Servern gehostet, die Last sind ein F5 Load Balancer ausgewogen mit:

  • Ein paar des Servers aus der Produktion genommen werden,
  • Code installiert ist, und
  • eine kursorische Prüfung wird auf den Servern durchgeführt, bevor die Server wieder in den Pool setzen.

Dies wird solange wiederholt, bis alle Server auf den neuesten Code aufgerüstet werden und ermöglicht die Website bis die ganze Zeit zu bleiben.

Dieses Verfahren ist ideal, aber es gibt Fälle, wenn die Datenbank als auch aktualisiert werden muss. Wenn dies der Fall ist, dann gibt es zwei Möglichkeiten, je nachdem, ob die neue Datenbank wird die Seite brechen oder nicht.

Wenn die neue Datenbank mit dem bestehenden Frontend unvereinbar ist, haben Sie keine Wahl, sondern ein Zeitfenster zu haben, wo die Seite nach unten.

Aber wenn die neue Datenbank mit der bestehenden Frontend-kompatibel ist, können Sie immer noch den Code aus, ohne tatsächliche Ausfallzeiten schieben, aber dies erfordert es zwei Produktionsdatenbankserver sein.

  • Die gesamte Verkehr auf die zweite DB und den ersten DB-Server geleitet wird, gezogen.
  • Die erste DB aktualisiert wird und nach Überprüfung abgeschlossen ist, in Produktion gehen zurück.
  • ist Der gesamte Datenverkehr auf den ersten DB geleitet und zweite DB gezogen wird.
  • Die zweite DB aktualisiert wird und nach Überprüfung abgeschlossen ist, in Produktion gehen zurück.
  • Der nächste Schritt ist den Teil Upgrades durchzuführen, wie oben beschrieben.

Um es zusammenzufassen:

  • Wenn Sie Änderungen ausrollen zu einer Live-Website, wie Sie gehen über die Überprüfung, dass das Live-System richtig funktioniert? Im besten Fall wird diese schrittweise durchgeführt wird.

  • Welche Tools verwenden Sie? Manuelle Kontrollen Code zu überprüfen sind richtig zusammen mit einigen grundlegenden automatisierten Tests installiert, jedes Automatisierungswerkzeug. Wir verwenden Selenium IDE.

  • Wer es tut? DBA führt DB-Upgrades, Tech Support / Systemadministratoren Push / die Server ziehen und installiert den Code, und QA oder Produktionsunterstützung führt die manuellen Tests und / oder läuft die automatisierten Tests.

  • Haben Sie Zugriff auf die Website für den Testzeitraum blockieren? Wenn möglich, sollte dies vor allem unter allen Umständen vermieden werden, wie Gilles bereits erwähnt, wenn es sich um eine bezahlte Stelle ist.

  • Welche Menge von Ausfallzeiten ist akzeptabel? Ausfallzeiten sollten Zeiten beschränkt werden, wenn die Benutzer wären am wenigsten wahrscheinlich die Website verwenden und sollen in weniger als 3 Stunden Zeit durchgeführt werden.
    Hinweis: 3 Stunden ist sehr großzügig. Nach dem Training und proben, wie jplindstrom erwähnt, wird das Team den gesamten Prozess ab und kann in und out in manchmal weniger als einer Stunde erhalten.

Hope, das hilft!

Einige das hängt davon ab, ob Sie eine Datenbank als auch bist zu aktualisieren. In der Vergangenheit, wenn die DB aktualisiert wurde abgestürzten wir die Seite für eine geplante (und veröffentlicht) Erfüllungsperiode - in der Regel etwas wirklich außerhalb der Arbeitszeiten, wo Auswirkungen minimal war. Wenn das Update dann nicht die DB betreffen, in einer Last ausgewogene Umwelt, würden nehmen wir 1 Box aus dem Mix, implementieren und zu testen. Wenn das erfolgreich war, es in die Mischung ging und die andere Box (unter der Annahme, 2 Kisten) herausgebracht wurde und aktualisiert / getestet.

Hinweis: Wir sind nicht den Code zu testen, nur dass der Einsatz verlief reibungslos, so Ausfallzeiten eine Möglichkeit minimal war. Wie bereits erwähnt, soll der Code bereits Tests in einer anderen Umgebung bestanden hat.

IMHO lange Ausfallzeiten (Stunden) sind akzeptabel für eine kostenlose Website. Wenn Sie Ihre Benutzer erziehen genug werden sie verstehen, dass es eine Notwendigkeit ist. Vielleicht etwas geben, ihr zu spielen, bis die Website geht wieder nach oben (z. B. Flash-Spiel, Webcam des Entwicklerteam bei der Arbeit Live-Feeds zeigt, etc). Für eine Website, die Menschen zu bezahlen, werden viele Leute Ihre Zeit mit Beschwerden verschwenden, wenn man sie regelmäßig Ausfallzeiten füttern. Ich würde Ausfallzeiten meiden wie die Pest und Updates ausrollen wirklich langsam und vorsichtig, wenn ich einen Dienst ausführen, die Benutzer auflädt.

In meinem aktuellen Setup habe ich eine Sekundär-Website mit der gleichen Datenbank und Cache wie die Live-Kopie meiner Änderungen zu testen.

Ich habe auch einige „Seite Watcher“ Skripte auf Cron-Jobs ausführen, die reguläre Ausdrücke verwenden, um zu überprüfen, dass die Website Schlüsselseiten richtig zu machen.

Die Antwort ist, dass „es kommt“. Vor allem von der Art der Umgebung, die Sie in veröffentlichen. Ist es „Hallo, Welt“ Art der Website auf einem gemeinsamen Host irgendwo, oder ein google.com mit einem halben Mil-Server? Gibt es in der Regel ein Benutzer pro Tag oder mehr wie paar Millionen? Sind Sie HTML-Veröffentlichung / CSS / JPG, oder gibt es eine große haarige Backend mit SQL Server, Middle-Tier-Server, verteilten Caches, etc?

In der Regel - wenn Sie es sich leisten können separate Umgebungen für Entwicklung, QA zu haben, Staging und Produktion - diejenigen haben. Wenn Sie die Ressourcen haben - das Ökosystem schaffen, so dass Sie das komplette installierbaren Paket mit 1 (eins) Klick aufbauen können. Und stellen Sie sicher, dass das gleiche binären erfolgreich in DEV / QA / BüHNE / ART mit einem weiteren Klick installiert werden, installieren kann ... Es gibt Unmengen von Zeug zu diesem Thema geschrieben, und Sie müssen präziser sein mit Ihrer Frage eine vernünftige Antwort zu bekommen

Führen Sie Ihre Haupt-Server auf einem anderen Port als 80-Stick ein leichtes Server (z nginx) vor ihm auf Port 80. Wenn Sie Ihre Website aktualisieren, eine andere Instanz auf einen neuen Port starten. Prüfung. Wenn Sie zufrieden sind, dass sie richtig eingesetzt wurde, bearbeiten Datei Ihre Proxy-Konfiguration, und starten Sie ihn neu. In nginx Fall ergibt dies ohne Ausfallzeiten oder fehlgeschlagenen Anfragen, und auch Leistungsverbesserungen gegenüber der typischeren Apache-only-Hosting-Option zur Verfügung stellen kann.

Natürlich ist dies kein Ersatz für einen richtigen Staging-Server, es ist nur ein ‚höflich‘ Weg, um die Übergabe mit begrenzten Ressourcen durchführen.

Um alles so gut wie möglich auf einem Test separate dev Website bevor sie veröffentlicht werden, verwende ich Selenium  (Eine Web-Seite Tester) laufen durch alle schiffbaren Teile der Seiten, Blindwerte in Formulare ausfüllen, überprüfen dass diese Werte erscheinen in den richtigen Stellen als Folge etc.

Es ist stark genug, um eine Menge von Javascript, um zu überprüfen oder dynamische Sachen auch.

Dann wird ein Schnelldurchgang mit Selen wieder nach die Live-Site Upgrade überprüft, ob das Update gearbeitet und keine fehlenden Verbindungen oder Datenbankfehler geben.

Es hat mich ein paar Mal gerettet durch subtile Fehler zu kontrollieren, dass Ich würde nur manuell durch Ausklopfen verpasst haben.

Auch wenn Sie die Live-Site hinter einer Art „Reverse Proxy“ setzen oder Lastenausgleich (wenn es groß ist), dass macht es einfach, Schalter zurück zur vorherige Version, wenn es Probleme gibt.

Der einzige Weg, es transparent für Ihre Nutzer zu machen, ist es hinter einem Lastenausgleich Proxy zu setzen. Sie nehmen einen Server, während Sie einen anderen Server aktualisieren. Dann, wenn Sie fertig Sie die, die Sie online aktualisiert setzen Aktualisierung und die andere nach unten nehmen. Das ist, wie wir es tun.

Wenn Sie jede Art von haben ‚Beta“ bauen, rollen sie nicht auf dem Live-Server aus. Wenn Sie eine ‚leben, beschäftigt site‘ stehen die Chancen, Menschen auf sie hämmern gehen und etwas Bruch geht.

Dies ist ein typisches Hoch availbility Setup, um eine hohe Verfügbarkeit halten Sie 3 Servern Minimum benötigen. 2 live Einsen und 1 Testserver. Zuzüglich allfälliger oter zusätzliche Server, wenn Sie einen dedizierten DB oder etwas haben.

Erstellen Sie eine Host-Klasse und Bereitstellung Ihre Live-Website auf der Host-Klasse. Mit dem Host-Klasse meine ich eine Reihe von Hosts in dem Load-Balancing-Setup und die einfachen Hinzufügen und Entfernen von Hosts aus der Klasse ist.

Wenn Sie mit dem Beta-Test und bereit für die Produktion fertig sind, keine Notwendigkeit, Ihre Website nach unten zu nehmen, entfernen Sie einfach einige Host aus der Produktion Host-Klasse, fügen Sie sie in neuer Host-Klasse und implementieren Ihren neuesten Code dort und Test richtig. Sobald Sie sicher sind, dass alles in Ordnung bewegen alle Ihre Gastgeber allmählich auf die neue und zeigen neue Host-Klasse als Produktionswirt Klasse arbeitet. Oder Sie das gleiche verwenden, können Sie zunächst verwendet haben, ganze Idee hinter dieser Aktivität ist es, sicherzustellen, dass Ihre Bereitstellung testen auf der Produktions-Box, wo Ihre Website wird nach der Bereitstellung ausgeführt werden, da einsetzen Probleme sind beängstigend und schwer zu debuggen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top