Symfony – Ein Hidden Champion, den Sie kennen sollten
Wir entwickeln schon seit 2011 individuelle Weblösungen auf Basis des PHP-Frameworks Symfony. Im Gespräch mit Kund*innen stellen wir allerdings immer wieder fest, dass Symfony durchaus nicht jedem ein Begriff ist, der sich aus Anwenderperspektive mit Webanwendungen auseinandersetzt. Wir wollen deshalb in diesem Blogbeitrag etwas näher darauf eingehen, warum Symfony für uns und für viele unserer Kund*innen eine interessante Technologie ist, die man kennen sollte. Um Ihnen einen möglichst guten Überblick über die Einsatzmöglichkeiten und Potenziale des PHP-Frameworks zu geben, haben wir unseren Büronachbarn, den Symfony-Spezialisten Christian Flothmann, gebeten, seine Expertise mit uns und Ihnen zu teilen.
Christian, du bist als Softwareentwickler und Consultant deutschlandweit in unterschiedlichste Symfony-Projekte involviert. Bevor wir etwas tiefer in die Materie einsteigen: Symfony ist ein PHP-Framework. Was muss man sich darunter vorstellen?
Wenn ich ein Online Business erfolgreich betreiben möchte, bin ich daran interessiert, meine Energie auf das Wesentliche zu konzentrieren: Für die meisten Unternehmen bedeutet das, Waren und Dienstleistungen online zu verkaufen und anzubieten. Das Erstellen von Onlineanwendungen für den E-Commerce gehört in der Regel nicht dazu. Derartige Anwendungen sind letztlich eher Mittel zum Zweck, um die eigenen Produkte den Kund*innen verfügbar zu machen. Die Zeit und die Ressourcen, die ich als Onlinehändler in die Anwendungsentwicklung investiere, müssen sich auf den Bereich meines Onlineauftritts fokussieren, der mich einzigartig macht und mich von der Masse abhebt. Ich möchte also möglichst wenig Ressourcen in die Lösung von Problemen investieren, die jedes Onlineprojekt zu bewältigen hat. Das betrifft zum Beispiel die Fragen: Wie schaffe ich es, dass meine Anwendung überhaupt im Internet erreichbar ist? Wie kann ich bestimmte Bereiche meiner Website absichern? Brauche ich beispielsweise einen Passwortschutz, sodass ich selbst meinen Warenkatalog pflegen kann, sonst aber niemand Zugriff darauf hat? Müssen vielleicht die Benutzerkonten meiner Kund*innen abgesichert werden, damit nur berechtigte Personen Zugang zu den hinterlegten Daten haben? Das sind alles allgemeine Problemstellungen, die sich nicht auf mein spezielles Geschäftsmodell beziehen. Frameworks können mir dann helfen, diese generischen Probleme zu lösen, sodass ich mich auf das Wesentliche meines Geschäfts konzentrieren kann und Zeit und Mittel gezielt in den Bereichen einsetze, die mein Onlinegeschäft einzigartig machen. Frameworks liefern Antworten und Lösungen zu wiederkehrenden Fragen und Aufgaben und sorgen so dafür, dass Projekte effizienter umgesetzt werden können.
Symfony ist ein Beispiel für solch ein Framework, das in der Programmiersprache PHP entwickelt ist, die im Bereich der Webentwicklung zu den am weitesten verbreiteten Programmiersprachen zählt.
Christian Flothmann
Softwareentwickler & Consultant
Christian Flothmann alias xabbuh arbeitet als Symfony Core-Entwickler und ist ehemaliger Softwareentwickler von basecom. Trotz seines beruflichen Wechsels, ist er uns als Untermieter treu geblieben, sodass wir ihn zwischen seinen Kunden- und Konferenzbesuchen auch weiterhin regelmäßig für einen Plausch an der Kaffeemaschine treffen können. Außerdem ist er leidenschaftlicher Fan des VfL Osnabrück, LEGO-begeistert und absolut vorbildlich bei der Wahl seiner Verkehrsmittel, denn er zieht den Zug immer einem Flugzeug vor.
- GitHub: github.com/xabbuh
- Twitter: twitter.com/xabbuh
- Symfony Contributors: Top 3 Code Contributors
- SensioLabs Deutschland: sensiolabs.de
Als PHP-Webframework ist Symfony also eine Art Grundgerüst für die Erstellung von Websites und Webanwendungen. Wodurch zeichnet sich Symfony dabei besonders aus?
Eine große Stärke von Symfony ist die Planbarkeit. Wenn ich mit Symfony arbeite, weiß ich, ich bekomme monatliche Bugfixes für meine Anwendungen. Ich kann mich darauf verlassen, dass halbjährlich neue Features herauskommen, die ich in meine Anwendungen integrieren kann. Ich habe fest definierte Support-Zeiträume: Die halbjährlichen Releases werden beispielsweise acht Monate lang mit Bugfixes versorgt und sicherheitsrelevante Fehler werden behoben. Alle zwei Jahre gibt es ein sogenanntes Long-Term Support Release. Diese Version wird für drei Jahre mit Bugfixes und für vier Jahre mit sicherheitsrelevanten Fixes versorgt. Dadurch habe ich als Nutzer eine sehr hohe Planungssicherheit, da ich genau weiß, wann es neue Versionen der Software gibt und wie lange meine Software unterstützt wird. Die garantierten Supportzeiträume werden von Symfonys Versprechen der Abwärtskompatibilität ergänzt. Ich kann meine Anwendung nicht nur regelmäßig auf die neueste Version aktualisieren, sondern es ist durch einen kontinuierlichen Upgradefpad auch sichergestellt, dass meine Anwendung nach einer Aktualisierung noch funktioniert. Existierende Funktionen werden nicht in regulären Releases, sondern nur alle zwei Jahre bei Bedarf entfernt und vorher transparent angekündigt, so dass ich mich als Entwickler*in gezielt darauf vorbereiten kann. Darüber hinaus ist Symfony Open Source; der Quellcode ist frei verfügbar. Symfony steht unter der MIT-Lizenz und kann lizenzkostenfrei genutzt werden. Symfony hat eine sehr große und aktive Unterstützer-Community, die dazu beiträgt Bugs in der Software zu finden und zu beheben und neue Features bereitzustellen.
Symfony wird als Basistechnologie in vielen unterschiedlichen Zusammenhängen eingesetzt. Gibt es typische Anwendungsfälle oder Beispiele für Softwareprojekte, in denen Symfony verwendet wird?
Die Anwendungsmöglichkeiten von Symfony sind prinzipiell sehr vielfältig. Man kann aber grob zwei große Bereiche unterscheiden, in denen Symfony eingesetzt wird. Das ist zum einen der Bereich der vollständigen Individualentwicklung. Hier habe ich sehr spezielle Projekte und digitale Geschäftsmodelle, bei denen im Prinzip die komplette Mechanik, der komplette Prozessablauf auf Basis von Symfony individuell entwickelt und implementiert wird. Symfony bietet dabei die Möglichkeit für die Umsetzung vieler infrastruktureller und grundsätzlicher Lösungen auf sogenannte Bundles zurückzugreifen. Diese Bundles stellen, vereinfacht ausgedrückt, das Pluginsystem von Symfony dar. Das heißt, wenn ich eine bestimmte Aufgabe erfüllen möchte, die mit dem Kernsystem noch nicht abgebildet werden kann, ist die Wahrscheinlichkeit sehr hoch, dass es bereits ein Bundle gibt, das ich zusätzlich installieren kann, um diese Aufgabe zu lösen. Das können beispielsweise Lösungen für Elasticsearch oder bekannte Datenbanksysteme sein, die dann über beispielsweise Doctrine an das System angebunden werden, geht aber auch in Bereiche hinein, die durchaus auf höherem Level angesiedelt sind. Auf Basis von Symfony können so sehr komplexe, individuelle Weblösungen realisiert werden, während viel grundlegende Funktionen bereits durch das Framework selbst oder durch schon bestehende Bundles abgedeckt werden können.
Zum anderen wird Symfony als Basistechnologie für viele E-Commerce-Anwendungen genutzt. Das ist der zweite große Anwendungsbereich des Frameworks. Wenn man so will ‘Frameworks auf dem Framework’: Systeme wie Akeneo PIM oder das Shopsystem Shopware aus Deutschland, das in der neuen Version Shopware 6 auf Symfony im Full Stack zurückgreift und verschiedene Content Management Systeme bieten Lösungen für ganz spezifische Herausforderungen und können dabei individuell an die Anforderungen der Nutzer angepasst werden. Wenn man also in dieser Richtung nach Produktlösungen sucht, findet man eine ganze Reihe von Softwarelösungen auf Basis von Symfony, die teilweise auch direkt eingesetzt werden können, und viele wiederkehrende Problemlösungen beispielsweise im E-Commerce schon mitbringen, sodass an dieser Stelle der Entwicklungsaufwand verhältnismäßig gering ist. Mann muss dann zum Beispiel ein Warenkorbsystem nicht mehr neu entwickeln und kann sich darauf konzentrieren, dem Kunden ein möglichst gutes Shoppingerlebnis zu ermöglichen. Man muss dabei auch im Kopf behalten, dass es den Kunden letztlich nicht interessiert, was da im Hintergrund läuft. Die Nutzer einer Website wollen intuitiv zu bedienende Benutzeroberflächen und ein gute Usability. Das muss das eigentliche Ziel der Softwareentwicklung sein.
Auf der anderen Seite ist es für Unternehmen wichtig, schnell auf Veränderungen und neue Situationen am Markt reagieren zu können. Softwarelösungen, die die Möglichkeit dazu schaffen, indem sie die nötige Flexibilität bereitstellen, sind da natürlich im Vorteil. Wie wichtig das ist, sieht man in der aktuellen Coronakrise: Unternehmen die im Bereich des digitalen Handels vorgebaut haben, können jetzt auf die veränderte Nachfragesituation besser reagieren.
Für basecom ist Symfony inzwischen eine absolute Schlüsseltechnologie. Alle Entwickler*innen die neu bei uns anfangen, werden in der bascom Academy in Symfony geschult. Im Bereich der Individualentwicklung setzt basecom auf Symfony, um komplexe Web- und Portallösungen für Kund*innen umzusetzen. Gleichzeitig ist das Framework auch in den Bereichen Shop und PIM enorm wichtig. Du hast auf Akeneo und das Shopsystem Shopware 6 hingewiesen. Man könnte auch das PIM-System Pimcore nennen. Welche Rolle spielt Symfony als Basistechnologie im E-Commerce?
Es ist definitiv ein Trend, den man über die letzten Jahre beobachten kann. Die Systeme, die du jetzt aufgezählt hast, sind ja noch nicht so alt. Wir merken aber in unserer täglichen Arbeit, dass die Nachfrage in diesem Bereich immer größer wird und sehen, dass die Bedeutung und die Verbreitung dieser System zunimmt. Entsprechend steigt die Nachfrage nach Softwareentwicklern die in dieser Richtung geschult sind. Wir können das daran festmachen, dass wir inzwischen sehr häufig nach spezialisierten Trainings für Entwickler*innen gefragt werden, die mit Akeneo, Shopware usw. arbeiten. Die zunehmende Verbreitung dieser Systeme bedeutet deshalb auch, dass Symfony an Bedeutung gewinnt, da unter der Haube mit Symfony gearbeitet wird. Das Spezialisierungslevel ist hier vielleicht nicht eins zu eins mit dem Know-how vergleichbar, dass Symfony-Spezialisten mitbringen die im Bereich der Individualentwicklung mit Symfony arbeiten und tiefer in das Framework eintauchen. Entwickler*innen, die zum Beispiel mit einem E-Commerce-System auf Symfony-Basis arbeiten, können aber auf jeden Fall davon profitieren, Symfony-Kenntnisse zu haben, die Konzepte zu verstehen und beispielsweise zu wissen, an welcher Stelle sie bestimmte Erweiterungspunkte nutzen können, um Probleme zu lösen.
Als Rahmenwerk dient Symfony den unterschiedlichsten Webanwendungen als Grundlage. Wir haben über verschiedene Beispiele gesprochen. Meine letzte Frage: Wie funktioniert das konkret? Kannst du das zum Abschluss noch einmal anschaulich machen?
Man kann sich das ganz gut als ein Schichtmodell, wie eine Zwiebel vorstellen: Die unterste Schicht, der Kern, ist das Protokoll, mit dem der Browser mit dem Webserver kommuniziert. Drumherum folgen weitere Schichten, die uns das Leben erleichtern. Die Aufgabe der Entwicklung ist dann letztendlich, zu erkennen, welches die richtige Schicht ist, um bestimmte Veränderungen vorzunehmen oder Probleme zu lösen. Manche Dinge sind sehr gut über die Benutzeroberfläche zu lösen, indem man etwa Gestaltungselemente verändert oder anpasst, andere Dinge sind unter Umständen besser auf einer tieferen Ebene zu lösen, weil man hier mit sehr wenigen Eingriffen die Veränderungen im Verhalten erzeugen kann, die man sich wünscht. Je besser man sich mit den unterschiedlichen Schichten auskennt, desto besser ist man in der Lage die optimale Lösung zu finden und umzusetzen.
Vielen Dank, Christian, dass du dir die Zeit genommen hast, um das Thema Symfony einmal in dieser Ausführlichkeit und Tiefe vor allem aber auch so anschaulich zu erklären! Für weitere Informationen zu unseren Leistungen im Bereich der individuellen Software- und Webentwicklung auf Basis des PHP-Frameworks Symfony besuchen Sie unsere Website und sprechen Sie uns einfach an! Unsere Experten beraten Sie gerne!