am 25. Februar 2010
Nachdem ich gestern einen kleine Proof of Concept gebastelt habe und der, nach der Anzahl der Kommentare zufolge, recht gut den Tag gefüllt hat, wollen wir diesen Donnerstag dazu nutzen ein wenig aus dem Nähkästchen zu plaudern.
Da ich meinen Source-Code nicht mehr einfach per FTP auf den Server schiebe, wie ich das vielleicht vor einiger Zeit noch gemacht habe, möchte ich erzählen, wie der Deploymentprozess bei uns im Moment aussieht und wohin ich noch kommen will, denn der Stand, wie es derzeit läuft ist zwar ausreichend, aber ist nicht meine Zielarchitektur.
Punkt eins: für die Datenbank habe ich keine Lösung. Da fast alle, bis jetzt waren es sogar alle, Datenbankänderungen, die ich in diesem Blog hatte, abwärtskompatibel waren, war da eine komplexe Lösung auch nicht nötig. Das passiert also händisch, falls es passiert.
Gehen wir also zurück zum Quellcode. Wie viele von euch auch verwende ich eine Versionsverwaltung, bei mir ist es SVN, für mein Projekt. Das ist ganz praktisch, da ich so ohne Probleme an mehreren Rechnern arbeiten kann. Das Backup hat sich damit auch erledigt. Habe ich eine Funktionalität fertig und die soll live gehen, so habe ich mein Staging-System, das sich auch auf dem Live-Server befindet. Unter beta.phphatesme.com kann dieses erreicht werden. Alles was ich dort machen muss ist ein svn -up und schon sind die aktuellen PHP Files auf dem System. Dann teste ich das ganze unter der „geheimen“ url und wenn alles funktioniert, dann stelle ich live.
Livestellen ist in meinem Fall ein Shellskript, dass den Quellcode in das Live-Verzeichnis kopiert. Mehr ist nicht nötig.
Was mir fehlt, aber bis jetzt auch nicht benötigt war, ist der Rollback. Natürlich kann man sagen, dass das grob fahrlässig ist, nicht zu dem Stand vor dem Release zurückkehren zu können, aber wir sind nicht kommerziell, uns verzeiht man, wenn wir mal 30min down sind. Und wenn es dann mal wirklich die Lösung des Problem gewesen wäre, dann hätte ich am nächsten Tag die Lösung live. Da bin ich mir sicher.
Wie es eigentlich sein sollte oder besser, wie ich es mir vorstellen würde ist wie folgt: Das Livestellen der Sourcen ist nicht ein umkopieren, sondern einen symbolischen Link umlegen. Damit bleiben alle Versionen live und ich kann zu jeder zurückkehren, wenn ich will. Ich werde mich die nächste Zeit mal hinsetzen und das ganze in Visio oder so gießen, damit man es auch versteht.
Was man sich einfach merken sollte ist, dass man SVN und Co. verwenden, ein Stagingsystem andenken und ein Rollback planen/ermöglichen sollte.