Java-Trends 2019: Agile, DevOps, Chaos Engineering, Microservices

Teaserbild Illustration Tasse mit dampfendem Getränk

Jedes Jahr zeigt die W-JAX Konferenz für Java, Architektur- und Software-Innovation wo die Reise in der Software-Entwicklung hingeht. Erfahren Sie im Folgenden mehr über die wichtigsten Java-Trends.

Agile Entwicklung & DevOps

„Agil“ ist seit langem ein großer Trend in der Software-Entwicklung, trotzdem nutzen noch nicht alle Unternehmen agile Methoden. Das liegt vor allem daran, dass agil nicht nur eine Methodik sondern eine Kultur im gesamten Unternehmen ist, die sich nicht von heute auf morgen entwickeln lässt. Damit agile Kultur in der Software-Entwicklung funktioniert, müssen auch andere Unternehmensbereiche agil denken und handeln. Im E‑Commerce sind das zum Beispiel der Vertrieb und das Marketing, die IT, Einkauf und Fulfillment und letztendlich auch die Geschäftsführung, die E‑Commerce-Projekte strategisch steuert. Treffen hier agiles und „klassisches“ Denken und Handeln aufeinander, führt dies zu Reibung und viele Chancen des „agilen“ bleiben ungenutzt.

Der Schlüssel zum Erfolg agiler Software-Projekte liegt also in einem gemeinsamen Verständnis von agiler Methodik sowie in der Integration verschiedener Unternehmensbereiche in Softwareprojekten. Hier kommt ein weiterer neuer Ansatz ins Spiel, der in Fachkreisen diskutiert wird: DevOps. Dahinter steckt die Idee, Business und Technologie so zu integrieren, dass beispielsweise Betriebs- und Entwicklungsingenieure über den gesamten Software-Lebenszyklus, vom Design- und Entwicklungsprozess bis hin zur Produktionsunterstützung Hand in Hand arbeiten. DevOps will das traditionelle Denken und Handeln in Silos ersetzen, in denen ein Team den Code schreibt, ein anderes Team testet, ein weiteres Team bereitstellt usw. Auch hinter DevOps steckt eine Kultur, die Grenzen in Unternehmen überwindet, um gemeinsam beispielsweise den E-Commerce weiterzuentwickeln. Das bedeutet auch, gemeinsam Verantwortung für Projekt zu übernehmen.

Agile Entwicklung und Prinzipien des DevOps wie etwa Continious Delivery finden sich in nahezu allen Projekten von eCube, wenngleich sie uns regelmäßig vor Herausforderungen stellen. Denn unsere Kunden „ticken“ in der Regel „klassisch“, wenn es darum geht, E‑Commerce im Unternehmen zu entwickeln. Hier sind neben der Shop-Entwicklung selbst viele Brücken zwischen Fachabteilungen zu bauen, die bisher in parallelen Welten gelebt haben. Hier entwickeln wir nicht nur Software sondern oft auch eine neue Kultur.

Passend dazu: Komplexe Replatforming-Projekte im B2B erfolgreich managen

 

Microservices

Um große Systeme geht es auch beim Thema Microservices: Diese dienen dazu komplexe Systeme in einzelne Programme und Aufgaben aufzuteilen. Einen ganz ähnlichen Ansatz verfolgt schon die UNIX Philosophie, die auf drei Ideen basiert: Ein Programm soll nur eine Aufgabe erfüllen, die Programme sollen zusammenarbeiten können und die Programme sollen eine universelle Schnittstelle nutzen. Der Haken bei der Sache: Microservices-Architekturen ermöglich ein hohes Maß an Flexibilität in der Entwicklung, erhöhen aber gleichzeitig die Komplexität des Gesamtsystems. Die Herausforderung besteht deshalb darin, die vielen Komponenten des Systems so zu orchestrieren, dass die Übersicht nie verloren geht. Bei eCube wägen wir deshalb in jedem Projekt genau ab, ob und an welchen Stellen eine Zerlegung nach Aufgaben sinnvoll ist, ohne dass der Aufwand den Nutzen übersteigt.

Spezielle Werkzeuge wie Istio und Linkerd können helfen, einen solchen “Service Mesh” in den Griff zu bekommen. Bei eCube nutzen wir aktuell Docker für die Containerisierung, Keycloak für IAM & Standard REST-APIs mit Spring MVC. Es empfiehlt sich, diese Tools in Software-Projekten so früh wie möglich einzusetzen, um von Beginn an die volle Kontrolle über die wachsende Zahl von Services zu behalten.

