Wegweisender Wandel

Was es braucht, um eine Anwendung zu transformieren.
Unser Kunde, ein amerikanisches multinationales Unternehmen, erbringt Dienstleistungen im Bereich Workforce Management und Human Resource Management. Er bietet eine Reihe von Funktionen an, die Unternehmen bei der Verwaltung ihrer Mitarbeiter unterstützen, darunter auch die Zeiterfassung und Anwesenheit.

Die Herausforderung

Die Anforderung bestand darin, eine Anwendung auf einer anderen Architektur zu erstellen, um Tools zu nutzen, die mit den Standardtools des Kunden harmonieren, ohne dass es eine Automatisierung gibt. Da die Anwendung auf einer Microservices-Architektur basiert, mussten verschiedene Dienste erstellt und mehrmals am Tag zu Testzwecken in der Entwicklungsumgebung bereitgestellt werden, bevor sie in die Produktion überführt werden konnten.

Ein Laptop, der in einer Besprechung verschiedene Diagramme anzeigt

an icon that depicts limited knowledge of app architecture

Begrenzte Kenntnisse der Anwendungsarchitektur und der beteiligten Dienste.

An icon representing adapting to service changesAnpassung an Dienständerungen, Umsetzung der Dienstetrennung und Einrichtung sicherer Mechanismen zur Verwaltung von Geheimnissen.
An icon representing absence of best practicesFehlen von bewährten Verfahren und Standardisierung.
navigating-iconBeherrschung des komplizierten Prozesses der Anpassung der Architektur bei begrenzten Kenntnissen und Komponenten auf Netzebene
deployment-iconEffiziente Verwaltung der Erstellung und Bereitstellung von Anwendungen, mit besonderem Schwerpunkt auf der Image-Verwaltung.

Die Lösung

Die Reise von Nagarro zur erfolgreichen Überwindung all dieser Herausforderungen begann mit einer gemeinsamen Anstrengung mit unserem Kunden, bei der wir zunächst eine sorgfältig geplante Strategie für die Anwendungsmigration ausarbeiteten. Unser Bestreben, eine erstklassige Servicequalität zu liefern, führte dazu, dass wir alle Herausforderungen durch einen bewussten und schrittweisen Ansatz meisterten.

Wir haben eine sorgfältige Host- und Service-Projektarchitektur entwickelt, bei der die Ressourcen auf Netzwerkebene im Host-Projekt und die Anwendungsressourcen im Service-Projekt effektiv voneinander getrennt werden. Um die Sicherheit zu erhöhen, haben wir eine hochmoderne Firewall implementiert, die den Datenverkehr auf intelligente Weise zum Service-Projekt leitet.

Ein Mann und eine Frau schauen auf einen Laptop-Bildschirm

Die Umsetzungsphase

Wir nutzten die Leistungsfähigkeit von Terraform, um die Bereitstellung der Infrastruktur zu optimieren, und erstellten Helm-Diagramme für Anwendungen, um deren Konsistenz und Skalierbarkeit sicherzustellen. Mehrere Bereitstellungen in der Produktion wurden geschickt durch Jenkins-Jobs gehandhabt, da wir Jobs erstellten, die mit Image-Scans integriert wurden, das fertige Image markierten und es mit Hilfe von Helm-Charts in einer anderen Umgebung bereitstellten.

Wir erstellten auch einen Jenkins-Job für Rollout und Rollback mit einem einzigen Klick, um mehr als 1000 Umgebungsvariablen und Geheimnisse zu verwalten. Dieses Setup bot uns die Flexibilität, neue Microservices mit minimalem Aufwand zu aktualisieren oder hinzuzufügen. Wir definierten eine geeignete Release-Strategie, um neue Funktionen einzuführen. Außerdem haben wir mit jedem Image eine Tagging-Funktion implementiert, die die Fixes, die in das Release einfließen, mit nur einer Nummer identifiziert, was uns im Falle von Rollback-Anforderungen hilft.

Um eine umfassende und zentralisierte Protokollierung zu gewährleisten, haben wir Splunk genutzt und die Anwendungsprotokolle von Cloud Logging mithilfe eines Pub-Sub-Modells nahtlos weitergeleitet.

Dieses sorgfältige Design ermöglichte es uns, neue Umgebungen und Anwendungsdienste problemlos einzurichten. Um die Leistung im Auge zu behalten und Probleme proaktiv anzugehen, haben wir Cloud Monitoring mit Grafana und PagerDuty implementiert, um Produktionsprobleme noch vor ihrer möglichen Eskalation anzugehen. Heute läuft unser System in acht verschiedenen Umgebungen in mehreren GCP-Projekten, darunter vier stabile Produktionsumgebungen in unterschiedlichen Regionen. Angesichts der steigenden Nachfrage nach zusätzlichen Umgebungen sind wir bereit, zu expandieren und die sich entwickelnden Bedürfnisse unserer Kunden zu erfüllen.

Wir haben eine Reihe strategischer Maßnahmen ergriffen, um unseren DevOps-Betrieb deutlich zu verbessern. In erster Linie haben wir den Prozess der Infrastrukturbereitstellung standardisiert und damit ein neues Maß an Konsistenz und Effizienz erreicht.

Darüber hinaus haben wir den Prozess der Erstellung und Bereitstellung von Microservices gestrafft und damit die Komplexität reduziert, die zuvor unsere Agilität behindert hat. Um unsere operativen Fähigkeiten weiter zu verbessern, haben wir einen robusten Release-Mechanismus eingeführt und umfassende Überwachungs- und Warnsysteme für unsere Anwendungen implementiert.

Auswirkungen auf das Geschäft

Als Ergebnis all unserer Bemühungen sind bei mehreren wichtigen DevOps-Parametern bemerkenswerte Verbesserungen zu verzeichnen:

An icon for result

Häufigkeit des Einsatzes

Unsere Fähigkeit, Produkte bei den Endbenutzern einzusetzen, hat sich erheblich verbessert. Diese erhöhte Einsatzhäufigkeit spiegelt die Flexibilität unseres Unternehmens bei der Reaktion auf sich ändernde Marktanforderungen und unsere Bereitschaft zum Experimentieren wider.

An icon for result

Vorlaufzeit für Änderungen

Die für die Umsetzung von Änderungen erforderliche Zeit hat sich erheblich verkürzt. Dieses schnelle Reagieren auf die sich verändernden Marktanforderungen stärkt nicht nur unseren Wettbewerbsvorteil, sondern verringert auch die mit häufigen Implementierungen verbundenen Risiken.

An icon for result

Zeit bis zur Wiederherstellung eines Dienstes (MTTR)

Die Zeit, die für die Wiederherstellung nach Produktionsausfällen benötigt wird, wurde durch eine Kombination aus nahtloser Automatisierung, ganzheitlicher Überwachung und effektiver Zusammenarbeit minimiert. Dadurch wird sichergestellt, dass wir alle potenziellen Probleme schnell angehen und beheben können.

An icon for result

Fehlerquote bei Änderungen (CFR)

Wir haben die Zahl der Softwareimplementierungen, die zu Produktionsausfällen führen, die eine Nachbesserung erforderlich machen, deutlich reduziert. Dies spiegelt eine Verbesserung unserer Qualitätssicherungsmaßnahmen und eine reibungslosere Release-Pipeline wider, was zu zuverlässigeren Software-Releases führt.