Die „richtige“ Programmiersprache für Microservices

Häufig erleben wir lebhafte Diskussionen in Vorgesprächen mit Kunden, in denen es um die Wahl der „einzig richtigen“ Programmiersprache für Microservices geht.

Die Gespräche enden dann meist in zwei Forderungen:

  • Alle Microservices müssen in der „Hausprogrammiersprache“ des Kunden formuliert werden
  • das komplette Tooling einer neuen Lösung muss sich an den bereits lizensierten
    Softwareprodukten des Kunden orientieren.

Warum beide Forderungen aus unserer Sicht kontraproduktiv sind, möchten wir in diesem Beitrag aufzeigen.

Was macht eine Microservice-Umgebung besonders?

Im Erstellungsprozess für Software spielt die eigentliche Programmiersprache heute bestenfalls eine untergeordnete Rolle. Stattdessen stehen Vorgehensmodelle wie die agile Entwicklung nach SCRUM und immer ausgefeiltere Open Source Software wie der Jenkins-Workflow-Server im Fokus.

Die folgende Abbildung zeigt einen typischen Prozess in einer modernen IT-Umgebung und die Aufwände, die in den verschiedenen Phasen entstehen:

1) Envision (Planung, 30%)
Bevor Software entwickelt wird, fließen große Aufwände in die Planung: „Wie passt die neue Software zu bestehenden Komponenten oder Benutzeroberflächen?“, „Welche Fachabteilung verantwortet und trägt den Betrieb?“, „Welche Funktionen benötigen interne Benutzer oder Kunden tatsächlich?“…

2) Create (Im Team entwickeln, 25%) – Bühne frei für „die Programmiersprache“
In einer oder mehreren Programmiersprachen (z. B. Java und SQL und Spring MVC, C# und Linq und Angular 2) werden die geforderten Funktionen und Benutzeroberflächen erstellt und mit automatisierten Tests versehen.

3) Commit (Integration, 10%)
Software wird versioniert, dokumentiert (z. B. über Wiki-Funktionen) und steht dann für die weiteren Prozesse zur Verfügung. Unterschiedliche Entwicklerversionen werden integriert.

4) Build (Funktionstests und Paketierung, 20%)
Das Herz der Softwareentwicklung – hier werden zentrale Funktionstests und Qualitätssicherungsmaßnahmen angestoßen. Die Ergebnisse werden über verschiedene Kanäle zurückgeliefert, z. B. als Instant Messages in Slack oder als neue Tickets in JIRA.

5) Deploy (Inbetriebnahme, 15%)
Moderne IT-Betriebsumgebungen werden heute über VMs und Applikationscontainer erstellt, gewartet und skaliert. Dabei helfen Datacenter-Produkte wie Mesos von Mesosphere, die Softwareartefakte mittels Ansible und Docker in verschiedene IT-Landschaften verteilen.

Sieht man den Gesamtprozess, in dem die Programmiersprache maximal 25% ausmacht, in Verbindung mit der Tatsache, dass in anderen Phasen der Entwicklung im Sinne einer „Infrastucture as Code“ ebenfalls Scriptsprachen zum Einsatz kommen (z. B. Ansible, Jenkins_Scripte) – relativiert sich die (oft vehemente) Forderung von IT-Verantwortlichen nach „nur einer Programmiersprache“.

Oft wird auch übersehen, dass die meisten Entwickler von Haus aus mehrere Sprachen sprechen: z. B. ist SQL für Datenbanken wie Oracle oder Microsoft SQL-Server eine DSL (Domänenspezifische Sprache) und HTML eine Auszeichnungssprache für Benutzeroberflächen.

Was sind Auswahlkriterien für eine Programmiersprache?

Da der wesentliche Kostenfaktor die Integration von Basis-Systemen, wie z. B. Datenbanken oder MessageQueues ist, haben wir für die Consort Microservice Experience Sprachen nicht nur hinsichtlich ihrer Semantik oder Effektivität untersucht, sondern auch in Hinblick auf die Unterstützung der Basis-Systeme:

