Infrastruktur als Code: Was ist das und warum sollte es Sie interessieren?
Veröffentlicht am
1. September 2020
Von:
Exigo
Not macht erfinderisch, das ist klar, aber man kann genauso gut argumentieren, dass Erfindungen die Notwendigkeit hervorbringen, insbesondere in einem Zeitalter, das von der Informationstechnologie geprägt ist. Nehmen wir zum Beispiel das Internet. Seine Erfindung brachte zuvor unvorstellbare Ideen hervor, die schnell zu Notwendigkeiten wurden. In dieser späten Phase des Informationszeitalters sind Internetverbindungen und der allgegenwärtige Zugang über das Web grundlegende Notwendigkeiten.
Damit Ihr Unternehmen heute relevant und wettbewerbsfähig bleibt, benötigen Sie nicht nur eine Webpräsenz, sondern auch Tools, mit denen Sie die Möglichkeiten des Internets nutzen können, um die Erstellung, Verwaltung und Verteilung der Ressourcen zu vereinfachen, die die für Ihre Branche geeignete Softwarelösung hosten. Infrastructure as Code ist eine der technologischen Entwicklungen, die aus dieser geschäftlichen Notwendigkeit hervorgegangen sind.
Was ist Infrastruktur als Code?
Infrastruktur als Code ist Code, der maschinenlesbare Definitionen enthält, mit denen der Prozess der Bereitstellung und Konfiguration der Ressourcen, auf denen eine Softwarelösung gehostet wird, automatisiert werden kann.