Lesetipp: Einen kurzen Überblick und Starthilfe für die Arbeit mit Microservices bietet das E-Book von Eberhard Wolf, dass man hier kostenlos herunterladen kann.

Damit hochkomplexe Microservice-Architekturen nicht im Chaos versinken, nutzen wir die Techniken des Chaos Engineering.

Chaos Engineering

Eine sehr praktische Herausforderung der Software-Entwicklung adressiert das „Chaos Engineering“: Wie schafft man es, resiliente IT-Systeme zu bauen, die auch bei Teilausfällen noch funktionieren? Wie lassen sich Flexibilität der Entwicklung und die Geschwindigkeit der Bereitstellung (Time to market) in verteilten Softwaresystemen erhöhen, ohne dass beispielsweise die Wechselwirkungen zwischen verschiedenen Diensten in verschiedenen Systemen zu unvorhersehbaren Ergebnissen bzw. Fehlern oder Ausfällen führen?

„Chaos Engineering is the discipline of experimenting on a distributed system in order to build confidence in the system’s capability to withstand turbulent conditions in production.“
principlesofchaos.org

Die Herausforderung in der Software-Entwicklung besteht darin, Schwachstellen zu identifizieren, bevor sie sich in systemweiten, anormalen Verhaltensweisen manifestieren. Das ist leichter gesagt als getan und setzt voraus, dass Architekten und Entwickler wieder lernen, mehr systematisch zu experimentieren, statt jeden erdenklichen Fall voraussehen zu wollen. Ein Ansatz kann hier sein, „Chaos“ durch kleine Experimente in der Staging-Umgebung zu testen. Russ Miles, CEO von ChaosIQ hat dazu auf der JAX Konferenz 2018 einen sehr inspirierenden Vortrag gehalten:

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Einen groben Überblick, wie Chaos Engineering in der Praxis aussehen kann, geben die „Principles of chaos engineering“. Wir werden in einem weiteren Artikel hier im Blog näher darauf eingehen.

Fazit: Neue Ansätze brauchen Neues denken

Neben den hier skizzierten Trends entstehen laufend neue Ideen und Konzepte für die Java-Enwicklung. Viele etablieren sich in der Praxis, während andere wieder verpuffen. Bei eCube greifen wir neue Methoden und Tools auf, wenn uns diese sinnvoll und praktikabel erscheinen, um Projekte flexibler und wirtschaftlicher umzusetzen. Dazu gehört derzeit etwa Kubernetes für die Automatisierung der Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen. Dabei gehen wir ebenso agil bzw. iterativ vor wie in unseren Projekten. Das ist vor allem dann wichtig, wenn neue Ansätze eine Veränderung im Denken und in der Kultur erfordern, damit sie ihre volle Wirkung entfalten können. Wir werden in unserem Blog weiterhin von unseren Erfahrungen berichten.

Artikel teilen

Auch interessant

Ein Icon, das zwei in entgegengesetzte Richtungen zeigende Pfeile abbildet und ein Icon, dass eine Lupe darstellt.
Software-Dienstleister reibungslos wechseln (Teil 1): Defizite erkennen, die richtige Wahl treffen 

Entdecken Sie in unserem Blogbeitrag, wie Unternehmen Defizite bei ihrem Software-Dienstleister erkennen und erfolgreich zu einem neuen Partner wechseln können. Lernen Sie, typische Missstände zu identifizieren und nutzen Sie unsere Checkliste für die gezielte Suche und Auswahl eines passenden Dienstleisters. Erfahren Sie, warum eine regelmäßige Überprüfung der Zusammenarbeit entscheidend ist und wie Sie den Wechsel reibungslos gestalten können.

Eine Person, die mit dem Rücken zum Beobachter in einem Gang mit vielen Bildern steht, Science Fiction-artig
E-Commerce Trends & Themen 2024 – Teil 2: Was verliert an Bedeutung?

Nichts ist so beständig wie der Wandel. Wir wagen einen Blick in die Glaskugel für 2024 und unterstützen Unternehmen dabei, neue Entwicklungspotenziale für ihren E-Commerce auszuschöpfen. Im Folgenden gehen wir der Frage nach, was 2024 an Bedeutung verliert - wie gewohnt subjektiv und praxisnah.