Entwicklung

Bei T2med arbeiten derzeit zehn Entwicklungsteams in einem agilen Entwicklungsprozess nach Kanban. Sechs dieser Teams sind hauptsächlich mit der Weiterentwicklung unseres Praxisverwaltungssystems beschäftigt. Während Team ID die Entwicklung und den Betrieb unserer Online-Dienste sowie das Management der internen Entwicklungsinfrastruktur vorantreibt, sorgt Team SQ mit umfassenden Teststrategien für die Qualitätssicherung unserer Produkte. Team KI treibt die Entwicklung innovativer KI-Features voran, um intelligente Funktionen und Automatisierungen in unsere Software zu integrieren. Team Architektur stellt die Zukunftsfähigkeit unserer Systeme sicher, indem es sich um die Integration übergreifender Funktionen und die strategische Weiterentwicklung der Systemlandschaft kümmert und Team Dokumentation sorgt stets für einen aktuellen Stand unserer Anwenderdokumentation.

Teams

Team Architektur

4 Softwareentwickler / Architekten

Projekte:

Team CR

3 Softwareentwickler:innen

Projekte:

Team Dokumentation

2 Technical Writers

Projekte:

Team ID

5 Softwareentwickler:innen / DevOps-Engineers 1 Product Owner

Projekte:

Team KI

6 Softwareentwickler:innen / DevOps-Engineers

Projekte:

Team J

7 Softwareentwickler:innen 1 Product Owner

Projekte:

Team Q

6 Softwareentwickler:innen 1 Product Owner

Projekte:

Team SQ

8 Tester:innen 1 Testmanager

Projekte:

Team UI

3 Softwareentwickler:innen 1 Product Owner

Projekte:

Team X

7 Softwareentwickler:innen 1 Product Owner

Projekte:

Außerhalb der Teams agieren teamübergreifend fachspezifische Product Owner:innen, ein Agile Coach, ein Innovations- & Technologieberater und unser Entwicklungsleiter.

Technologien

Bei T2med werden eine Reihe unterschiedlicher Technologien eingesetzt. Je nach Anwendungsgebiet wird versucht, die geeignetsten dafür auszuwählen. Grundsätzlich lässt sich der Technologie-Stack aber wie folgt beschreiben:

  • Unsere Backends, d. h. alle unsere Services und Serveranwedungen, werden hauptsächlich auf der Java Virtual Machine betrieben. Für neuere Projekte setzen wir dabei fast ausschließlich auf Kotlin als Programmiersprache.
  • Bei den Frontends gibt es durchaus etwas mehr Abwechslung, da die Zielplattform hier häufig bereits die Technologieauswahl einschränkt.
  • Grundsätzlich versuchen wir, wann immer es möglich ist, auf quelloffene Frameworks und Technologien zurückzugreifen um so zukunftssicher zu bleiben.

Die folgenden Abschnitte geben einen detaillierten Überblick über unseren Technik-Stack.

Sprachen

  • Unser Praxisverwaltungssystem ist unser primäres und größtes Softwareprojekt und ist hauptsächlich in Java geschrieben. Der dazugehörige Desktop-Client nutzt JavaFX.
  • Bei der Entwicklung neuerer Dienste, Bibliotheken und beim Build-Tooling setzen wir fast ausschließlich auf Kotlin, da unsere Entwickler:innen die gute Developer-Experience zu schätzen wissen.

Für unseren mobilen Apps kommen u.a. Objective-C, Swift und Dart zu Einsatz. Unsere Webanwendungen setzen, wie nicht anders zu erwarten ist, auf die üblichen Verdächtigen: HTML, CSS und JavaScript.

Frameworks

  • Die meisten unserer Backends setzen auf Spring als Framework. Genutzt wird dazu in den meisten Fällen Spring Boot zusammen mit Spring Data / Hibernate für den Zugriff auf die Datenbank.
  • Beim Bau kleinerer, leichtgewichtigerer Dienste setzen wir häufig Ktor ein. Ktor ist ein Anwendungsframework von JetBrains für HTTP-Services und -Clients, welches auf Kotlin und Coroutinen setzt.
  • Flutter ist ein plattformübergreifendes, quelloffenes Framework von Google zur Erstellung von Apps. Wir nutzen Flutter für die Entwicklung der PatMed-App.

Datenbanken

  • PostgreSQL ist eine bewährte, quelloffene, relationale Datenbank. So gut wie all unsere Dienste, die eine persistente Datenhaltung benötigen, setzen auf PostgreSQL.

Tooling

  • Gradle ist ein leistungsstarkes und flexibles Build-System zugeschnitten auf die Java Virtual Machine. Gradle nutzen wir für das Bauen unserer Anwendungen und zur Durchführung automatisierter Tests.
  • TeamCity ist die von uns genutzte Continuous-Integration-Lösung. Mithilfe von TeamCity werden unsere Anwendungen zentral gebaut, getestet und bereitgestellt. Unsere Online-Services lassen sich per Knopfdruck direkt auf Test- und Produktivsysteme deployen.
  • Grafana ist ein Tool zum Visualisieren von Metriken. Wir nutzen Grafana zum Überwachen unserer Infrastruktur und Services und zur Auswertung wichtiger Metriken.
  • GitLab ist eine umfassende DevOps-Platform, die den gesamten Entwicklungszyklus abbildet. Wir nutzen GitLab hauptsächlich nur als Versionsverwaltungsystem.
  • Docker setzen wir sowohl im Betrieb unserer Infrastruktur und verschiedener Dienste als auch für unsere TeamCity-Buildumgebungen ein.
  • Für Infrastructure as Code (IaC) setzen wir Terraform ein, um unsere Cloud-Infrastruktur zu definieren, bereitzustellen und zu verwalten.
  • Zur Orchestrierung unserer containerisierten Anwendungen setzen wir Kubernetes für eine verbesserte Skalierbarkeit und Ausfallsicherheit ein.

Alltägliche Werkzeuge

Für die tägliche Arbeit, sowohl im Bereich Projektmanagement als auch zur Softwareentwicklung, kommen einige unabdingbare Programme zu Einsatz, von denen wir die wichtigsten hier nicht unerwähnt lassen möchten:

  • Zur Entwicklung all unserer Anwendungen nutzen wir fast ausschließlich IntelliJ IDEA, eine der umfangreichsten und produktivsten IDEs in der Java- und Kotlin-Welt.
  • Zur alltäglichen Kommunikation wie z.B. Stand-Ups oder Pair-Programming nutzen wir Microsoft Teams.
  • Zur Projektplanung und Umsetzung des Kanban-Workflows nutzen wir YouTrack. Zusätzlich dient es es auch als interne Wissensdatenbank.