Servus,
Du schreibst von 100.000 bis 300.000 Besuchern. Am Tag? Pro Stunde? Jedenfalls ist das eine erhebliche Zahl, und wenn die eine Stunde lang nicht shoppen können, dann ist das äußerst übel. Egal wie toll entschuldigt das wird. Die Anwendung steht ja sicherlich nicht zum Spaß da.
Gleichzeitig. Es finden pro Tag zwischen 2 und 4 mio Transaktion statt.
Es wird ja nicht täglich etwas deploy. Wenn e hoch kommt, dann ist die anwendung pro Monat 0,25 Stunden down. Das wiederum zu einer schwach besuchten Zeit ist ja klar. Ebenfalls ist bis zu 1 Stunde im Regelfall geht`s schneller aber leider nicht immer.
Den Worstcase haben wir in 60 Minuten debuggt gehabt.
-> Im übrigen sind wir Gott sei Dank nicht für den Schrott denn man uns liefet Verantwortlich.
Also: Zweite Infrastruktur schaffen. Für kleine Anwendungen hätte ich gesagt, dass man mit entsprechenden virtualhost-Einträgen in einem Apache was tun könnte.
»»
Das klappt aber auch nicht immer, da Du viele Transaktionen parallel halten müsstest.
Eine Transaktionsreplizierung bereitet sogar Sun Cluster Probleme.
Weswegen man davon wieder weg gekommen ist.
Einen Weblogic Server und Session Replizierung ist ein Todestoss der Extraklasse.
Kann man tatsächlich auch. Wenn es (wie gesagt: klein gedacht) um eine PHP-Anwendung ginge, könnte man die in einem neuen Verzeichnis installieren und erstmal über einen Testnamen angucken. Die Datenbank bleibt vielleicht identisch, die Session-Daten liegen auch an derselben Stelle - dann kann man durch simples Wechseln der Virtualhost-Konfiguration nahezu unterbrechungsfrei auf die neue Version updaten, ohne dass irgendwelche Daten verlorengehen.
Ja dann schon aber mit sowas habe ich recht selten zu tun.
Wir haben zwar ganz klar einen Load Balancer etc. damit schafft man downtimes auf das wenigste zu reduzieren aber bei DB Änderungen muss die Applikation komplett neu gestartet werden.
Da es leider einige unangenehme Abhängikeiten gibt, zwingt uns das auch immer wieder alle Bereich "gleichzeitig" neu zu versorgen.
Ich hasse diese Clonerei.
Wenn an der DB Strukturen geändert wurden, ist das ganze etwas schwieriger. Dann muß man versuchen, die DB möglichst verlustfrei auszutauschen. Dabei kann es im Zweifel zu Verlusten kommen, denn solange die alte Applikation läuft, kommen neue Datensätze in der alten DB hinzu, die alle in die neue DB integriert werden müssen. Hierfür ist unter Umständen Downtime notwendig, andererseits ließe sich auch ein zeitweiliger Parallelbetrieb einrichten. Bestehende Sessions können bis zu ihrem Verfall die alte DB weiternutzen, und neue Sessions werden nur noch aufs neue System geleitet.
Ja und diverse Anwendungen reissen dann den Bea incl. Nodemanager runter. Ausserdem werden unsere Daten aus der DB gelesen und im Cache Vollständig gehalten lediglich Transaktionen werden direkt über eine weiter Schnittstelle in der DB abgelegt.
Asyncron / Syncrone Replizierung nennt man das hier.
-> Die Anwendung ist nicht zwingend abhängig vom Abschluss der Transaktion prüft dieses jedoch ab und an mal wieder nach und aktualisiert diese bei bedarf.
Das schnellste Verfahren um überhaubt, das erlaubt uns ja eine extrem hohe Transaktionsverwaltung und bietet dem endkunden einen gleich "langsamen" Webauftritt.
In jedem Fall muß man solche Downtime-Vermeidungsstrategien im Konzept vorsehen. Nachträglich reinpfriemeln dürfte schwierig werden.
Sicher doch aber darum geht es ja eigentlich nicht.
Die Frage ist in wie weit man dem Enduser davon Bescheid gibt und zwar ganz am Anfang.
Wenn ich da an die Zeiterfassung bei einem unserer Kunden denke.
Man pflegt eine gute Stunde nseine Stunden eines Monats.
(Ich schreib e ja immer in mei Filofax und übertrage es hinterher in die Zeiterfassung.
Ein schönes Webinterface. Was pasierte kürzlich?
Klar die DB würde reindiziert.
Ich pflegte also 3 Stunden meine Daten. Ist halt ellen langsam und man muss jeden Handgriff auf eine andere Kostenstelle buchen.
Fertig. Ich wollte speichern. Was passiert?
Tut uns leid die DB wird gerade reindiziert.
Versuchen Sie es doch in 60 Min. wieder.
Tja aber in 5 Minuen läuft meine Session ab.
3 Stunden arbeit für die Katz *argh*
Und wenn sowas dann tatsächlich notwendig wird, ist eine Ankündigung sicherlich nicht verkehrt. Nur bitte entsprechend dezent. Popups und Alertboxen sind nicht förderlich. Das erzeugt dann eher das Gefühl, man habe es irgendwie mit einer Beta-Version zu tun, wenn man so eindringlich vor der Benutzung gewarnt würde.
Naja Popups sind ja auch keine schöne Lösug aber es sollte so erkennbar sein, dass man eben gleich von vornherein sieht.
Ja ok gucken kann man aber ales andere mach ich später.
Aber sind wir doch mal ehrlich. Das meiste was man in solchem Stil an Software hat sind ohnehin nur Betaversionen und der Endanwender ist der Betatester. Nur leider weiss das keiner.
Gruss Matze