KONFIGURATIONSMANAGEMENT: Alles, was Sie wissen müssen

Konfigurationsmanagement

Das Konfigurationsmanagement ist eine entscheidende Komponente einer erfolgreichen Technologieplattform. Exzellente Tech-Führungskräfte werden wissen wollen, was es braucht, um es umzusetzen. Das primäre Ziel des Konfigurationsmanagements ist es, diese Daten zu kategorisieren, damit Sie schnell und sicher handeln können. Das Konfigurationsmanagement wird in vielen Projektmanagementmethoden verwendet, ist jedoch im Kontext der Softwareentwicklung besonders wichtig.
Gehen wir die Definition des Konfigurationsmanagements in Bezug auf die Entwicklung und die Tools durch, die Sie verwenden, um es in Ihrer Organisation zu implementieren.

Was ist Konfigurationsmanagement?

Konfigurationsmanagement ist der Prozess der Kategorisierung und Verfolgung der physischen und virtuellen Systeme eines Unternehmens sowie der mit diesen Assets verbundenen Metadaten. Das Konfigurationsmanagement wird in der Softwareentwicklung verwendet, um Anwendungskonfigurationen für Produktionsumgebungen zu optimieren, um Ausfallzeiten zu reduzieren.

Das Erfassen der Metadaten für mehrere Systeme eines Unternehmens ist ein Hauptaugenmerk des Konfigurationsmanagements. Auf diese Weise weiß das Entwicklungsteam nicht nur, auf welche Server zugegriffen werden kann, sondern auch, welche Betriebssysteme auf jedem Server ausgeführt werden, um die Betriebsanforderungen ihrer Anwendung zu erfüllen.

Geheimnisse wie Passwörter und API-Schlüssel, Endpunkte für externe Verbindungen wie APIs und Berechnungsspezifikationen wie RAM-Anforderungen sind weitere Instanzen von Konfigurationsmetadaten.

Es befasst sich gleichermaßen mit der Inventarisierung von Systemen und ihren Metadaten sowie mit der Verfolgung von Änderungen, die an diesen Assets vorgenommen wurden. Ändert sich im hypothetischen Fall plötzlich das Smartphone-Modell, müssen Sie darüber informiert werden, damit Sie Ihre Suche nach dem passenden Ladegerät anpassen können. Für ihre Softwarekonfigurationen benötigen Entwicklungs- und Betriebsteams das gleiche Maß an Fachwissen.

Warum ist Konfigurationsmanagement wichtig?

Für viele Teams war das Konfigurationsmanagement in der Vergangenheit eine sekundäre Verantwortung. Konfigurationsdaten werden normalerweise nicht in Kerndatenbanken oder Versionskontrollsystemen gespeichert. Wenn es um den Betriebsteil des DevOps-Zyklus geht, sind Konfigurationsdaten von entscheidender Bedeutung.
Es ist einfacher, die Bedeutung des Konfigurationsmanagements zu verstehen, wenn Sie sich zunächst überlegen, was passieren würde, wenn es nicht existieren würde.

Der Preis für unzureichendes oder nicht vorhandenes Konfigurationsmanagement

Das Fehlen einer konsolidierten Wissensbasis ist ein wesentlicher Nachteil eines Softwareentwicklungslebenszyklus ohne Konfigurationsmanagement. Die Metadaten für die vielen Systeme, aus denen die Produktionsumgebung besteht, können auf mehrere Dateien und Workstations verteilt sein, was dazu führt, dass wichtige Informationen wie API-Schlüssel und Passwörter verstreut werden. Das Auffinden dieser Daten verlangsamt die Pipeline.

Ein weiterer Nachteil dieses Mangels an Transparenz besteht darin, dass es schwierig ist, die Testumgebung für eine Anwendung an die Produktionsumgebung anzupassen, in der sie leben wird. Diese Diskrepanz gefährdet die Qualität der Leistungstests, da die Betriebseinstellungen, während das Programm live läuft, erheblich von denen in der Demoumgebung abweichen können. Schlimmer noch, eine Fehlkonfiguration in der Software kann verhindern, dass sie in der Produktion bereitgestellt wird.

