Infrastruktur als Code
Ein grundsätzliches Prinzip von DevOps besteht darin, Infrastruktur so zu behandeln, wie Entwickler Code behandeln. Anwendungscode hat ein definiertes Format und eine definierte Syntax. Wenn der Code nicht gemäß den Regeln der Programmiersprache geschrieben wurde, können keine Anwendungen erstellt werden. Code wird in einem Versionsverwaltungs- oder Quellcodeverwaltungssystem gespeichert, das den Codeentwicklungsverlauf, Änderungen und Fehlerkorrekturen protokolliert. Wenn Code kompiliert oder in Anwendungen integriert wird, erwarten wir, dass eine konsistente Anwendung erstellt wird und der Build wiederholbar und zuverlässig ist.
Der Einsatz von Infrastructure as Code bedeutet, die gleiche Präzision der Anwendungscodeentwicklung auch auf die Infrastrukturbereitstellung anzuwenden. Alle Konfigurationen sollten deklarativ definiert und wie Anwendungscode in einem Quellcodeverwaltungssystem wie AWS CodeCommit
Die Infrastruktur wurde traditionell mit einer Kombination aus Skripten und manuellen Prozessen bereitgestellt. Manchmal wurden diese Skripte in Versionskontrollsystemen gespeichert oder Schritt für Schritt in Textdateien oder Runbooks dokumentiert. Oft ist die Person, die die Runbooks schreibt, nicht dieselbe Person, die diese Skripte ausführt oder die Runbooks durchgeht. Wenn diese Skripte oder Runbooks nicht regelmäßig aktualisiert werden, können sie in Bereitstellungen zu einem Show-Stopper werden. Dies führt dazu, dass die Schaffung neuer Umgebungen nicht immer wiederholbar, zuverlässig oder konsistent ist.
Im Gegensatz dazu bietet AWS eine DevOps-fokussierte Methode zur Erstellung und Wartung der Infrastruktur. Ähnlich wie Software-Entwickler Anwendungscode schreiben, stellt AWS Services bereit, die die Erstellung, Bereitstellung und Wartung der Infrastruktur in einer programmgesteuerten, beschreibenden und erläuternden Weise ermöglicht. Diese Services bieten Präzision, Klarheit und Zuverlässigkeit. Die in diesem Dokument erörterten AWS-Services sind der Kern einer DevOps-Methodik und bilden die Grundlage zahlreicher übergeordneter AWS-DevOps-Prinzipien und -Praktiken.
AWS bietet folgende Services an, um Infrastructure as Code zu definieren.