Infrastructure as Code kann in einem lokalen Rechenzentrum ausgeführt werden, um die Verwaltung der Ressourcen dieses Zentrums zu vereinfachen. Es kann auch proprietäre Codierung enthalten, die in einem privaten Rechenzentrum ausgeführt und später in die Cloud migriert wird. Diese Arten von Lösungen stellen Verbesserungen gegenüber der ständigen manuellen Verwaltung von Bare-Metal-Servern dar, aus denen Rechenzentren bestehen.
Allerdings nutzen diese Arten von Lösungen einen weiteren potenziellen Vorteil der Ausführung von Infrastruktur als Code nicht aus. Wenn die codierte Infrastruktur so konzipiert ist, dass sie über die Anwendungsprogrammierschnittstellen (APIs) der Cloud direkt mit dieser kommuniziert, können sie und die Plattform, auf der sie ausgeführt wird, alle Vorteile der Cloud voll ausschöpfen, einschließlich des uneingeschränkten Zugriffs auf Ressourcen, auf denen stets die neueste Technologie läuft.
Microsoft Azure ist eine der führenden öffentlichen Cloud-Plattformen und hat Pionierarbeit bei der Entwicklung der APIs und Ressourcenvorlagen geleistet, die Infrastructure as Code ermöglichen. Bei Exigo kommuniziert unsere Infrastructure as Code mit der Azure-Plattform und nutzt diese APIs, um Ressourcen zuzuweisen und zu konfigurieren. Bei der Entwicklung unserer codierten Infrastruktur und Plattform haben wir größtenteils .NET verwendet, eine von Microsoft entwickelte Programmiersprache, die – wenig überraschend – in Azure eine erstklassige Rolle spielt. (Mit „erstklassige Rolle” meine ich, dass Azure .NET erkennt und unterstützt und dass .NET wiederum gut und problemlos in der Azure-Sandbox funktioniert.)
Durch die Verwendung von Informationen als Code wird der Prozess der Verwaltung unserer cloudbasierten Rechenzentren automatisiert, sodass bei Bedarf automatisch neue Ressourcen (wie Datenbanken und virtuelle Maschinen) erstellt und bereitgestellt werden.
Warum sollte Sie das interessieren?
Infrastruktur als Code und insbesondere unsere Umsetzung davon bieten mehrere Vorteile. (Einige davon überschneiden sich mit den „Vorteilen des Cloud Computing“.)
- Sofortige Bereitstellung
- Skalierbarkeit
- Testen vor dem Start
- Zuverlässigkeit
Sofortige Bereitstellung:
Vom Kauf zur Produktivität im Handumdrehen
Wenn Sie sich für eine Software-as-a-Service-Lösung (SaaS) entscheiden, um Ihre Direktvertriebsprozesse zu optimieren, kann es Monate, Wochen oder auch nur Minuten dauern, bis Sie vom Kauf zur Produktivität gelangen.
Die Art und Weise, wie wir unsere Infrastruktur als Code entworfen und implementiert haben, ermöglicht Letzteres, einen Vorteil, der als „Sofortbereitstellung“ bekannt ist. Wenn wir uns entscheiden, eine Ressource wie eine Datenbank oder eine virtuelle Maschine zu erstellen, verwenden wir eine Azure Resource Manager (ARM)-Vorlage, um nicht nur die gewünschte Ressource, sondern alle mit dieser Ressource verbundenen Eigenschaften zu definieren, und speichern diesen Code dann in einem Repository.
Dadurch können wir die Infrastruktur für neue Kunden einfach durch Ausführen des gespeicherten Codes erstellen, wodurch wiederum automatisch die erforderlichen Ressourcen bereitgestellt werden. So können wir einen Kunden innerhalb weniger Minuten nach Vertragsunterzeichnung einrichten und betriebsbereit machen.
Wenn Ihre neuen Ressourcen in der Cloud zugewiesen werden, erhalten Sie automatisch Ihre Anmeldedaten, sodass Sie innerhalb weniger Stunden mit der Anpassung unserer Lösung beginnen und möglicherweise Ihren ersten Auftrag entgegennehmen können.
Skalierbarkeit:
Der Himmel ist die Grenze
Skalierbarkeit ist die Fähigkeit eines Systems, Ressourcen zuzuweisen und dadurch die Leistung nach Bedarf zu verbessern. Es gibt zwei Methoden der Skalierung: vertikale Skalierung und horizontale Skalierung.
Vertikale Skalierung umfasst das Hinzufügen oder Aufrüsten bestehender Hardware. Dieser Prozess erfordert ein praktisches Management, das kostspielig ist und nicht unbedingt eine nahtlose Erweiterung ermöglicht.
Horizontale Skalierung umfasst die automatische Bereitstellung von Ressourcen nach Bedarf – eine praktische kleine Funktion, die möglich wird, wenn die Infrastruktur als Code implementiert ist.
Unsere codierte Infrastruktur enthält Metriken, die Leistungsanforderungen festlegen. Wenn also die Client-Auslastung plötzlich zu hoch für die derzeit genutzten Ressourcen ist, stellt unsere Lösung automatisch Zugriff auf weitere Ressourcen bereit.
Unsere Lösung ist wie ein Gummiband, das sich ausdehnt und zusammenzieht, um sich schnell an Ihre Anforderungen hinsichtlich erhöhter oder reduzierter Lasten anzupassen. Der Prozess verläuft nahtlos, sodass Sie gar nicht merken, was passiert. Sie profitieren einfach davon, dass Sie immer die Leistung erhalten, für die Sie bezahlen, und nicht für Ressourcen bezahlen, die Sie nicht nutzen.
Da unsere Lösung für die direkte Kommunikation mit Azure entwickelt wurde, profitieren unsere Kunden von den Vorteilen sowohl der vertikalen als auch der horizontalen Skalierung, ohne sich um die damit verbundenen Probleme kümmern zu müssen. Unsere Lösung gewährleistet eine automatische und nahtlose horizontale Skalierung, während Azure die Kosten und den Aufwand der vertikalen Skalierung übernimmt.
Fazit: Wenn Ihre Website mehr Leistung benötigt, skaliert unsere Lösung spontan, um die erhöhte Last zu bewältigen. Und da wir Azure nutzen, sind uns hinsichtlich der Last, die wir bewältigen können, keine Grenzen gesetzt.
Testen vor dem Start:
Smooth Computing Insurance
Wenn Sie Infrastruktur als Code implementieren, wird Ihre Infrastruktur genauso behandelt wie jeder andere Code. Zu den Vorteilen gehören einfache Upgrades, die vor der Produktion getestet werden können.
Mit Infrastructure as Code können alle Änderungen an der Infrastruktur an einem einzigen Ort vorgenommen und anschließend getestet werden, um sicherzustellen, dass sie (unter anderem) frei von Kompatibilitäts- und Integrationsproblemen sind, bevor sie in die Produktion gehen.
Wenn nötig, nimmt Exigo zum Beispiel Änderungen an seiner codierten Infrastruktur vor, testet die Änderungen und wendet sie erst dann direkt über die APIs von Azure mithilfe ihrer Online-Vorlagen auf alle Infrastrukturkomponenten in der Produktion an. Dieser Prozess eliminiert das Risiko menschlicher Fehler: Die Änderung wird einmal vorgenommen und getestet und dann flächendeckend angewendet.
Zuverlässigkeit:
Stellen Sie die gepunkteten I's und gekreuzten T's wieder her.
Ein weiterer Vorteil der Ausführung unserer Infrastruktur als Code in Azure besteht darin, dass wir unsere Plattform mit nur einem Klick überall auf der Welt bereitstellen können.
Nehmen wir beispielsweise an, ein Azure-Rechenzentrum im Osten der Vereinigten Staaten fällt aus, und zufällig wurden Ihre Datenbank und andere Ressourcen in diesem ausgefallenen Rechenzentrum ausgeführt. Dank der Art und Weise, wie wir unsere Lösung konzipiert haben, können wir alles sehr schnell an einem anderen Ort (Australien, Westen der Vereinigten Staaten, Europa – überall) bereitstellen, sodass die mit dieser Katastrophe verbundenen Ausfallzeiten minimal sind – ein Vorteil, der als Failover bezeichnet wird.
Tatsächlich versprechen wir unseren Kunden nicht nur minimale Ausfallzeiten im Falle eines Ausfalls, sondern auch eine exakte Kopie dessen, wofür sie bezahlt haben – mit allen Details, genau so, wie es war. Alle Exigo-Daten, einschließlich unserer Kundendaten, werden in Echtzeit in mehr als einem Rechenzentrum repliziert. Darüber hinaus können alle unsere Datenbanken 35 Tage lang zu einem bestimmten Zeitpunkt wiederhergestellt werden, was bedeutet, dass unsere Kunden jede beliebige Minute, einschließlich dieser, auswählen und die Datenbank genau so wiederherstellen können, wie sie in diesem Moment war.
SaaS-Lösungen, die auf lokale oder private Rechenzentren beschränkt sind und ihre Datenbanken weiterhin in ihren eigenen Rechenzentren betreiben, müssen die Kosten für die Einrichtung und Verwaltung redundanter Standorte tragen, um im Falle eines Ausfalls eine Sicherung zu gewährleisten. Diese Kosten werden direkt an ihre Kunden weitergegeben. Exigo nutzt die Leistungsfähigkeit der Azure-Cloud, um den Schutz Ihrer Daten zu geringeren Kosten zu gewährleisten und die globale Reichweite der Azure-Plattform voll auszuschöpfen.
Infrastruktur als Code:
Erfindung und Notwendigkeit
Wenn Sie also nach einer webbasierten Lösung für Ihre geschäftlichen Anforderungen suchen, sollten Sie bedenken, dass die schnellsten und effizientesten Lösungen auf einer Infrastruktur als Code basieren, die direkt mit einer öffentlichen Cloud verbunden ist. Stellen Sie potenziellen Dienstleistern Fragen wie diese:
- Wird Ihre Lösung vor Ort oder in der Cloud ausgeführt?
- Welche Technologie verwenden Sie zur Verwaltung von Computerressourcen und ermöglicht diese Technologie Infrastructure as Code?
- Erlaubt Ihre Lösung die Definition einer codierten Infrastruktur entweder über eine API oder eine Vorlage?
- Automatisiert Ihre Lösung den Prozess der Erstellung und Bereitstellung von Ressourcen?
- Stellt Ihre Lösung sicher, dass Sie bei der Erstellung neuer Ressourcen jedes Mal das gewünschte Ergebnis erhalten?
Glossar
Virtuelle Maschine:Eine virtuelle Maschine ist eine Emulation eines vollständigen Betriebssystems, das im Speicher eines anderen Betriebssystems ausgeführt wird und einem einzelnen Host-Computer im Wesentlichen die Funktionalität von zwei Computern verleiht.
API:Eine Anwendungsprogrammierschnittstelle (API) ist das Bindeglied, das es verschiedenen Computersystemen ermöglicht, effektiv miteinander zu kommunizieren, ohne dass eines der Systeme proprietäre Informationen weitergeben muss. (Stellen Sie sich vor, Sie müssen dieselbe Anfrage an vier Personen weiterleiten, die verschiedene Sprachen sprechen. Eine API ist wie ein Übersetzer, der Ihre Nachricht weiterleitet und vier Antworten in einer Sprache zurückgibt, die Sie verstehen.)
Azure Resource Manager (ARM)-Vorlage:Wird verwendet, um Infrastruktur als Code für Azure-Lösungen zu implementieren. Die Vorlage ist eine JSON-Datei (Javascript Object Notation), die die Infrastruktur und Konfiguration Ihrer Lösung definiert. Mit der Vorlage können Sie eine Ressource definieren, ohne eine Folge von Programmierbefehlen schreiben zu müssen, um sie zu erstellen. In diesen Vorlagen geben Sie die Ressourcen an, die Sie erstellen möchten, sowie deren jeweilige Eigenschaften.
Datenbank:Eine strukturierte Sammlung von Daten, die auf einem Computer läuft und elektronisch zugänglich ist.
Rechenzentrum:Eine Ansammlung von Computern (die sich möglicherweise in einem einzigen Gebäude befinden oder über ein Netzwerk miteinander verbunden sind), die große Datenmengen speichern, verarbeiten und verteilen.
Failover:Die Fähigkeit, schnell einen identischen Zwilling eines Software-Computing-Programms oder einer Plattform bereitzustellen, um Ausfallzeiten im Falle eines Ausfalls, beispielsweise aufgrund einer Naturkatastrophe, zu minimieren.
Hochverfügbarkeit:Der Prozess, bei dem mehrere Instanzen eines Softwareprogramms, einer Anwendung oder einer Plattform auf verschiedenen Servern ausgeführt werden, die sich möglicherweise in verschiedenen Teilen der Welt befinden, um Ausfallzeiten vollständig zu vermeiden. Der Prozess ist effektiv, aber sehr kostspielig. Bei Hochverfügbarkeit zahlen Sie für Ressourcen, die Sie möglicherweise nie nutzen.
Öffentliche Cloud:Öffentliche Clouds werden von Drittanbietern betrieben und stellen über das Internet Rechenressourcen (wie Server und Speicher) bereit. Verbraucher greifen über einen Webbrowser auf diese Dienste zu.
SaaS:Software as a Service oder SaaS (ausgesprochen „Sass“) ist eine Methode zur Bereitstellung von Software über ein Online-Abonnement, auf das ein Kunde in der Regel über das Internet zugreift. SaaS entfernt sich vom traditionellen Paradigma, ein Programm zu erstellen und es dann auf einem physischen Computer zu installieren und auszuführen.
Vertikale Skalierung:Der Prozess, bei dem einem bestehenden Computersystem weitere Ressourcen hinzugefügt werden, um die Leistung zu steigern oder anderweitig zu verbessern. Beispiele für vertikale Skalierung sind das Hinzufügen leistungsfähigerer Bare-Metal-Server zu einem Rechenzentrum oder die Erweiterung des Arbeitsspeichers bestehender Server.
Horizontale Skalierung:Der Prozess der Erhöhung der Anzahl von Instanzen einer Softwarelösung, um eine steigende Auslastung zu bewältigen (und damit die Leistung zu verbessern) oder die Instanzen zu reduzieren, um sicherzustellen, dass ein Kunde nur für das bezahlt, was er tatsächlich nutzt.
Bereitstellung:Der Prozess des Startens oder Herunterfahrens einer Instanz einer Plattform, die in der Cloud ausgeführt wird. Mit einer Softwareplattform, die auf einer Infrastruktur als Code läuft, die für die direkte Anbindung an die Cloud ausgelegt ist, kann die gesamte Plattform mit einem einzigen Mausklick gestartet werden.






