Aktuell verwendete Technologien in der tarent
tarent Blog

Aktuell verwendete Technologien in der tarent

10.08.2021 Posted 2 Jahren ago Martin Pelzer

In der tarent arbeiten wir ständig in unterschiedlichsten Projekten parallel für verschiedenste Kunden. Je nach Kundensituation orientieren wir uns entweder am vor Ort vorhandenen Technologie-Stack oder bringen unsere Expertise bei der Auswahl oder Erweiterung eines Technologie-Stacks ein. Das hat zur Folge, dass die Bandbreite der in der tarent eingesetzten Technologien recht groß ist. Einen Überblick über die aktuell verwendeten Technologien herzustellen ist eine Herausforderung. Typische tarent-Entwickler*innen fokussieren sich natürlich stark auf ihre aktuellen Kunden und bekommen daher im Tagesgeschäft recht wenig mit, was in anderen Teams für andere Kunden geschieht. Wir organisieren daher in der tarent regelmäßig Tech Talks zu einzelnen Technologien und ein mal im Jahr eine firmeninterne Technologiekonferenz. Um darüber hinaus einen Gesamtüberblick zu erhalten haben wir in der Vergangenheit mit unterschiedlichsten Ideen experimentiert (Teamposter, Online-Tech-Rating-Tool, …)

Aktuell verwenden wir eine regelmäßig stattfindende Umfrage unter allen tarent-Entwickler*innen, um diesen Technologie-Überblick zu erheben. Dabei geht es um die Frage “Welche Technologien setze ich in meinem aktuellen Projekt ein?” Darüber hinaus vorhandene, aber aktuell nicht benötigte Skills erfassen wir in dieser Umfrage bewusst nicht, um nicht einfach darzustellen, was wir als tarent können, sondern genau den Teil unserer Skills, den unsere Kunden zur Zeit von uns benötigen.

In diesem Artikel gebe ich einen Einblick in die Ergebnisse der aktuellen Umfrage. Teilgenommen haben tarent-Entwickler*innen, die in unterschiedlichen Projekten für über 20 unterschiedliche Kunden arbeiten.

Programmiersprachen

Bei den eingesetzten Programmiersprachen hat sich gezeigt, dass im Backend JavaScript in Form von NodeJS bei uns mittlerweile weit verbreitet ist und zu unseren etablierten Backend-Sprachen wie Java, Kotlin und Go aufgeschlossen hat. Die JVM-basierten Sprachen haben bei uns aber nach wie vor die größte Verbreitung. Python liegt bereits mit etwas Abstand hinter den vorgenannten Sprachen zurück.

Gerade in der JVM-Welt sind Frameworks wichtig. Hier ist Spring Boot bei uns nach wie vor dominierend. Micronaut und Quarkus liegen mit doch sehr deutlichem Abstand dahinter.

Da im Frontend bei uns – abgesehen von Mobile Frontends – ausschließlich Webanwendungen entwickelt werden, ist es nicht verwunderlich, dass hier bei den Programmiersprachen JavaScript und Typescript genannt werden. Beide haben eine etwa gleich hohe Verbreitung. Interessanter ist der Blick auf die Frameworks: Mit Angular, React und VueJS existieren drei große, mittlerweile etablierte Frameworks für Webanwendungen. Einen klaren Trend hin zu einem Framework können wir aktuell nicht erkennen. Bei uns liegt die Verwendung aller drei Frameworks auf einem fast identischen Niveau.

Bei der Entwicklung mobiler Apps hat uns die bereits recht hohe Verbreitung von Flutter überrascht. Zumindest in der tarent hat Flutter React Native den Rang als Framework der Wahl für plattformübergreifende Mobile Apps abgelaufen. Für plattformspezifische Apps verwundert die Verbreitung von Kotlin/Java für Android und Swift und Objective C für iOS nicht.

Testing

Bei den Test-Frameworks in der Java-Welt gibt es in der tarent seit Jahren zwei Lager: der klassischen JUnit-Fraktion steht die Spock-Fraktion gegenüber. Beide Lager sind groß, JUnit findet aktuell ein paar mehr Anhänger. Auch in der JavaScript-Welt gibt es bei uns kein klar dominierendes Framework. Hier liegen Jasmine und Jest gleich auf in der Verwendung. Für UI-Tests werden neben klassischem Selenium auch Geb und cypress eingesetzt. Auch das Robot-Framework findet Verwendung.

Datenbanken

NoSQL hat vor einigen Jahren die Datenbankwelt aufgescheucht und umgekrempelt. In der tarent sehen wir den Einsatz von MongoDB, Cassandra, REDIS und Elasticsearch. Anscheinend wählen unsere Teams NoSQL-Technologien aber nur für spezielle Einsätze aus. Klassische SQL-Datenbanken sind in der tarent nach wie vor breiter im Einsatz und scheinen für klassische Persistenz-Anwendungsfälle ohne besondere Anforderungen vorgezogen zu werden. Eine besondere Rolle kommt dabei PostgreSQL zu, das in der Verbreitung in der tarent mit weitem Abstand vorne liegt. MySQL mit seinen Varianten und Oracle liegen schon deutlich dahinter, aber beide mit kleinem Abstand vor den NoSQL-Datenbanken. Dieser Hang zu PostgreSQL ist in der tarent nichts Neues und schon seit über zehn Jahren erkennbar.

Schnittstellen

