GitOps, SRE, DevOps - A Look Back and into the Future
Find the English version below
Hi ,
Vor zehn Jahren hantierten die meisten Unternehmen noch mit manuell verwalteten Infrastrukturen herum. Heute finden sich noch viele Mittelständler in derselben Lage. Doch das hat seinen Preis – und den spüre ich gerade.
Die Geister der Unterschiede
Es ist erstaunlich, wie oft wir Geistern hinterherjagen, einfach weil sich unsere Umgebungen unterscheiden. Das reicht von offensichtlichen Dingen wie verfügbarer CPU oder RAM bis hin zu subtileren Problemen wie unterschiedlichen Kernel-Versionen oder Konfigurationsunterschieden in den Applikationen. Besonders knifflig wird es mit externen Application Servern, wo Konfigurationsdateien über das gesamte System verteilt sind und leicht auseinanderdriften können.
- Unterschiedliche Berechtigungen auf dem Dateisystem
- Namensunterschiede und Rechte der Benutzer
- Variable Sudoers-Rechte
All diese Nuancen machen die Jagd nach scheinbaren Problemen zur Realität.
Die Herausforderung der Harmonie
Gerade erst ist es mir passiert: Wir haben ein Problem auf Production identifiziert und behoben. Doch beim Validieren des Fixes auf unserer Testplattform stießen wir auf einen Unterschied in der Konfiguration, der uns mehrere Tage kostete. Diese Diskrepanzen fallen nicht immer sofort auf.
Die Lösung liegt in der Harmonisierung der Umgebungen. Dafür brauchen wir eine mehrschichtige Strategie:
- Hypervisor-Provisioner: Für konsistente VM-Ressourcen in allen Umgebungen, zum Beispiel Terraform.
- Configuration-Management: Um Programme in gleichen Versionen zu installieren und Ordner mit identischen Berechtigungen zu haben, zum Beispiel Ansible, Puppet oder Chef.
- Containerisierung: Zur Sicherstellung einer einheitlichen Anwendungskonfiguration, wobei Docker die bekannteste Anwendung ist.
Wenn wir all diese Konfigurationen in einem VCS wie Git speichern, können wir Änderungen nachverfolgen, automatisch auditieren und die Kompatibilität unserer Software sicherstellen. GitOps ist hier das Stichwort.
Ein Schritt nach dem anderen
Die Integration dieser Änderungen in ein bestehendes Projekt ist nicht einfach, aber auch nicht unmöglich. Es muss nicht alles auf einmal umgesetzt werden. Wenn du noch keine harmonisierten Testumgebungen hast, liegt eine große Optimierungsmöglichkeit vor dir. Jeder Schritt in Richtung einer einheitlichen Infrastruktur wird dich weiterbringen.
Rule the Backend,
~ Marcus
Hi ,
Ten years ago, most companies were still dealing with manually managed infrastructures. Today, many medium-sized businesses still find themselves in the same situation. But that comes at a cost - and I'm feeling it right now.
The Ghosts of Differences
It's astonishing how often we chase ghosts simply because our environments differ. This ranges from obvious things like available CPU or RAM to subtler issues like different kernel versions or configuration disparities in applications. It gets especially tricky with external application servers, where configuration files are spread throughout the system and can easily drift apart.
- Different permissions on the file system
- Differences in user names and rights
- Variable sudoers rights
All these nuances turn the hunt for apparent problems into reality.
The Challenge of Harmony
It just happened to me: we identified and fixed a problem in production. But when validating the fix on our test platform, we encountered a configuration difference that cost us several days. These discrepancies don't always become apparent immediately.
The solution lies in harmonizing the environments. This requires a multi-layered strategy:
- Hypervisor Provisioner: For consistent VM resources across all environments, for example, Terraform.
- Configuration Management: To install programs in the same versions and have folders with identical permissions, for example, Ansible, Puppet, or Chef.
- Containerization: To ensure a uniform application configuration, with Docker being the most well-known application.
Storing all these configurations in a VCS like Git allows us to track changes, automatically audit, and ensure the compatibility of our software. GitOps is the keyword here.
One Step at a Time
Integrating these changes into an existing project is not easy, but it's not impossible either. It doesn't have to be all done at once. If you don't have harmonized test environments yet, there's a significant optimization opportunity ahead of you. Every step towards a unified infrastructure will move you forward.
Rule the Backend,
~ Marcus