Erkunden von Infrastructure-as-Code

Abgeschlossen

Infrastructure-as-Code ist ein integraler Bestandteil moderner Softwareentwicklung und -bereitstellung. Es umfasst die Verwendung von Programmiermethoden zum Bereitstellen und Verwalten von Infrastrukturdiensten. IaC ist in cloudbasierten Umgebungen von Vorteil, wie z. B die im Beispielszenario beschriebene. Jede Organisation, die auf Computingressourcen für ihren Umsatz angewiesen ist, kann jedoch die Funktionen nutzen. In dieser Lektion erfahren Sie mehr über die wesentlichen Prinzipien von IaC und die am häufigsten verwendeten Techniken für die Umsetzung dieser Prinzipien.

Was sind die wesentlichen Prinzipien von IaC?

Zwar können sich einzelne Implementierungen von IaC erheblich unterscheiden, aber alle befolgen in der Regel eine Reihe gleicher Prinzipien, darunter:

  • Versionssteuerung: IaC definiert Infrastrukturkomponenten, einschließlich Compute-, Speicher- und Netzwerkressourcen mithilfe von Code. Dieser Code befindet sich in der Regel in einem VCS, wodurch das Nachverfolgen von Änderungen der Infrastruktur auf die gleiche Weise erfolgt wie das Nachverfolgen von Softwareversionen.
  • Deklarative Syntax: IaC basiert auf deklarativer Syntax, um den gewünschten Zustand der Infrastruktur zu beschreiben. Dies unterscheidet sich von einer herkömmlicheren imperativen Syntax, bei der Code geschrieben wird, der eine schrittweise Prozedur definiert, die zu diesem Zustand führt. Der deklarative Ansatz ist aus vielen Gründen meist effizienter. Zum einen basiert er auf der Intelligenz der Plattform, die die Infrastrukturkomponenten hostet, wodurch mögliche Programmierfehler oder Ineffizienzen minimiert werden. Darüber hinaus sorgt er für Idempotenz.
  • Idempotenz: Dieser Begriff bezeichnet das Merkmal einer Aktion, bei der das Ergebnis immer gleich ist, unabhängig davon, wie oft die Aktion ausgeführt wird. Da die deklarative Syntax nur den Endzustand beschreibt, garantiert sie, dass jede Codeausführung immer dasselbe Ergebnis liefert. Dies gewährleistet die Konsistenz der Zielumgebung und schließt die Möglichkeit unbeabsichtigter Nebenwirkungen zwischengeschalteter Veränderungen aus.
  • Automatisierung: Die Verwendung von Code erleichtert die automatisierte Bereitstellung und Konfiguration, verbessert Effizienz, Konsistenz und Skalierbarkeit. Dadurch werden auch die potenziellen Auswirkungen manueller Fehler beseitigt.
  • CI/CD-Integration: IaC kann (und ist häufig) in CI/CD integriert und bietet eine umfassende Softwarebereitstellungsstrategie durch die Kombination von Infrastrukturbereitstellungen mit Anwendungsbuild, Test und Bereitstellung in einer kontinuierlichen, vollständig automatisierten Sequenz.
  • Wiederverwendbarkeit: IaC fördert die Verwendung von wiederverwendbaren Codemodulen gemäß den bewährten Programmiermethoden. Dies erleichtert die Entwicklung von Softwarebibliotheken, die aus standardisierten Infrastrukturblöcken bestehen, die über Projekte hinweg geteilt werden können. Dadurch profitieren Organisationen von einer höheren Konsistenz, einer vereinfachten Wartung und einer Minimierung von doppelten Aufwänden.

Wie implementiert man IaC?

Die Implementierung von IaC beginnt mit der Identifizierung von Infrastrukturanforderungen, einschließlich der Compute-, Speicher- und Netzwerkkomponenten. Die Details hängen weitgehend vom Plattformhosting dieser Infrastruktur ab und können sich erheblich unterscheiden, z. B. von der Verwendung öffentlicher oder privater Cloudumgebungen.

Diagramm der Infrastruktur als Codefluss.

Die Wahl der Plattform wirkt sich auch auf die Wahl der IaC-Technologie und -Tools aus. Beispielsweise bietet jeder öffentliche Cloudanbieter eigene IaC-Funktionen. Im Fall von Microsoft Azure basieren diese Funktionen auf Azure Resource Manager (ARM) und Bicep-Vorlagen. Es gibt auch Lösungen, die eine Multicloud-Unterstützung bieten, z. B. Terraform. Das Tool bestimmt den Dateityp und die entsprechende Verzeichnisstruktur Ihrer Projekte. Auf diese Weise können Sie Repositorys im System Ihrer Wahl für die Versionskontrolle einrichten. VCS-Repositorys erleichtern das Nachverfolgen von Infrastrukturänderungen, die teaminterne und teamübergreifende Zusammenarbeit, die Automatisierung von Bereitstellungen und Rollbacks sowie die Integration von CI/CD-Workflows.

Wenn das Repository vorhanden ist, sollten Sie mit dem Erstellen einer IaC-Codebibliothek beginnen. Diese besteht aus Modulen, die Blöcke Ihrer zukünftigen Infrastrukturbereitstellungen darstellen. Solche Blöcke könnten z. B. einzelne Dienste, Netzwerke oder Datenspeicher darstellen, die Sie beliebig kombinieren können, um Lösungen mit mehreren Ressourcen zu erstellen.

Der nächste Schritt umfasst in der Regel die Integration Ihrer IaC-Umgebung mit CI/CD-Workflows. In der Regel bedeutet dies, dass dieselben Repositories verwendet werden, um die Bereitstellung der Infrastruktur mit dem Build, dem Testen und der Bereitstellung der auf dieser Infrastruktur gehosteten Software zu kombinieren. Bei der Integration sollten Sie jedoch auch CI/CD-Verfahren für Ihre IaC-Bereitstellungen anwenden. Insbesondere sollten Sie sicherstellen, dass Sie wie bei CI/CD Entwicklungs- und Stagingumgebungen verwenden, Tests automatisieren, Überwachungs- und Feedbackschleifen implementieren und Ihren Infrastrukturcode und die IaC-Prozesse ordnungsgemäß schützen.