Symfony als Grundlage professioneller Web-Anwendungen

Symfony Logo

Das “Web 2.0” ist mittlerweile überall angekommen, doch kaum jemand weiß, wie dieses “neue” Web funktioniert. Viele dieser neuen Webseiten und Anwendungen basieren auf einem Application-Framework.

Was ist ein “Application-Framework” und wozu dient es?
Ein Application-Framework dient in erster Linie dazu, den Quellcode zu organisieren und auf eine einheitliche sowie übersichtliche Art zu programmieren. Ein modernes Framework kann aber bei weitem mehr. Da wären auf der einen Seite die klassischen Template-, MVC- und Datenbank-Funktionalitäten, die in so gut wie jedem aktuellen Framework zu finden sind, zum anderen gibt es aber auch erweiterte Funktionen, wie zum Beispiel Mehrsprachigkeit oder ein internes Caching für eine verbesserte Performance. Diese bereitgestellten Funktionen erleichtern dem Entwickler das implementieren der Geschäftslogik, ersparen zum Teil sehr viel Schreibarbeit (Zeit) und fördern die Qualität der Anwendung.
Große Frameworks wie symfony bieten zusätzlich eine Möglichkeit, automatisierte Tests auszuführen, die prüfen, ob jeder Bereich der Anwendung das gewünschte Ergebnis erzeugt und so potentiellen Fehlern vorbeugen kann.

Warum symfony?
Nach dem ich mehrere verschiedene Frameworks begutachtet und getestet habe, erschien mir symfony als am weitesten entwickelt und auf dem aktuellen Stand der Technik zu sein.
Ein wichtiger Punkt war aber auch die Erfahrung die dieses Projekt bislang gesammelt hat. Bereits seit 2005 gibt es die 1.x-Versionen von symfony, die zum Teil noch heute im Einsatz sind und als sehr zuverlässig und robust gelten. Viele größere Webseiten basieren auf dem symfony Framework und auch der Einsatz in Firmen-internen Projekten wie z.B. Intranet-Anwendungen meistert symfony mit Bravour.

Ein weiterer Vorteil ist die Tatsache, dass hinter dem symfony-Projekt die Firma Sensio Labs, mit Sitz in Frankreich, steht. Diese Firma ist neben der OpenSource-Community die treibende Kraft hinter dem Projekt. Sensio Labs stellt einen Großteil der Kern-Entwickler und ist auf vielen Events rund um dieses Thema vertreten.
Diese Tatsache lässt darauf vertrauen, dass dieses Projekt noch einige Zeit aktiv weiterentwickelt und mit Patches versorgt wird. Dieser Punkt war mir bei der finalen Entscheidung sehr wichtig, denn es sind im Laufe der letzten Jahre immer wieder Projekte von der Bildfläche verschwunden und man musste sich dann im schlimmsten Fall eine komplett neue Grundlage suchen oder die Weiterentwicklung in die eigene Hand nehmen.

OpenSource vs. Proprietär
Als es darum ging, ein neues Framework für unsere zukünftigen Projekte zu finden, stand zunächst der Vorschlag im Raum, ein komplett eigenes Framework zu entwickeln. Nach einigen Diskussionen und Recherchen haben wir aber schnell gemerkt, dass eigene Frameworks häufig einen entscheidenden Nachteil haben: Die Wartung ist sehr zeitintensiv und neue Funktionen müssen immer selbst konzipiert und implementiert werden.
Diese Tatsache ist grundsätzlich erst einmal kein Ausschlusskriterium, dennoch muss man diesen Faktor berücksichtigen. Wenn man seine Projekte schnell und effizient umsetzten möchte, ist es immer sinnvoller bereits vorhandene Funktionalitäten zu verwenden, anstelle diese erst aufwendig in Eigenregie implementieren zu müssen.
Ebenfalls ist die Sicherheit und die Performance des Frameworks ein gewichtiger Aspekt. Durch die große OpenSoruce-Gemeinschaft werden mögliche Risiken oder Engpässe schnell erkannt und behoben. In eigenen Implementierungen, muss man im Verhältnis sehr viel Manpower und Ressourcen investieren, um ein gleichwertiges Resultat zu erzielen.

symfony bei basecom
Wir bei der basecom, verwenden das symfony-Framework für einige Performance-kritische Kundenprojekte sowie für die Entwicklung neuer Eigenprojekte im Intra- und Internet-Umfeld.
Dabei kommt uns zu gute, dass symfony weit verbreitet ist und es viele Entwickler gibt, die dieses Framework beherrschen. So ist es uns beispielsweise möglich, bei Entwicklungs-Engpässen schneller neue Mitarbeiter zu finden, die uns bei Projekten unterstützen können und Teil des basecom-Teams werden.