Fehlkonfigurationen beeinträchtigen die Leistung und können zu Nichtkonformität führen. Wenn beispielsweise Daten außerhalb der zulässigen Datenbank gespeichert werden, kann die Anwendung Datenschutzbestimmungen verletzen. Wenn ein Entwicklungsteam kein genaues Inventar hat, kann es alternativ dazu nicht in der Lage sein, angemessen nachzuverfolgen, welche Software auf welchen Systemen aktualisiert wurde, wodurch Cybersicherheitsstandards verletzt und Schwachstellen geschaffen werden.

Hervorragende Vorteile des Konfigurationsmanagements

DevOps-Teams profitieren stark vom Konfigurationsmanagement. Wie im vorangegangenen Abschnitt gezeigt, ist die Transparenz, die es bietet, entscheidend für die Entwicklung eines einheitlichen Katalogs von Systemen und Diensten, die das Team bei der Entwicklung und Wartung von Anwendungen berücksichtigen kann.

Die Dokumentation ist laut Konfigurationsmanagement eine Schlüsselkomponente dieser Transparenz. Dies erleichtert das Onboarding neuer Ingenieure und garantiert, dass andere die Betriebsumgebung schnell erlernen können, um in Notfällen, in denen eine schnelle Reaktion erforderlich ist, effektiver zu sein.

Sowohl die Analyse der Produktionsumgebung als auch die Sicherstellung der Übereinstimmung der Testumgebung sind dank Konfigurationsmanagement einfache Prozesse. Dadurch wird das Bereitstellungsrisiko verringert, da die Anwendung mit größerer Wahrscheinlichkeit wie geplant ausgeführt wird und die damit durchgeführten Tests repräsentativ für die tatsächlichen Softwareanforderungen sind. Wenn Anwendungsausfallzeiten finanzielle Auswirkungen haben, wird empfohlen, Risikofaktoren nach Möglichkeit zu minimieren.

Schließlich hilft es bei der Notfallwiederherstellung im Falle eines Ausfalls oder eines anderen unvorhergesehenen Vorfalls. Die Rückverfolgbarkeit ist ein grundlegendes Element des Konfigurationsmanagements, daher ist es relativ einfach, ein Upgrade auf die neueste bekannte stabile Version der Software rückgängig zu machen. Dadurch kann das Programm weiterhin geschäftliche Aufgaben wahrnehmen, während das Team an einer langfristigen Lösung arbeitet.

Nachdem Sie nun die Vorteile eines exzellenten Konfigurationsmanagements verstanden haben, schauen wir uns an, wie Sie es in Ihrem Unternehmen implementieren können.

Wie sieht eine Konfigurationsmanagementstrategie aus?

Ein Konfigurationsmanagementplan konzentriert sich auf vier Bereiche. Lassen Sie uns jeden einzelnen durchgehen.

#1. Entdeckung

Die Bestandsaufnahme vorhandener Systeme ist der erste Schritt. Die Katalogisierung sollte in allen Kontexten erfolgen, die für das Testen und den Betrieb Ihrer Anwendung wichtig sind. Der Discovery-Prozess wird sich als Nächstes dem Sammeln der Metadaten Ihrer identifizierten Elemente in einem einzigen zentralen Repository zuwenden. Diese Single Source of Truth speichert diese Daten in Datendateien, wobei sorgfältig darauf geachtet wird, sensible Daten wie Passwörter und Schlüssel vor dem Speichern zu verschlüsseln.

#2. Benchmark

Nachdem der Erkennungsprozess abgeschlossen ist, können Sie die zusammengestellten Konfigurationsdaten analysieren, um eine Baseline für einen erfolgreichen Betrieb zu erstellen. Mit anderen Worten, der Benchmark ist eine Basislinie der Konfigurationen, die erforderlich sind, damit das Programm ordnungsgemäß funktioniert. Diese Parameter können gefunden werden, indem eine laufende Anwendung und ihre Umgebung untersucht werden.

