Technologie-Stack

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-Sytem 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.