Das System hat weiterhin einen Geschäftswert.
Eine sofortige Abschaltung ist keine Option und der Funktionsumfang kann nicht über Nacht neu gebaut werden.
Zend Framework
Zend Framework ist Anfang 2020 im Laminas-Projekt aufgegangen. Seither erscheinen unter dem alten Namen keine Veröffentlichungen mehr, sämtliche Pakete sind als aufgegeben markiert und verweisen auf ihr Laminas-Gegenstück. Was das für Sie bedeutet, hängt an einer einzigen Zahl: Bei ZF2 und ZF3 ist der Weg zu Laminas weitgehend mechanisch. Bei ZF1 gibt es ihn nicht, dort geht es um Ablösung statt Migration.
Einstieg als erster Migrationsschritt zum Festpreis, Umsetzung nach Umfang. Auch für Anwendungen ohne Dokumentation und ohne die Leute, die sie gebaut haben.
Remote aus Deutschland. Direkt mit mir, ohne Agentur dazwischen.
Die Ausgangslage
Zend Framework 2 und 3 leben als Laminas weiter. Die Umstellung ist im Kern eine Umbenennung: Aus den Zend-Namensräumen werden Laminas-Namensräume, aus den Composer-Paketen die entsprechenden Laminas-Pakete. Dafür gibt es ein offizielles Werkzeug, das den größten Teil davon erledigt. Das ist Arbeit, aber es ist berechenbare Arbeit.
Zend Framework 1 ist ein anderer Fall. Es hat am 28. September 2016 sein Supportende erreicht, und es gibt keinen automatisierten Weg nach Laminas: Das Migrationswerkzeug deckt ausdrücklich erst Version 2 aufwärts ab. ZF1 stammt aus der Zeit vor Composer, hat ein eigenes MVC, eine eigene Datenbankschicht und Konventionen, die es später nirgends mehr gibt. Wer hier von Migration spricht, meint in Wahrheit Ablösung.
Dazu kommt fast immer ein zweites Problem: ZF1-Anwendungen hängen an alten PHP-Versionen, oft an solchen, die selbst keine Sicherheitsupdates mehr bekommen. Beides gleichzeitig anzufassen ist der zuverlässigste Weg, hinterher nicht mehr zu wissen, woran ein Fehler lag. Deshalb wird getrennt: erst der eine Schritt, dann der andere.
Kommt Ihnen etwas davon bekannt vor?Für wen das passt
Das Angebot richtet sich an CTOs und technische Leiter mit einer produktiven Zend-Framework-Anwendung. Das System trägt weiterhin Geschäft, doch Supportende, alte PHP-Versionen und schwindendes Wissen erhöhen mit jeder Änderung das Risiko.
Eine sofortige Abschaltung ist keine Option und der Funktionsumfang kann nicht über Nacht neu gebaut werden.
Module, Abhängigkeiten, Tests und Betriebswege werden erfasst, bevor über Laminas, Symfony oder eine schrittweise Ablösung entschieden wird.
Jeder Schritt soll produktiv nutzbar, testbar und bei Bedarf rückgängig zu machen sein.
Was ich mache
Welche ZF-Version steckt wirklich drin, und wie sauber ist die Grenze zum eigenen Code. Das entscheidet zwischen zwei völlig verschiedenen Vorhaben. Ergebnis ist eine klare Aussage: mechanische Migration nach Laminas, oder schrittweise Ablösung, mit dem jeweiligen Aufwand.
Das offizielle Migrationswerkzeug ersetzt Namensräume und Paketnamen im gesamten Bestand. Was danach bleibt, ist Handarbeit an den Stellen, an denen eigener Code auf Interna gesetzt hat, plus die Abhängigkeiten, die kein Laminas-Gegenstück haben. Jeder Durchlauf ein eigener Commit, einzeln überprüfbar.
Ohne automatisierten Weg wird ZF1 schrittweise abgelöst, nicht in einem Zug ersetzt. Eine Weiche vor der Anwendung, ein Bereich nach dem anderen auf einen gepflegten Stand, das Alte schrumpft. Jeder Schritt geht einzeln produktiv und lässt sich einzeln zurückdrehen.
ZF-Anwendungen haben selten Tests. Vor der ersten Änderung entstehen deshalb Characterization Tests, die festhalten, was das System heute tut. Nicht vollständig, sondern dort, wo angefasst wird und wo Geld hängt.
Fast jede ZF1-Anwendung hängt an einer PHP-Version ohne Sicherheitsupdates. Das gehört behoben, aber als eigener Schritt mit eigenem Rückweg. Framework und Sprache gleichzeitig zu wechseln macht jeden Fehler unauffindbar.
Am Ende steht ein Stand, für den es Veröffentlichungen, Sicherheitsupdates und Entwickler auf dem Markt gibt. Dazu Prüfungen in der Pipeline, damit der Abstand nicht wieder wächst.
Läuft Ihre Anwendung noch auf Zend Framework?
Schicken Sie mir die Eckdaten. Sie erfahren zuerst, in welchem der beiden Fälle Sie stecken, bevor Sie etwas beauftragen.
Ablauf
Vier Schritte, und nach dem ersten wissen Sie, ob Sie ein Migrations- oder ein Ablöseprojekt vor sich haben. Kein Schritt setzt voraus, dass Sie den nächsten beauftragen.
ZF-Version, PHP-Version, ungefähre Größe, Testabdeckung. Ein Lesezugriff auf das Repository genügt für den Befund; produktive Zugänge braucht es erst später.
Analyse des Bestands und der Abhängigkeiten. Ergebnis ist die Einordnung in einen der beiden Fälle, dazu eine Liste mit Fundstellen, Aufwand und Reihenfolge.
Testnetz an den Stellen, die angefasst werden. Danach je nach Fall der Migrationslauf oder der erste abgelöste Bereich. Jeder Schritt ein Commit.
Schrittweise in Produktion, mit Rückweg. Zum Schluss Prüfungen in der Pipeline und eine Übergabe, damit Ihr Team ab dann selbst weitermacht.
Einstieg
Startpreis. Die weitere Umsetzung wird nach Umfang angeboten, zum Festpreis, bevor sie beginnt.
Kein Gutachten, sondern ein Anfang: Sie erfahren nicht nur, in welchem der beiden Fälle Sie stecken, sondern sehen bei ZF2 und ZF3 das Ergebnis des mechanischen Migrationsschritts. Was danach offen bleibt, ist gemessen statt geschätzt.
Was Sie bekommen
Was Sie nicht bekommen
Das Ergebnis
Laminas veröffentlicht weiter und liefert Sicherheitsupdates. Der Satz „unser Framework ist aufgegeben" fällt im nächsten Audit nicht mehr.
Entwickler mit ZF1-Erfahrung sind schwer zu finden und werden es jedes Jahr mehr. Ein gepflegter Stand macht die Stelle wieder besetzbar.
Das Framework ist in ZF-Anwendungen fast immer der Grund, warum die PHP-Version nicht steigen kann. Danach ist dieser Grund weg.
Die Tests, die für die Umstellung entstanden sind, gehören danach Ihnen und sichern die nächste Änderung genauso ab.
Eingesetzte Technologien
Nachweis
Die meisten Anbieter kennen das Ziel. Bei einem alten System entscheidet aber, ob jemand auch die Ausgangslage kennt: warum eine Stelle so geschrieben ist, wie sie geschrieben ist, und was ihre Ablösung anrichtet. Zend Technologies gibt es unter dem Namen nicht mehr, die Prüfungen von damals also auch nicht. Für die Datenbankseite kommt eine Oracle-Zertifizierung auf MySQL 5 dazu, denn dort liegen die stilleren Fallen: Zeichensätze, Sortierregeln und ein Strict Mode, der bisher Geduldetes ablehnt.



