Vor und Nachteile von Frameworks
Wieso es sinnvoll ist ein Framework zu verwenden und wieso wir in der individuellen Webentwicklung mit einem Framework wie Symfony arbeiten, erfährst du in diesem Beitrag. Ebenso Teil des Artikels ist die Diskussion von Vor- und Nachteilen aus dem Blickwinkel aller Beteiligten - vom Entwickler bis zum Kunden.
Was ein Framework ist – und wieso wir bei PHP-Projekte auf das Symfony-Framework setzen.
Für fast jeder Programmiersprache gibt es Frameworks. Beispielsweise gibt es für Ruby – Ruby on Rails, für JavaScript gibt es Node.js und für PHP beispielsweise Symfony oder Laravel. Frameworks sind Werkzeuge, die in vielerlei Hinsicht die Arbeit von Entwickler:innen erleichtern und die gesamte Entwicklungsarbeit eines IT-Unternehmens und oder deren Kunden verbessern können.
Ziel eines Frameworks ist es, die Abläufe von Anwendungen in einer Programmiersprache zu standardisieren und zu strukturieren. Sie enthalten in der Regel dokumentierte Schnittstellen zur Anbindung weiterer Anwendungen (API) sowie Vorlagen, Standardmodule und Bibliotheken. Gleichzeitig soll die für kundenspezifische Entwicklung notwendige Flexibilität erhalten bleiben. Der Begriff Framework bezeichnet hierbei einen Ordnungsrahmen, der als eine Art Gerüst fungiert, das den Entwickler bei seiner Arbeit unterstützt und die Arbeit im Team erleichtert.
Vorteile, die durch die Standardisierung eines Frameworks entstehen:
- leichtere Wartung
- bessere Skalierbarkeit
- leichtere Integration und Anbindung von Informationssystemen
- unkomplizierte Verwendung von generischen Modulen
- unkomplizierte Einarbeit von neuen Entwicklern
Es gibt sicherlich nur sehr wenige professionelle Internetagenturen oder Entwicklerteams, die für komplexere Projekte auf den Nutzen eines Frameworks verzichten. Manche entwickeln ihr eigenes Framework, beispielsweise mithilfe, der Symfony Components, die auch die Symphonie-Framework-Alternative Laravel verwendet. TYPO3 beispielsweise entwickelte ein eigenes Framework (Flow/Extbase) auf Basis der Symfony Components. Wie sinnvoll das ist und ob sich diese Mehrarbeit lohnt, muss jeder für sich und seinen Anwendungsfall entscheiden.
Es ist aber sicherlich kein Fehler, mit einem bestehenden Framework zu beginnen, um mit der gesammelten Erfahrung ein eigenes Framework zu entwickeln. Da aber beispielsweise Symfony sehr leicht individuell konfigurierbar ist, sowie eine quasi unendliche Anzahl an Möglichkeiten bietet, muss man schon sehr gute Gründe haben, darauf zu verzichten.
Also Framework um jeden Preis?
Nein – ein Framework zwingt den Entwicklern in gewisser Weise immer seine spezifische Denkweise auf. Wenn der Use-Case nicht in die Art des Denkens passt, macht man sich meist deutlich mehr Aufwand als man haben muss. Auch bringt ein Framework ein Haufen von Funktionalität mit, den man, wenn man ein simples Projekt umsetzen möchte, nicht benötigt.
Ein simples und etwas extremes Beispiel hierfür wäre:
Sie möchten auf Ihrer Seite die Wörter “hello world” ausgeben. In reinem PHP-Code wäre das: Wenn Sie dies mit einem Framework machen möchten, beispielsweise mit Symfony, dann müssen Sie:
- Symfony installieren
- Symfony konfigurieren
- Eine Route anlegen
- Einen Controller anlegen
- Ein Template anlegen
Durch Frameworks werden bei langfristigen und eher komplexen Projekten, bei denen tendenziell mehrere Entwickler arbeiten, Ressourcen eingespart und die Produktentwicklungskosten reduziert. Allerdings lohnt sich der Aufwand unserer Erfahrung auch schon bei kleineren Projekten. Je nach Größe und Komplexität, sowie Projektziel muss man dann wiederum zwischen unterschiedlichen Frameworks wählen. Wieso wir deshalb beispielsweise Symfony statt Laravel verwenden, erfahren Sie im nächsten Abschnitt.
Was ist Symfony und wie hilft es uns?
Symfony ist wie oben bereits beschrieben ein PHP-Framework, das auf der Programmiersprache PHP aufbaut. Es findet viel Verwendung in der Entwicklung von Shopsystem und Content-Management-Systemen und ist somit im E-Commerce weit verbreitet. Shopware und auch das Chameleon-System wurden beispielsweise mit Symfony entwickelt. All unsere PHP – basierten Projekte setzen wir auf Symfony-Basis um. Zum einen aus den bereits oben genannten Gründen, aber auch, weil es die Arbeit unseres gesamten Dienstleistungsangebots erleichtert sowie die Qualität und die Skalierbarkeit von unseren Projekten erhöht und viele E-Commerce-Projekte in Deutschland auf Symfony aufbauen.
Es vereinfacht die Arbeit von unseren Programmierern auch in der Hinsicht, dass ein Entwickler nicht ständig das Rad neu erfinden muss. Bereits programmierte Module, wie beispielsweise ein Authentifizierungs-Formular, müssen nicht neu entwickelt werden, sondern können von anderen Entwicklern ebenfalls verwendet werden. Außerdem liefert Symfony ein enormes Paket an Libraries und ist mit allen anderen PHP Bibliotheken interoperabel.
Sollte ein Entwickler aus einem unserer Teams, aus welchen Gründen auch immer, ausfallen, ist es durch die festgelegte und für den Entwickler bekannte Struktur einfacher, sich in neue Inhalte einzuarbeiten. Wir können hierdurch die Fortführung des Projekts, in der Regel ohne Verzögerung, gewährleisten und somit ein hohes Maß an Sicherheit bieten. Auch dies gibt sowohl dem entwickelnden Unternehmen wie auch dem Kunden Sicherheit. Neue Mitarbeiter, die beispielsweise schon Erfahrung mit Symfony oder einem anderen Framework gesammelt haben, können sich zudem trotz unterschiedlicher Inhalte, leichter in das Projekt einarbeiten.
Aktuell kann jedoch kein Framework die Update-Problematik umfänglich automatisieren und erleichtern. Irgendwann muss man sich dem externen Release Cycle anpassen und teilweise mit viel Migrations-Aufwand Updates machen, um weiterhin mit einer unterstützten Framework-Version zu arbeiten. Trotzdem ist die Wartbarkeit durch ein Framework leichter, als ohne, da die Zeiteinsparungen durch alltägliche Produktivitätsverbesserungen um ein vielfaches größer sind als die für ein einmaliges Update benötigte Zeit.
Wieso verwenden wir überwiegend Symfony und nicht Laravel?
Beide Frameworks haben ihre Berechtigung und beide haben sich in der Praxis bewährt. Es kommt wie so oft immer darauf an, welches Ziel verfolgt werden soll und vor allem, wie man es erreichen möchte.
Symfony optimiert, sehr verkürzt und rudimentär zusammengefasst auf eine verbesserte Struktur. Wodurch vor allem die Qualität in den Vordergrund rückt. Deshalb wird es gerne für komplexe Enterprise Lösungen verwendet. Häufig kosten Symfony Projekte aufgrund Ihrer Komplexität mehr Geld, was durch die bessere Personalisierbarkeit jedoch ausgeglichen wird. Ebenso kann man mithilfe von Symfony einzelne Bundles eines Projekts updaten und verbessern, ohne dass man das ganze Projekt neu aufsetzen muss, was die Wartbarkeit erleichtert.
Laravel optimiert durch kurzen, leicht verständlichen Code eher auf die Produktivität, also auf Produktivität. Es bietet sich also vor allem für E-Commerce Projekte an, die sehr schnell und günstig umgesetzt werden sollen. Es bietet sehr viele nützliche Implementierungen, die die Arbeit der Entwickler erleichtern können. Auf der anderen Seite kann hierdurch unnötiger Code angehäuft werden, der wiederum die Programme langsamer machen kann.
Im Endeffekt, ist es Abhängig vom Projekt, der angebotenen Dienstleistung und der Kundschaft, ob man eher mit dem Framework Laravel oder Symfony arbeitet. Für uns ist die Qualität von großer Bedeutung, da wir der Meinung sind, dass man durch ein hohes Maß an Qualität schneller am Ziel ist, denn am Ziel sein heißt meistens nur, dass man vor einem neuen Ziel steht. Eine solide, verlässliche Grundlage bietet hierfür die Arbeit mit Symfony.