Symfony für digitale Bundesprojekte

Screen Shot 06 22 18 at 10 33 AM

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 Her­ausforderung, ab 1. Januar 2017 die vollständige elektronische Erfassung und Verarbeitung von Gesuchen für das Gebäude­programm anzubieten. 21 Kantone entschieden sich, eine ge­meinsame 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 Individual­produkt entwickelt werden. Die Applikation wurde in zwei Tei­len 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 Bearbei­tung 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 Gesuchspro­zess 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 Publi­kumsreport 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 betrie­ben und weiterentwickelt werden müssen, kamen für die bei­den Aufträge nur Frameworks in Frage, die folgende Kriterien aufwiesen:

  1. Hohe technische Maturität und grosse Verbreitung
  2. Eine seriöse Roadmap mit Long Term Support Versionen (LTS)
  3. Umfangreiche Features für komplexe, mehrsprachige Applikationen
  4. 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 Anforderun­gen. 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 Architek­tur 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 Upgra­de von Minor-Versionen (z.B. 3.3 auf 3.4) im Regelfall problem­los mit geringen Anpassungen möglich ist.

Neue Major-Versionen wiederum werden auf einem separaten Zweig entwickelt und verbleiben sehr lange in einem Beta-Sta­dium, 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 entspre­chend planen. Mit Symfony konnten die Anforderungen des BIT übertroffen werden und einen nahtlose Integration in die ver­schiedenen Betriebsumgebungen des BIT innert kürzester Zeit realisiert werden. Speziell für die Energie-Projekte relevant wa­ren 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