#3. Versionskontrolle

Das Konfigurationsmanagement umfasst umfassend die Versionskontrolle. Die Verwendung eines Versionskontrollsystems wie Git und die Verfolgung Ihrer Konfigurationsdatendateien führen zu einem überprüfbaren Verlauf aller vorgenommenen Änderungen. Die Versionskontrolle erleichtert auch das Zurücksetzen auf eine frühere Version, wenn ein Upgrade die Anwendung unterbricht.

#4. Rezension

Ein separater, aber wichtiger Vorteil der Verwendung eines Versionskontrollsystems besteht darin, dass Sie Ihre Konfigurationsdaten im selben Repository wie Ihren Code aufbewahren können, wodurch unbefugte Änderungen verhindert werden. Sie können die Bearbeitungsfunktionen auf bestimmte Teammitglieder beschränken und einen Genehmigungsprozess so gestalten, dass alle Konfigurationsänderungen eine vorherige Genehmigung erfordern, bevor sie in der Anwendung eingeführt werden.

Da das gesamte Team die Konfigurationsdateien im Repository einsehen kann, fördert dies die Verantwortlichkeit, eliminiert Risiken und erleichtert die Zusammenarbeit.

Wie das Konfigurationsmanagement in DevOps, Continuous Delivery und andere Technologien eingebunden wird…

Inzwischen sollten Sie ein gutes Verständnis davon haben, was Konfigurationsmanagement ist und was es zu tun versucht. Bevor wir uns mit Tools befassen, möchte ich untersuchen, wie sich das Konfigurationsmanagement in andere Softwareentwicklungskonzepte wie Agile, DevOps, Continuous Integration, Continuous Delivery und Docker einfügt, damit Sie verstehen, wie diese Konzepte zu den Ideen des Konfigurationsmanagements passen.

Ist Agile mit Konfigurationsmanagement kompatibel?

Ja. Agile Software stellt per Definition den Wunsch dar, Änderungen an unserer Software schneller vorzunehmen, um sie an die Marktanforderungen anzupassen. Das Konfigurationsmanagement ermöglicht es uns, eine hohe Geschwindigkeit aufrechtzuerhalten und gleichzeitig Änderungen sicher zu verwalten.

Konfigurationsmanagement und DevOps: Wie passt das zusammen?

DevOps ist die Anwendung agiler Konzepte sowohl auf die Entwicklungs- als auch auf die Betriebsabteilung. Tatsächlich zielt DevOps darauf ab, die Ziele beider Abteilungen aufeinander abzustimmen. In einigen Unternehmen strebt die Entwicklungsabteilung nach Veränderung, während die Betriebsabteilung nach Stabilität sucht. Unternehmen, die sich DevOps zuwenden, streben hingegen sowohl die Stabilität ihrer eingesetzten Assets als auch die Häufigkeit von Änderungen an. Um dieses Ergebnis zu erreichen, ist jedoch ein kultureller Wandel erforderlich.

Das Konfigurationsmanagement gibt Teams ebenso wie Agile das Vertrauen, Änderungen schnell vorzunehmen. Die Organisation weist den Entwicklungsteams nach agilen Prinzipien Managementaufgaben zu und befähigt sie, ihre eigene Infrastruktur bereitzustellen, zu konfigurieren und zu warten. Sie konstruieren es, und Sie betreiben es.

Wo passen Pipelines in das Konfigurationsmanagement?

Software-Pipelines (oder „Wertströme“, die wir möglicherweise mit Tools wie Plutora entwerfen) sind die Phasen, die wir normalerweise automatisieren, um Code vom Commit in die Produktion zu verschieben. Pipelines umfassen in der Regel Phasen wie Linting-Code, Einheitentestcode, Integrationstestcode und Artefakterstellung.