Unter der Überschrift Schnittstellen fasse ich hier alles zusammen, worüber Kommunikation zwischen unterschiedlichen Systemkomponenten abgebildet werden kann, d.h. sowohl klassische synchrone API-Schnittstellen als auch asynchrone Konzepte wie Message Broker. In der tarent fällt der starke Fokus auf REST und Apache Kafka auf. Diese beiden Technologien führen das Ranking mit überwältigendem Abstand an. GraphQL hat zwar mittlerweile ein wenig Verbreitung gefunden, liegt aber wie auch gRPC und Websockets deutlich hinter REST zurück. SOAP scheint nicht totzukriegen zu sein und wird mit einer kleinen Verbreitung auch bei uns immer noch verwendet. Besonders auf die weitere Verbreitung von GraphQL in der tarent möchten wir in der nächsten Zeit unser Augenmerk richten.

Hinter Apache Kafka ist im Messaging-Bereich das MQTT-Protokoll bei uns verbreitet. Als Broker kommen hier HiveMQ und Mosquitto zum Einsatz. MQTT kommt insbesondere in IoT-Projekten zum Einsatz. Weitere Technologien in diesem Bereich sind RabbitMQ und die Cloud-basierten Technologien AWS SNS/SQS, Azure Service Bus und Google Pub Sub.

DevOps, Hosting & Betrieb

Eine klare Aussage der aktuellen Umfrageergebnisse ist, dass Container bei uns mittlerweile fast durchgehend das Mittel der Wahl zur Bereitstellung von Deployment-Artefakten sind. Dass noch Jars, Wars, Zips oder sonstwas ausgeliefert werden kommt praktisch nicht mehr vor. Folgerichtig ist auch Kubernetes die Runtime der Wahl. Abweichungen von diesem Schema gibt es natürlich in Projekten, die auf Serverless-Architekturen setzen. In der tarent ist die Mehrzahl der Projekte aber basierend auf Containern und Kubernetes.

Im Bereich CI tauchen bei uns sowohl Gitlab CI, Jenkins als auch Github Actions auf. Dass Gitlab CI dabei die führende Position einnimmt, liegt wohl primär daran, dass unsere eigene hausinterne Build-Infrastruktur, die wir für interne Projekte verwenden und Kunden bereitstellen, die das Thema an uns auslagern möchten, auf Gitlab basiert.

Im Bereich DevOps sind weitere relevante Technologien Ansible und etwas weniger vertreten Terraform und Helm.

Bei den Cloud-Providern hat die tarent keinen präferierten Anbieter, sondern sucht gemeinsam mit dem Kunden den passendsten heraus. Insofern sind wir in unseren Projekten sowohl bei AWS wie auch bei GCP und Azure unterwegs. Bei uns ist entgegen dem Marktanteil der Cloud-Provider GCP die verbreitetste Plattform, was auf der einen Seite einigen großen Kunden geschuldet ist, auf der anderen Seite aber auch die Präferenz vieler tarent-Entwickler*innen widerspiegelt. Azure hat bei uns bisher die geringste Verbreitung der drei großen Anbieter gefunden. Im Bereich Private Cloud ist bei uns OpenShift das Mittel der Wahl. Die Umfrage hat ergeben, dass inzwischen zwei Drittel unserer Entwickler*innen in Projekten auf einer Cloud-Plattform arbeiten und nur noch ein Drittel in Projekten, bei denen auf VMs oder gar auf Blech deployed wird.

Und sonst noch so?

Bei der Absicherung von Web-Anwendungen findet Keycloak unter Verwendung des OpenID-Connect-Standards bei uns nach wie vor weite Verbreitung. Im Bereich der E-Commerce-Plattformen arbeiten wir viel mit Magento und Commercetools. Bei Content-Management-Systemen treffen wir primär auf Typo 3, Contentstack, WordPress und strapi. Als IoT-Plattform setzen wir gern auf Cumolocity. Im Bereich AR/VR ist Unity das Framework der Wahl.

Wo geht’s hin?

Tja, eine Glaskugel haben wir leider nicht. Wir erwarten eine rasch wachsende Zunahme der Verbreitung von GraphQL und beobachten daneben gRPC. Der Trend hin zu Cloud-Plattformen wird wohl weiter anhalten. Die weitere Entwicklung von Flutter beobachten wir gespannt und fragen uns, ob im x-ten Anlauf vielleicht ein Framework zur einheitlichen Entwicklung von Apps für beide Mobile-Plattformen entsteht. NodeJS wird im Backend vor allem auch aufgrund der Verbreitung im Serverless-Umfeld weiter an Bedeutung gewinnen. Wir erwarten aber nicht, dass die JVM-Sprachen und Go daneben in absehbarer Zeit stark an Bedeutung verlieren werden. Bei den Web-Frontends können wir zur Zeit nicht absehen, ob sich im Rennen zwischen Angular, React und VueJS ein Framework wird absetzen können.

Natürlich sind die Ergebnisse dieser Umfrage keine allgemeingültige Aussage, sondern ein Abbild dessen, was im spezifischen Kundenfeld der tarent aktuell passiert. Da dieses Kundenfeld aber recht breit und branchenübergreifend ist, glauben wir, mit diesen Ergebnissen ein ganz gutes Bild vom aktuellen Stand der in der Software-Entwicklung verwendeten Technologien geben zu können.

Martin Pelzer

Martin Pelzer, IT-Consultant, Senior Software Developer, Product Owner

Martins LinkedIn Profil