Symfony für digitale Bundesprojekte
22. Juni 2018
Symfony für digitale Bundesprojekte
21 Schweizer Kantone und das Bundesamt für Energie (BFE) setzten auf Open Source basierte Lösungen der IWF Web Solutions zur Abwicklung von Gesuchen für energetische Sanierungen. Das OSS PHP-Framework „Symfony“ bildet die Grundlage.
2016 standen die kantonalen Energiefachstellen vor der Herausforderung, ab 1. Januar 2017 die vollständige elektronische Erfassung und Verarbeitung von Gesuchen für das Gebäudeprogramm anzubieten. 21 Kantone entschieden sich, eine gemeinsame Lösung in Auftrag zu geben. Nach Durchführung einer öffentlichen Ausschreibung erhielt die IWF Web Solutions den Zuschlag.
Die fachspezifischen Anforderungen und die Herausforderung der kantonalen Konfigurationen liessen sich nicht mit einem Standardtool abdecken. Der komplette Gesuchstellungs- und Bearbeitungsprozess in den Fachstellen musste als Individualprodukt entwickelt werden. Die Applikation wurde in zwei Teilen gebaut: Ein Webportal um die Gesuche von mehr als 15‘000 Gesuchstellern zu erfassen und deren Status einzusehen. Und separaten Web-Applikationen für die prozessgesteuert Bearbeitung durch die 21 kantonalen Fachstellen.
Nachdem das Produkt am 1. Januar 2017 in Betrieb ging, erhielt die IWF Web Solutions Mitte 2017 einen weiteren Auftrag vom Bundesamt für Energie: Alle von den Kantonen im Gesuchsprozess für das Gebäudeprogramm erfassten Daten müssen zentral vom BFE geprüft und aggregiert werden, um eine Datenbasis und Übersicht für die Verteilung der vom Bund zur Verfügung gestellten Fördergelder zu erhalten und um den finalen Publikumsreport generieren zu können.
Performance, Stabilität, Wiederverwendbarkeit der Bundles, sowie das Datenbankmanagement mittels Doctrine waren ausschlaggebend für den Erfolg des Projektes.
Da diese Bundesprojekte voraussichtlich über zehn Jahre betrieben und weiterentwickelt werden müssen, kamen für die beiden Aufträge nur Frameworks in Frage, die folgende Kriterien aufwiesen:
- Hohe technische Maturität und grosse Verbreitung
- Eine seriöse Roadmap mit Long Term Support Versionen (LTS)
- Umfangreiche Features für komplexe, mehrsprachige Applikationen
- Unterstützung der beschriebenen Betriebsumgebun-gen sowie weiteren Anforderungen des BIT (Bundesamt für Informatik)
PHP-Framework Symfony als Lösung
Das PHP-Framework „Symfony“ erfüllt all diese Anforderungen. Die Symfony Community verfügt über 500‘000 Entwickler weltweit und knackte am 5. September 2017 die Marke von 1 Milliarde Downloads. LTS Versionen von Symfony zeichnen sich durch eine hohe Stabilität und Performance aus. Die aktuellste LTS-Version vom November 2017 erhält Bug Fixes bis 2020 und Security Fixes bis 2021. Grössere Umstellungen an der Architektur des Frameworks (Major Versionen) erfolgen „nur“ alle zwei Jahre. Minor-Versionen erscheinen genau zweimal pro Jahr. Ein „Backward Compatibility Promise“ sorgt dafür, dass das Upgrade von Minor-Versionen (z.B. 3.3 auf 3.4) im Regelfall problemlos mit geringen Anpassungen möglich ist.
Neue Major-Versionen wiederum werden auf einem separaten Zweig entwickelt und verbleiben sehr lange in einem Beta-Stadium, bevor das erste Release offiziell veröffentlicht wird. So können sich Entwickler über viele Monate hinweg ein Bild der Änderungen machen und den Lifecycle ihrer Produkte entsprechend planen. Mit Symfony konnten die Anforderungen des BIT übertroffen werden und einen nahtlose Integration in die verschiedenen Betriebsumgebungen des BIT innert kürzester Zeit realisiert werden. Speziell für die Energie-Projekte relevant waren folgende Features des Frameworks:
- Möglichkeiten zur Abstrahierung der APIs für verschie-dene Eingabe- und Ausgabeformate (HTML-Eingabe-formulare, Javascript-Single-Page-Apps mit ExtJS, JSON-REST- und XML-APIs zur Kommunikation Frotend-Backend und der Anbindung spezifischer kantonaler Schnittstellen)
- die Symfony Expression Language zur Abbildung und Speicherung kantonaler Logik zur unterschiedlichen Be-rechnung der Förderbeiträge pro Kanton
- das Security-System zur unabhängigen Authentifizierung unterschiedlicher Benutzertypen (Gesuchsteller und kan-tonaler Bearbeiter/Administratoren) und Zugangsvarian-ten (Browser-Login, API-Login)
- die vollständige Unterstützung von Mehrsprachigkeit (ein „Muss“ für schweizweit eingesetzte Software)
- die Komponenten zur Abbildung komplexer Validierungs-logik
- die grosse Menge an gut gewarteten Zusatzmodulen (sog. Bundles)
Das vollständige Praxisbeispiel als pdf --> Fachbeitrag Jens Hassler