Sicherheit, Standardisierung, Support: unser Plattform-Team
Hinweis: Im folgenden Beitrag erklären unsere Kollegen Christian, Head of Engineering beim DigitalService, und Kai, Tech Lead unseres Plattform-Teams, wie unsere Software Engineers mit und innerhalb eines Plattform-Teams arbeiten. Dafür werden vermehrt Fachbegriffe genutzt, die Menschen, die nicht mit der Entwicklung von Software vertraut sind, fremd sein können. Das technische Vokabular wird stets kurz aufgeschlüsselt. Trotzdem kann es mitunter schwerfallen, die einzelnen Schritte nachzuvollziehen. Für ein besseres Verständnis verlinken wir an den entsprechenden Stellen zu unserem Glossar. Wenn dennoch etwas unklar bleibt, beantworten wir Fragen gerne über die Kommentarspalte.
In unserer täglichen Software-Entwicklung arbeiten wir mit verschiedensten Projektpartnern aus diversen Ministerien und Bundeseinrichtungen: Alle haben andere Standards, Programme und technische Voraussetzungen. Trotzdem haben wir im Laufe der Zeit gemerkt: Wir müssen das Rad nicht jedes Mal neu erfinden, sondern können gewisse Komponenten intern nachnutzen. Mit der Idee einer Vereinheitlichung der Software-Entwicklung innerhalb des DigitalService haben wir im Sommer 2023 ein eigenes Plattform-Team gegründet. Es standardisiert Aspekte rund um Sicherheit und Infrastruktur. Im Blogbeitrag wird erklärt, wie das Team aufgebaut ist, wie es unsere Lösungen sicherer macht und weshalb die einzelnen Teams so weniger Komplexität managen müssen.
Unsere Ausgangssituation
Der DigitalService betreibt seine Lösungen konsequent mithilfe von Containern, was vollständig im Einklang mit der Container-Strategie des Bundes steht. Container sind isolierte Umgebungen, die es ermöglichen, Software und ihre Abhängigkeiten konsistent und portabel zu betreiben. Für das Management und die Orchestrierung dieser Container setzen wir auf Kubernetes. Das ist eine Plattform, die automatisiert die Verteilung und Skalierung unserer Anwendungen übernimmt.
Die Herausforderungen
Trotz oder gerade mit Kubernetes musste jedes Team aber noch viele Herausforderungen für sich selbst lösen: So hatten unterschiedliche Projektteams verschiedene Lösungen für Sicherheit und Wartung im Einsatz, was zu erheblichem Mehraufwand und Risiken führte. Insbesondere bei geteilten Komponenten ergab sich oft eine Verantwortungsdiffusion, da sich jedes Projektteam um Aspekte wie Secrets-Management, Deployment-Pipelines und Observability selbstständig kümmern musste. Mit der Einführung von GitOps über ArgoCD konnten zwar einige Probleme adressiert werden, jedoch mussten auch diese Systeme gewartet werden.
Die Pflege eigener Ressourcen durch die einzelnen Projektteams und die gleichzeitige Betreuung geteilter Ressourcen war nur dann effizient, wenn ausreichend Kapazitäten vorhanden waren. In der Praxis führte dies jedoch zu einem Flickenteppich, der langfristig weder nachhaltig noch sicher war. Daher war klar, dass wir eine standardisierte, zentralisierte Lösung benötigen.
Die Lösung: ein Plattform-Team
Unsere Antwort auf diese Herausforderungen war die Einrichtung eines dedizierten Plattform-Teams. Dieses Team hat die Aufgabe, eine konsistente, sichere und benutzerfreundliche Plattform bereitzustellen, auf die alle Projektteams zugreifen können. Die Projektteams selbst sind die Nutzenden dieser Plattform. Diese Struktur ermöglicht es uns, Sicherheit und Effizienz von Anfang an mitzudenken und klare Verantwortlichkeiten zu definieren. Gleichzeitig wird die Autonomie der Projektteams gesichert. Sie entscheiden basierend auf den Projektanforderungen, welche Komponenten der Plattform oder alternative Lösungen sie nutzen.
Vorteile eines Plattform-Teams:
- Einheitliche Strukturen: Durch die Bereitstellung einheitlicher Komponenten und Dienste vermeiden wir redundante Arbeiten und Inkonsistenzen.
- Sicherheitsfokus: Sicherheit wird von Beginn an in die Plattform integriert, was das Risiko von Sicherheitslücken minimiert.
- Klare Verantwortlichkeiten: Das Plattform-Team ist klar für die Wartung und Weiterentwicklung der Plattform verantwortlich, während die Projektteams sich auf ihre spezifischen Anwendungen konzentrieren können.
- Dokumentation und Unterstützung: Eine umfassende Dokumentation und regelmäßige Beratungen sorgen dafür, dass alle Teams die Plattform optimal nutzen können. Unterstützung erhalten die Teams beispielsweise bei Sicherheitsanalysen.
Aufbau und Arbeitsweise des Plattform-Teams
Unser Plattform-Team besteht aus drei erfahrenen Entwickler:innen mit insgesamt 40 Jahren Berufserfahrung. Das Team ist in regelmäßigem Austausch mit den Projektteams, um sicherzustellen, dass deren Bedürfnisse und Feedback in die Weiterentwicklung der Plattform einfließen. Es gibt zweiwöchentliche Office-Hours und einen monatlichen Austausch mit allen Entwicklungsteams, in dem niedrigschwellig Themen rund um Entwicklung und Security angesprochen werden. Natürlich steht das Plattform-Team aber auch für Ad hoc Anfragen bereit. Insgesamt basiert der Ansatz des Plattform-Teams auf „Hilfe zur Selbsthilfe“: Es befähigt die Projektteams, selbstständig und effizient zu arbeiten, da die grundlegende Infrastruktur bereitgestellt wird und die Teams bei Sicherheitsthemen beraten.
Konkrete Maßnahmen und Beispiele
Unsere Plattform bietet Basisdienste, die von allen Projekten genutzt werden können. Dazu gehören:
- Pipelines: Standardisierte Templates, die festlegen, wie unser Code gebaut und getestet wird.
- Dashboard: Ein zentrales Interface, über das Deployments verwaltet werden können.
- Secret-Management: Sichere Verwaltung von Zugangsdaten und anderen sensiblen Informationen.
- Observability: Umfassende Überwachung und Protokollierung, um Probleme schnell zu identifizieren und zu beheben.
- Dokumentation: Teams können sich im Self-Service auf einer Website selbst über die Angebote informieren, Best Practices sowie Leitfäden werden hier abgelegt.
Diese standardisierten Dienste sparen nicht nur Kosten, sondern erhöhen auch die Effizienz. Wenn etwa ein:e Entwickler:in das Team wechselt, findet die Person in ihrem neuen Team dieselbe Infrastruktur vor, was die Einarbeitungszeit verkürzt. Das skaliert sogar auf den Start ganz neuer Projekte: Mithilfe der Plattform können wir neue Projekte in der Regel innerhalb eines Tages online bringen.
Seit Sommer 2023 gibt es das Plattform-Team offiziell, nachdem wir die ersten Ansätze bereits Anfang 2023 eingeführt hatten. Da fehlte es allerdings an Ownership und kontinuierlichen Updates, weshalb wir den Prozess professionalisieren mussten. Heute ist die Plattform ein stabiler Bestandteil unserer Infrastruktur und alle Projekte bauen darauf auf.
Nächster Schritt: Cloud-Migration
Als Nächstes wird sich das Plattform-Team dem Thema Cloud-Migration widmen. Ziel ist eine bessere und kosteneffizientere Experience. Während der Migration ist geplant, Desaster-Recovery-Maßnahmen zu validieren und zu verbessern. Außerdem werden wir in besseres Kostenmanagement und Observability investieren. Wenn diese Maßnahmen umgesetzt sind, gibt es auf diesem Blog ein Update.