Technische Migration

Technisch up-to-date: Mehr Sicherheit, weniger Wartungsaufwand ...

Softwaresysteme altern

und das führt zu hohen Wartungsaufwänden, unzufriedenen Endbenutzern und Entwicklern, schlechter Performance, instabilen Systemen und starken Einschränkungen bei der Entwicklung von Innovationen.

Sie möchten

sicher sein, dass Sie bei einer Migration diese Probleme hinter sich lassen und Ihr Softwaresystem wieder auf eine solide, technologisch moderne Grundlage bringen? Und nun sind Sie daran interessiert, die möglichen Optionen dafür kennenzulernen?

Welche der drei Optionen

  • Refaktorisierung des bestehenden Codes
  • schrittweise Umstellung einzelner Komponenten, ggf. auch Herauslösung einzelner Microservices
  • neues Design und Implementierung

passt für Sie?

Wie wir vorgehen

um die individuell beste Lösung zu finden, gliedern wir unser Vorgehen in folgende Schritte:

  • Analyse Ihres Systems (Hier erfahren Sie mehr über unser Code Assessment)
  • Entwurf einer Zielarchitektur
  • Ableitung von möglichen Migrationspfaden
  • Umsetzung der Migration mit kurzen Feedbackzyklen und hoher Qualität
  • Ständige Transparenz über die Qualität mit Hilfe von automatisiert erhobenen Software-Metriken

Beispielprojekt: Neuentwicklung einer Web-Anwendung mit Microservices und Domain Driven Design

Die Ausgangslage

Ausgangspunkt war eine Windows-Client-Server-Anwendung, die vor über 10 Jahren in Java implementiert worden war und nun komplett überarbeitet werden sollte. Der erste Schritt bestand in der Analyse des Systems und der Vorstellung der verschiedenen Migrationsmöglichkeiten sowie deren Vor- und Nachteilen.

Der Kunde stellte folgende Anforderungen:

  • Web-Anwendung
  • Modulares Deployment
  • Austauschbarkeit einzelner Komponenten
  • Hohe Verfügbarkeit
  • Externes Anbieten einzelner Services

Die Entscheidung fiel für eine Neuentwicklung als verteilte Anwendung mit Microservices und zentralem Web-Frontend.

Unser Vorgehen

Da ein sinnvoller fachlicher Schnitt der Microservices die Entwicklung und den späteren Betrieb immens vereinfachen kann, haben wir zusammen mit dem Fachbereich mehrere Workshops mit Methoden des Domain-Driven-Designs (DDD) durchgeführt. Mit Eventstorming haben wir sogenannte Bounded Contexts ermittelt, die sich dann auf einzelne Services abbilden lassen. Dadurch erhält man einen Service-Schnitt mit hoher Kohäsion und geringer Kopplung.

Die Services haben wir in Java als Spring-Boot-Applikationen aufgesetzt. Die Service-Infrastruktur beruht auf dem Spring-Cloud-Netflix-Stack, die Services selbst kommunizieren per REST und RabbitMQ als Messaging-System.

Der Kunde stellte den Product Owner, von andrena kamen das Entwicklungsteam und der Scrum Master. Zusätzlich zum in Scrum üblichen Review wurde nach jedem Sprint auch der SQI (Softwarequalitätsindex) erhoben und dem Product Owner transparent gemacht. So konnte der Product Owner nicht nur die äußere Qualität des Systems inspizieren, sondern bekam auch ein Gefühl für die innere Qualität.

Das Ergebnis

 

  • Skalierbarkeit und daher erhöhte Ausfallsicherheit und bessere Performanz
  • Lose Kopplung: Einzelne Microservices funktionieren auch dann, wenn andere Services ausfallen
  • Time-to market: Unabhängige Auslieferung einzelner Microservices
  • Wartbarkeit: Microservices können weitgehend unabhängig ersetzt und weiterentwickelt werden, das Risiko beim Deployment sinkt

Flyer

Passend zum Thema: Code Assessment, Testing Assessment oder unser spezielles Angebot zum Agile Innovation Project.

Code Assessment

Download (898,8 KiB)

Testing Assesment: Analyse Prozess - Verantwortlichkeiten - Tools

Download (418,8 KiB)