Basis-System Java Javascript Python
Eureka Service Discovery ok ok ok
Spring Boot Config ok ok ok
Docker Fähigkeit unter Linux ok ok ok
Rabbit Message Queue ok ok ok
Echtzeit Sockets ok ok ok
REST APIs ok ok ok
Swagger 2.0 API-Doc ok ok ok
Auth0 Support + JWT ok ok ok
Support für Log-Appender ok ok ok
NoSQL MongoDB ok ok ok

Welche Programmiersprachen unterstützt die Consort Microservice Experience?

Ein wichtiger Microservice-Gedanke ist, dass bei der Entwicklung eines Services die Programmiersprache vom entsprechenden Scrum-Team frei gewählt werden sollte. Dadurch ist sichergestellt, dass eine Programmiersprache zum Einsatz kommt, in der die Beteiligten Experten sind und die dem zu lösenden Problem (technisch, betriebswirtschaftlich, statistisch, …) angemessen ist.

Bei Consort beraten und schulen wir Entwickler im Umgang mit den Sprachen Java, Javascript (npm) und Python – wobei alle Sprachen als gleichberechtigt gelten. Laut Redmonk-Index decken wir damit die ersten 4 Plätze der 2016 tatsächlich weltweit in Produktion verwendeten Programmiersprachen ab.

Java

Im Java-Umfeld verwenden wir Java 8 zusammen mit dem Spring Boot Framework. Der Zero-Configuration-Ansatz von Spring Boot lässt sich optimal mit dem Microservice-Gedankengut verbinden und mit Spring Cloud stehen verschiedene Infrastruktur-Verbindungen zur Verfügung.

Javascript

Während reines Javascript einen schlechten Ruf bezüglich Lesbarkeit hat, hat sich die Kombination ECMA-Script 6 mit Typescript (nicht zu letzt dank Angular 2) zum neuen Star der Programmiersprachen entwickelt. Bei Consort IT setzen wir Typescript sowohl bei der Entwicklung von NodeJS-Serveranwendungen, als auch bei der Gestaltung von Angular2-Frontends ein.

Python

Die leicht verständliche Universalprogrammiersprache Python wird bei Consort in der Version 3.6 eingesetzt. Vor allem viele US-amerikanische Universitäten verwenden Python als Lehrsprache, weshalb Python außer bei Google und Youtube auch von vielen Startups verwendet wird.

Programmiersprachen und Tools als wichtiger Faktor bei der Mitarbeitersuche

Die Suche nach fähigen Entwicklern wird zum größten Hindernis beim Wachstum von Unternehmen in Deutschland. Viele High-Potentials bringen Experten-Kenntnisse im Umgang mit Tools und neuen Programmiersprachen mit, möchten diese weiter ausbauen und einsetzen. Diese Fähigkeiten wurden meist in einer Teamkultur erlernt, in der das „Wie mache ich das?“ (Tooling) weit wichtiger ist als das „Wie formuliere ich das im Code?“ (Programmiersprache).

Da die IT in vielen deutschen Unternehmen noch nach dem Gleichschaltungsprinzip funktioniert und die zugrundeliegenden Entscheidungen 10 Jahre oder älter sind, finden sich viele junge Talente in dieser IT nicht wieder.

Die Microservice-Kultur bietet von Grund auf die Wahlmöglichkeit und die Veränderbarkeit von Tools und ist deshalb der ideale Nährboden für die Gewinnung und langfristige Bindung von wissensdurstigen Mitarbeitern, die in diesem Umfeld immer wieder Entwicklungsmöglichkeiten für sich und das Unternehmen gestalten werden…

Consort hilft Ihrem Unternehmen bei der Realisierung heterogener Microservice-Architekturen nach dem Motto AnyCloud:AnyLanguage!

Kommentar schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.