Zum Inhaltsbereich wechseln
English
Im Fokus ist ein aufgeklapptes Laptop, an dem eine Person arbeitet, deren Hände zu sehen sind

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 aufge­schlüs­selt. 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 Projekt­part­nern 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 Infra­struk­tur. 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, zentrali­sierte Lösung benötigen.

Auf einem großen PC-Bildschirm sind Ausschnitte der Dokumentationsumgebung des Plattform-Teams zu sehen

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 benutzer­freundliche 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 entschei­den basierend auf den Projektanforderungen, welche Komponenten der Plattform oder alternative Lösungen sie nutzen.

Vorteile eines Plattform-Teams:

  1. Einheitliche Strukturen: Durch die Bereitstellung einheitlicher Komponenten und Dienste vermeiden wir redundante Arbeiten und Inkonsistenzen.
  2. Sicherheitsfokus: Sicherheit wird von Beginn an in die Plattform integriert, was das Risiko von Sicherheitslücken minimiert.
  3. 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.
  4. 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 Aus­tausch mit allen Entwicklungsteams, in dem niedrigschwellig Themen rund um Entwick­lung 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 kontinu­ier­lichen 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.


Porträtfoto des Autors Christian Kaatz

Christian Kaatz

ist Head of Engineering beim DigitalService. Während seines Studiums hat er Stadtpläne in Äthiopien angefertigt, bevor er dann bei Nokia und HERE unter anderem in den Bereichen Data Engineering, Backend und APIs tätig war. Christian ist Papa von zwei Kindern und nutzt jede freie Minute, um mit ihnen gemeinsam die Natur zu entdecken – gerne auch in den Gemeinschaftsgärten auf dem Tempelhofer Feld.

Porträtfoto des Autors Kai Bernhard

Kai Bernhard

ist seit Februar 2023 beim DigitalService als Tech Lead und Solution Architect. Aktuell ist er Project Lead des Plattform-Teams. Vorher war er bei Nokia und HERE Technologies sowie Start-ups in diversen Bereichen von Medizin bis Videospielen unterwegs. Privat verausgabt er sich beim Klettern oder wenn er selbst elektronische Musik komponiert.


Mehr zum Thema lesen