Vibe coding

Ein sauberes Backend ist nicht das ohne Bugs, sondern das mit leicht auffindbaren

Fat Controller, Business-Logik im Template, Services mit fuenfzehn Dependencies: normales Wachstum ohne Architektur-Pflege.

In Symfony- und PHP-Projekten sieht der Ausgangszustand oft aehnlich aus: Controller, die direkt auf die Datenbank zugreifen, Business-Logik, die in Templates steckt, Services mit zu vielen Abhaengigkeiten, und Events, die nirgendwo dokumentiert sind.

Das Schichten-Modell als Orientierung

Der Presentation Layer, also Controller und API, nimmt Anfragen entgegen und gibt Antworten zurueck, ohne eigene Business-Logik. Der Application Layer orchestriert Business-Logik ueber Services und Use Cases, kennt die Domaene, aber nicht die Datenbankstruktur. Der Domain Layer enthaelt reine Business-Logik ohne Framework-Abhaengigkeiten. Der Infrastructure Layer stellt konkrete Implementierungen fuer Datenbank, Caches und externe Services bereit.

Boundaries bewusst definieren

Wo hoert ein Modul auf, wo faengt das naechste an, wer darf wen aufrufen? In Symfony helfen Bundle-Grenzen, Service-Tags und der Event-Dispatcher, in einem Modulithen klare Interface-Definitionen zwischen Modulen. Greift ein Modul direkt auf die Datenbank eines anderen zu, ist das eine Grenzverletzung, die adressiert werden sollte.

Checkliste: Fat Controller identifiziert und Business-Logik extrahiert, klare Schichttrennung in kritischen Bereichen, Dependencies pro Service gezaehlt, Boundaries zwischen Modulen dokumentiert, Tests fuer refactorte Bereiche vorhanden, statische Analyse auf aktuellem Level gruen.

Ein Beispiel aus der Praxis

Ein Controller in einem gewachsenen Symfony-Projekt enthielt ueber sechshundert Zeilen Code, inklusive direkter Datenbankzugriffe, Validierungslogik und E-Mail-Versand, alles in derselben Methode. Jede kleine Aenderung erforderte, den gesamten Kontext im Kopf zu behalten, was die Fehleranfaelligkeit deutlich erhoehte. Nach der schrittweisen Auslagerung in separate Services, jeweils mit klarer Einzelverantwortung, sank die durchschnittliche Zeit fuer aehnliche Aenderungen in diesem Bereich auf etwa ein Drittel des urspruenglichen Aufwands.

Backend-Architektur verbessern? markom.digital macht Backend-Refactoring fuer Symfony-Projekte, mit Fokus auf Wartbarkeit und Testbarkeit.

Weitere Beiträge