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.