Eine Software-Pipeline ist somit eine Art Konfigurationsmanagement. Wenn wir Software mit Tools wie Docker erstellen, codieren wir unsere Build-Anweisungen in einer Docker-Datei. Dadurch können wir die Abhängigkeiten unserer Artefakte besser verstehen.

Ist das Konfigurationsmanagement von Infrastructure-as-Code real?

Infrastructure-as-Code (oder IaC) ist die Praxis, sicherzustellen, dass die gesamte Infrastrukturbereitstellung durch Code erfolgt. Das Ziel von IaC ist es, zu dokumentieren, welche Dienste vorhanden sind, wo sie sich befinden und unter welchen Bedingungen sie verfügbar sind. Das Konfigurationsmanagement kann entscheiden, Komponenten von IaC zu verwenden, um einen vollständigen Überblick über alle Technologieressourcen zu erhalten, die einer Organisation gehören.

Haben Sie Continuous Integration/Delivery Configuration Management?

Der Prozess, sicherzustellen, dass Software immer in einer veröffentlichbaren Form vorliegt, wird als Continuous Delivery bezeichnet. Dies kann durch umfangreiche Automatisierung und Tests erreicht werden. Kontinuierliche Integration ist der Prozess, bei dem häufig unterschiedliche Softwareartefakte an einem einzigen Ort zusammengeführt werden, um sicherzustellen, dass sich der Code erfolgreich integriert. Continuous-Integration-Tools, bei denen es sich häufig um Server handelt, die Automatisierungstestsuiten ausführen, fungieren als eine Art Konfigurationsmanagement, indem sie Einblick in die Verfahren bieten, die zum Einrichten und Konfigurieren eines bestimmten Software-Assets erforderlich sind.

Das sollte einige Ihrer verbleibenden Fragen dazu beantworten, wie das Konfigurationsmanagement mit Methoden oder Ideen übereinstimmt, die Sie möglicherweise verwenden oder mit denen Sie vertraut sind. Jede Erörterung des Konfigurationsmanagements wäre jedoch ohne eine Erörterung der Werkzeuge unzureichend. Schauen wir uns daher die verschiedenen Tools an, die uns zur Implementierung des Konfigurationsmanagements zur Verfügung stehen.

Konfigurationsmanagement-Tools

#1. Git

Git ist die branchenführende Versionskontrolllösung zum Verfolgen von Codeänderungen. Das Einbeziehen von Konfigurationsmanagementdaten mit Code in ein Git-Repository bietet eine umfassende Ansicht der Versionskontrolle eines gesamten Projekts. Git ist ein grundlegendes Werkzeug für das Konfigurationsmanagement auf höherer Ebene. Die folgende Liste alternativer Konfigurationsverwaltungstools soll in einem Git-Repository aufbewahrt werden und die Nachverfolgung der Git-Versionskontrolle verwenden.

#2. Docker

Die Containerisierung ist wie eine Konfigurationssperre eine erweiterte Form der Konfigurationsverwaltung, die von Docker angeboten wird. Docker basiert auf Konfigurationsdateien namens Dockerfiles, die eine Liste von Befehlen enthalten, die bewertet werden, um den beabsichtigten Snapshot des Betriebssystemstatus zu rekonstruieren. Docker generiert Container aus diesen Dockerfiles, die Snapshots einer voreingestellten Anwendung sind. Dockerfiles werden zur Versionskontrolle an ein Git-Repository übergeben und erfordern eine zusätzliche Konfigurationsverwaltung, bevor sie in einer Infrastruktur bereitgestellt werden können.

#3. Terraform

Terraform von HasiCorp ist eine Open-Source-Konfigurationsmanagementplattform. IaC wird von Terraform verwendet, um Cluster, Cloud-Infrastruktur und Dienste bereitzustellen und zu verwalten. AWS, Microsoft Azure und andere Cloud-Plattformen werden von Terraform unterstützt.