Mit wem Sie es zu tun haben
Ich bin Tim Rutte. Über 20 Jahre Softwareentwicklung, und Zend Framework habe ich zu der Zeit eingesetzt, als es aktuell war. Sie sprechen mit der Person, die Ihren Code anfasst, vom ersten Gespräch bis zur Übergabe.
Häufige Fragen
Es wird nicht mehr weiterentwickelt, seit das Projekt Anfang 2020 als Laminas fortgeführt wird. Eine Zahl führt dabei regelmäßig in die Irre: Das Metapaket zendframework/zendframework endete zwar im Juni 2016, aber nur weil ZF3 auf Einzelveröffentlichungen je Komponente umstellte. Die zend-Komponenten erschienen bis Ende 2019 weiter. Seit dem Übergang zu Laminas kommen keine Korrekturen mehr, auch keine sicherheitsrelevanten.
Nein. Laminas ist die Fortführung von Zend Framework unter neuem Namen und neuer Trägerschaft. Für ZF2 und ZF3 ist die Umstellung im Kern eine Umbenennung von Namensräumen und Paketen, für die es ein offizielles Werkzeug gibt. Der eigene Code bleibt im Wesentlichen derselbe.
Nein, und das ist der wichtigste Unterschied auf dieser Seite. Das Migrationswerkzeug deckt ausdrücklich erst Version 2 aufwärts ab. ZF1 hat am 28. September 2016 sein Supportende erreicht und stammt architektonisch aus einer anderen Zeit. Hier führt kein Werkzeug hinüber, hier wird schrittweise abgelöst.
Der erste Migrationsschritt kostet ab 950 Euro netto und sagt Ihnen, was die Umsetzung kostet. Vorher ist jede Zahl geraten, weil zwischen den beiden Fällen Größenordnungen liegen: Eine ZF2-Anwendung kann in Tagen umgestellt sein, eine ZF1-Ablösung läuft über Monate. Die Umsetzung wird danach zum Festpreis angeboten.
Beides ist nötig, aber nicht gleichzeitig. Framework und Sprachversion zusammen zu wechseln heißt, bei einem Fehler nicht mehr zu wissen, woraus er stammt. Welcher Schritt zuerst kommt, hängt am Fall: Bei ZF2 und ZF3 meist die Migration, bei ZF1 oft ein Zwischenschritt auf eine PHP-Version, die das Alte gerade noch trägt.
Bei ZF2 und ZF3 fast nie: Der mechanische Weg nach Laminas ist um Größenordnungen billiger. Bei ZF1 ist die Frage berechtigt, und die Antwort lautet trotzdem selten Neubau in einem Zug. Der Neubau muss Verhalten nachbilden, das niemand vollständig kennt, während das alte System weiterläuft und sich verändert. Schrittweise Ablösung liefert ab dem ersten Monat Teile in Produktion.
Ja, das ist bei ZF-Anwendungen der Normalfall. Vor dem ersten Eingriff entsteht ein Netz aus Characterization Tests, das festhält, was das System heute tut. Es deckt die Stellen ab, die angefasst werden, und die Wege, an denen Geld hängt. Dieses Netz bleibt Ihnen danach erhalten.
Nein. Bei ZF2 und ZF3 ist die Umstellung eine Folge von Commits, die wie jede andere Änderung ausgerollt wird. Bei ZF1 läuft die Ablösung über eine Weiche vor der Anwendung: Ein Bereich nach dem anderen geht auf den neuen Stand, jeder einzeln ausrollbar und einzeln zurückdrehbar.
Weitere Leistungen
Gewachsene Systeme schrittweise modernisieren: Strangler-Fig statt Rewrite, laufender Betrieb unangetastet, jeder Schritt umkehrbar.
Mehr erfahrenVon PHP 5.6, 7 oder frühem 8 auf eine unterstützte Version, im laufenden Betrieb: Kompatibilitätsanalyse, Testnetz, automatisierte Umschreibung, schrittweiser Rollout.
Mehr erfahrenVon einer alten Symfony-Fassung auf einen gewarteten Zweig: Deprecations abbauen, Bundles ersetzen, Version für Version, im laufenden Betrieb.
Mehr erfahren