Heute möchte ich über ein Tool sprechen, das die Verfahren zum Genehmigen und Ausstellen virtueller Maschinen in einen vollständigen Self-Service übersetzt, die Logik von Quoten beibehält und die Möglichkeit hinzufügt, die Ressourcennutzung vorherzusagen.
Als ehemaliger Infrastrukturingenieur weiß ich, wie es wird, mehrere private oder öffentliche Clouds in einem großen Team zu verwenden. Es gibt normalerweise zwei Möglichkeiten. Oder der Prozess der Ressourcenzuweisung ist zu bürokratisch - Teams warten eine Woche lang auf virtuelle Maschinen und halten sie so lange wie möglich "am Leben", um diesen Pfad nicht zu wiederholen. Oder es entsteht echtes Chaos, wenn niemand weiß, welches Team und wie viele Ressourcen verbraucht werden und welche Hunderttausende von Dollar monatlich für denselben AWS ausgegeben werden. Eine Möglichkeit, diese Situation zu vereinfachen, besteht darin, Entwickler mithilfe des Produkts unserer Partner - CloudMaster - auf Self-Service in der Cloud umzustellen.
Was ist das Problem
Wenn ein Unternehmen Hunderte von Entwicklern und DevOps beschäftigt, jedes Team sein eigenes Projekt hat und Experimente benötigt, können Sie sich nicht auf die Verantwortung jedes Einzelnen für die vom Unternehmen zugewiesene Kapazität verlassen. Um das Ausmaß des Problems zu verstehen, finden Sie hier die Statistiken eines CloudMaster-Kunden, der öffentliche Clouds und seine eigene Virtualisierung auf OpenStack verwendet.
Durch die parallele Entwicklung mehrerer hundert Projekte verbraucht der Kunde die gesamten Ressourcen von AWS, Azure und GCP für eine halbe Million Dollar pro Monat. Und es erstellt und löscht ungefähr 350.000 virtuelle Maschinen pro Jahr.
Wenn der Prozess in einem solchen Ausmaß seinen Lauf nehmen darf, entsteht echte Anarchie. Hunderte von virtuellen Maschinen frieren unbenutzt ein. Ohne zu verstehen, wer und warum eine bestimmte VM gestartet wurde, wird es äußerst schwierig sein, herauszufinden, ob sie für die Arbeit benötigt wird und ob sie in Zukunft benötigt wird. Dies ist mit unnötigen Kosten für die Anmietung von Cloud-Ressourcen verbunden, und es ist grundsätzlich unmöglich, eine Analyse des Geschehens durchzuführen oder die Belastung unter diesen Bedingungen vorherzusagen.
Eine logische Möglichkeit, dies zu vermeiden, besteht darin, einen Geschäftsprozess für die Ressourcenverhandlung vorzuschreiben. Dies erschwert natürlich den Weg des Entwicklers zum Erhalt einer virtuellen Maschine: Sie müssen einen Antrag ausfüllen und an die verantwortliche Person senden. Wenn Sie die Berichte jedoch korrekt erfassen, hat der Manager ein vollständiges Bild: Wer, wann und welche Kapazität angefordert. Mit einer gewissen Verzögerung wird er sogar in der Lage sein, die Bedürfnisse von Teams in virtueller Kapazität zu analysieren. Aber das ist auch kein Allheilmittel. Bei einer ausreichenden Anzahl von Anfragen "hängen" die Teams mit ihren Projekten darauf, dass die verantwortliche Person die nächste Anwendung sucht und bewertet. Und je größer das Unternehmen, desto länger dauert das Warten.
In diesem Fall haben alle erstellten virtuellen Maschinen kein "Ablaufdatum", d. H. Dann muss jemand kontrollieren, ob alle zugewiesenen Ressourcen zum angekündigten Zeitpunkt deaktiviert wurden und dies hatte keine Auswirkungen auf die Projekte.
Self-Service über Cloud Management-Plattformen (CMPs)
Um die Dinge in mehreren verwendeten oder privaten Clouds in Ordnung zu bringen, helfen Lösungen der Cloud Management Platform-Klasse. Ich möchte über die russische Alternative unserer Partner sprechen - die CloudMaster-Plattform, die sich auf die Verbindung mit Azure, AWS und Google Cloud sowie auf private Regionen unter vCloud Director, vSphere und OpenStack konzentriert.
Aus Entwicklersicht ist CloudMaster ein Self-Service-Portal, über das Sie über eine einzige Oberfläche und ohne Bürokratie (über die Benutzeroberfläche im Browser, Befehle für mobile Anwendungen und Konsolen (Python-Skripte)) Ressourcen in der Unternehmens-Cloud oder im Rechenzentrum abrufen können. Für die Infrastruktur ist dies eine zusätzliche Abstraktionsebene zwischen Cloud-Plattformen und Endbenutzern, die die selektive gemeinsame Nutzung von Ressourcen, Sicherheitsrichtlinien, Standardkonfigurationen und anderen erforderlichen Tools wie Maschinenabbildern und Terraform-Vorlagen bewahrt.
Der Großteil von CloudMaster basiert auf Java und basiert auf den serverseitigen Spring-Frameworks und Dagger in der Android-Anwendung.
In der Architektur ist CloudMaster auf die Arbeit mit großen Teams und erheblichen Mengen gesendeter Nachrichten zugeschnitten: RabbitMQ wird zum Verarbeiten von Warteschlangen verwendet, MonogoDB wird zum Speichern von Daten verwendet und Nginx wird zum Ausgleichen verwendet.
Das Tool wurde seit 2012 entwickelt und seit 2014 von einem großen Softwareentwickler verwendet.
CloudMaster-Logik
Aus Entwicklersicht ist CloudMaster eine zentrale Anlaufstelle für den schnellen Start virtueller Maschinen in allen verfügbaren Clouds und Regionen. Mit dem Tool können Sie nicht auf Genehmigungen warten, sondern hier und jetzt eine Ressource abrufen.
Die Registrierung im Portal reicht aus, um auf dieses „einzelne Fenster“ zuzugreifen. Wenn CloudMaster in Corporate AD integriert ist, werden die Rollen der Mitarbeiter im Unternehmen und im Projekt in dieses Tool geladen, wodurch automatisch die verfügbaren Projekte und Ressourcen ermittelt werden.
Startfenster für virtuelle Maschinen
Wenn Sie über die entsprechenden Rechte verfügen, kann ein Befehl bis zu 10 virtuelle Maschinen mit typischen "Formularen" starten. In CloudMaster-Begriffen sind dies Standardkonfigurationen, die den typischen Ressourcenangeboten jeder Cloud zugeordnet (und für die Aufgabe angepasst) werden.
Typische "Vorlagen" für verschiedene Clouds
Sie können Bilder von vorhandenen Computern erstellen, vorgefertigte Vorlagen "Infrastruktur als Code" verwenden oder Ihre eigenen hochladen (Terraform und CloudFormation).
Vorlagen
In diesem Fall können VMs auf unbestimmte Zeit erstellt werden oder nach einem festgelegten Zeitplan arbeiten. Dies gibt eine gewisse Freiheit bei der Verwendung von Ressourcen. Beispielsweise kann ein Unternehmen Entwicklern erlauben, die Unternehmens-Cloud für persönliche Experimente und Vergleiche zu verwenden, jedoch nur für einen Tag. Dies ist übrigens der Client dieser Plattform, der kundenspezifische Entwicklungen durchführt. Alle auf diese Weise erstellten virtuellen Maschinen werden innerhalb eines bestimmten Zeitraums von selbst gelöscht.
Aus Sicht eines Managers ist das Nützlichste an CloudMaster, dass jede laufende virtuelle Maschine gezählt wird. Für sie gibt es Abschnitte mit vollständigen Informationen zu VMs in der ausgewählten Cloud / Region, einschließlich solcher, die nach bestimmten Vorlagen erstellt wurden, mit Abrechnungen von Cloud-Anbietern und Metriken zum Ressourcenverbrauch einzelner Projekte, in denen nicht genutzte oder nicht ausgelastete Kapazitäten identifiziert werden können.
Liste der Ressourcen
Liste der virtuellen Maschinen
Zusätzlich zur Anzeige von Informationen in der Benutzeroberfläche generiert CloudMaster etwa 60 Arten von Benachrichtigungen, einschließlich solcher im Zusammenhang mit Finanzen.
Eingehende Benachrichtigungen
UND der Text einer der Benachrichtigungen
Die Logik des Dienstes ist so, dass jede VM einen Eigentümer hat - die Person, die diese virtuelle Maschine erstellt hat, oder die Person, an die diese Funktionen übertragen wurden. Der Eigentümer erhält alle Benachrichtigungen über die Nutzung von Ressourcen oder Änderungen im Status der VM und ist auch für die Kosten verantwortlich. In diesem Sinne trägt CloudMaster dazu bei, eine Kultur der Kontrolle über die Kapazitätsauslastung und die Verantwortung für verlassene Zombie-Maschinen zu schaffen.
Einschränkungen beim Erstellen neuer VMs werden durch Zugriffsrechte und Kontingente geregelt. Und hier ist es möglich, beliebige Arbeitsprozesse bis zur Aufnahme von Kundenvertretern in die Cloud anzupassen. Sie können Quoten für Teams vorschreiben und verschiedene Aktionen vorsehen, wenn diese erreicht sind oder sich einem bestimmten Schwellenwert nähern (z. B. 70% der Quote).
Abrechnung von Cloud-Anbietern
Kontingentverwaltungsfenster
Für private Clouds (OpenStack und VMware) unterstützt CloudMaster eine Art Austausch - eine Schätzung der Kosten für den Betrieb virtueller Maschinen, mit denen Sie ein rentableres Ressourcennutzungsschema auswählen können. Kollegen sagen, dass in Zukunft eine solche Funktion für öffentliche Clouds erscheinen könnte.
In diesem System ist mir die Rolle eines Infrastrukturingenieurs am nächsten, also habe ich sie zum letzten Mal verlassen. Für DevOps ist dies natürlich ein neues Tool, aber andererseits wird es möglich, zu steuern, was mit Cloud-Ressourcen passiert, wenn nur dieses Tool verwendet wird. Beliebte Konfigurations-, Überwachungs- und Entwicklungstools wie Chef und Ansible können schneller und einfacher bereitgestellt werden.
Bei Bedarf steht Administratoren und Entwicklern ein Java SDK zur Verfügung.
Am wichtigsten ist, dass Sie mit CloudMaster wie mit anderen CMPs von der manuellen routinemäßigen Ressourcenzuweisung zu interessanteren Aufgaben wechseln können: Entwicklung einer Automatisierung basierend auf "Infrastruktur als Code" usw.
Nach meiner Erfahrung ist das Auftreten solcher Tools gerechtfertigt, wenn das Unternehmen mindestens fünfzig virtuelle Maschinen einsetzt und mindestens fünfzehn aktive Benutzer verschiedener Clouds vorhanden sind. Dies ist einerseits eine gewisse Komplikation der Infrastruktur, andererseits bringt es heterogene Clouds, von denen jede ihre eigenen Management-Tools hat, auf einen gemeinsamen Nenner mit der Garantie, dass dies nicht gegen interne Unternehmensstandards verstößt. Gleichzeitig „senkt“ das Tool die Verantwortung für die Ressourcennutzung und die Budgetplanung auf die Ebene der Projektmanager, was ideologisch korrekter ist.