Jede Cloud-Plattform hat ihre eigene Darstellung und Schnittstelle für grundlegende Infrastrukturkomponenten wie Server, Datenbankserver und Warteschlangen. Terraform hat eine Abstraktionsschicht von Konfigurationstools für Cloud-Plattformen erstellt. Mit den Konfigurationstools können Teams Dateien erstellen, die reproduzierbare Beschreibungen ihrer Infrastruktur darstellen.

#4. Koch, Marionette, Ansible, Salzstapel

Zu den Frameworks für die IT-Automatisierung gehören Ansible, Salt Stack, Chef und Puppet. Mehrere typische Systemadministratorprozesse werden durch diese Frameworks automatisiert. Jedes Framework verwendet eine Reihe von Konfigurationsdatendateien, typischerweise YAML oder XML, die von einer ausführbaren Datei analysiert werden.

Die Konfigurationsdatendateien beschreiben die Schritte, die zum Konfigurieren eines Systems zu unternehmen sind. Die ausführbare Datei führt dann die Aktionen aus. Die Sprache der ausführbaren Datei variiert zwischen den Plattformen; Ansible und Salt Stack basieren auf Python, während Chef auf Ruby basiert. Diese Methode ist analog zum Ausführen von Ad-hoc-Shell-Skripten, bietet jedoch eine strukturiertere und verfeinerte Erfahrung durch die Ökosysteme der jeweiligen Plattformen.

Diese Tools bieten die Automatisierung, die zum Erreichen von CI/CD erforderlich ist.

Wie kann man mit dem Konfigurationsmanagement beginnen?

Natürlich kann man nicht im Handumdrehen von „Null“ auf „Sollzustand“ kommen. Bevor Sie sich für ein Konfigurationsmanagementsystem entscheiden, sollten Sie zunächst feststellen, warum Sie eines benötigen. So beginnen Sie mit der Konfigurationsverwaltung:

  • Beginnen Sie damit, manuelle Checklisten und Dokumentationen in einer gemeinsamen Gruppierung von Konfigurationsoptionen zusammenzustellen, die auf allen (oder den meisten) Systemen vorhanden sind. Wenn Sie Ihre Konfigurationsmanagementbemühungen zunächst auf die am weitesten verbreiteten Muster konzentrieren, können Sie die meiste menschliche Arbeit einsparen und Ihrem Unternehmen schnell Automatisierungsvorteile bringen.
  • Überprüfen Sie, ob Überwachungs-, Antiviren- und andere häufig verwendete Software in der Checkliste enthalten sind.
  • Um wiederverwendbare Infrastrukturteile als Code zu entwickeln, kategorisieren Sie Systeme je nachdem, was geändert werden muss, um sie für bestimmte Anwendungen, geografische Standorte oder andere Kategorien spezifisch zu machen.
  • Wählen Sie ein Konfigurationsmanagementsystem.

Zusammenfassung

Das ist alles dazu! Hoffentlich verdeutlicht dies Ihr Verständnis von Konfigurationsmanagement. Es geht darum, den aktuellen Stand Ihrer Software und Infrastruktur im Auge zu behalten.

Es gibt zahlreiche Ansätze zur Implementierung des Konfigurationsmanagements sowie zahlreiche Tools und Verfahren. Wenn es um die Strategie geht, sollten Sie sich daher Zeit nehmen, Entscheidungen zu bewerten und zu bestimmen, wie Ihre Konfigurationsverwaltungsverfahren funktionieren sollen.
Doch am Ende wird sich alles lohnen. Wenn Sie Ihr Konfigurationsmanagement richtig machen, werden Ihre Teams sicherer, produktiver und in der Lage sein, Änderungen schneller vorzunehmen!

Viel Glück, und von nun an auditieren, verfolgen und schreiben Sie alles als Code!

Bibliographie

Hinterlassen Sie uns einen Kommentar

E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind MIT * gekennzeichnet. *

Das Könnten Sie Auch Interessieren