Jedes Softwareentwicklungsunternehmen benötigt Testumgebungen, die der Produktionsumgebung nahe kommen. Dies gilt insbesondere für Boxed-Software mit einem langen Release-Zyklus.
Viele Probleme beim Erstellen von Testumgebungen werden durch ihre Platzierung in der Cloud gelöst. Wir werden über Testoptionen auf unserer Cloud-basierten
Mail.Ru Cloud Solutions (MCS) -Plattform sprechen. Aber ein Teil dessen, was wir erzählen, gilt für jede Wolke.
Schwierigkeiten beim Einrichten einer Testumgebung
Bevor wir über die Funktionen von Testumgebungen in der Cloud sprechen, werden wir über die Schwierigkeiten sprechen, mit denen Unternehmen beim Testen von Software konfrontiert sind.
Verschiedene Git-Zweige - verschiedene Umgebungen
Die meisten an der Softwareentwicklung beteiligten Unternehmen verwenden Versionskontrollsysteme. Am häufigsten wird
Git verwendet , das von 87% der Entwickler verwendet wird (RhodeCode-Umfrage
auf Twitter ).
Die beste Vorgehensweise in Git sind die sogenannten Feature-Zweige, bei denen für jede neue Funktionalität im Repository ein separater Zweig zugewiesen wird. Dieser Ansatz ermöglicht es Entwicklern, nicht "die Ellbogen zu drücken" und macht die Änderungen unabhängiger, erfordert jedoch die Bereitstellung vieler dedizierter Umgebungen zum Testen einzelner Funktionen.
Unterauslastung der Rechenressourcen
25% der physischen Server sind Zombies, die Strom verbrauchen, aber nichts Nützliches tun. Und viele IT-Spezialisten
können nicht sagen, was 15 bis 30% der in ihrem Unternehmen installierten Server tun.
Also. On-Premise-Hardware für Testumgebungen unterscheidet sich hier nicht von anderen und ist in der Regel schlecht entsorgt. Und anders kann es nicht sein. Wenn Sie eine Serverausrüstungsflotte kaufen, werden Sie im Falle eines erhöhten Verbrauchs und der Anzahl der Testumgebungen nach Ressourcen neu zugewiesen. Infolgedessen sind Testumgebungen nachts und am Wochenende „nur für den Fall“ inaktiv, und Sie zahlen nur für den verbrauchten Strom und die Kühlung.
Die einfache Anwendung der Virtualisierung in Ihrer privaten Cloud löst nicht das Problem der unflexiblen Skalierbarkeit und Unterauslastung von Geräten.
Schwierigkeitseinstellung
Die Test- und Entwicklungsumgebungen sind nicht nur einige virtuelle Maschinen. In der Regel umfasst es einen Anwendungsserver, einen Datenbankserver sowie Nachrichtenwarteschlangenserver und Cacheserver.
Für Entwickler ist es schwierig, eine solche Infrastruktur selbst aufzubauen und zu konfigurieren. Wenn sie nicht über das entsprechende Fachwissen verfügen, kann dies mehrere Tage dauern. Für erfahrene Administratoren ist dies einfach, aber im Allgemeinen nicht interessant. Außerdem wird Bürokratie auferlegt, und der Prozess der Zuweisung von Ressourcen zur Erstellung einer Testumgebung kann lange dauern.
Ein weiteres Problem besteht darin, dass ein Vollzeit-Systemadministrator häufig nicht über das Fachwissen zur Bereitstellung bestimmter Testumgebungen verfügt und das Unternehmen gezwungen ist, teure Berater von außen anzuziehen. Ein Beispiel ist eine Sandbox für Big Data basierend auf Hadoop, Spark, HDFS oder Airflow. Die Bereitstellung einer solchen Umgebung dauert mindestens eine Woche von einem im BigData-Bereich qualifizierten Spezialisten und mindestens einen Monat von einem normalen Systemadministrator. Ähnliches gilt für Kubernetes-Cluster: Das Erstellen eines Testclusters in der Nähe der Produktionskonfiguration dauert mindestens mehrere Tage.
Infolgedessen ist das Unternehmen gezwungen, sich an Dritte zu wenden, um Berater zu gewinnen. Es
ist jedoch ziemlich schwierig ,
Experten für Big Data zu finden , und die Administratoren solcher Systeme können fast an den Fingern gezählt werden. Ja, ein DevOps-Ingenieur kann alle Aufgaben der Bereitstellung von Testumgebungen erledigen, aber nicht jedes Unternehmen hat sie, und es ist nicht einfacher, einen guten Experten auf diesem Gebiet zu finden als einen BigData-Spezialisten. In der Tat stellte die Website für die Stellensuche in der Tat im Jahr 2016
fest, dass Unternehmen länger als alle anderen Spezialisten nach einem DevOps-Ingenieur suchten.
Wie die Cloud diese Probleme löst
Zweitabrechnung für verbrauchte Ressourcen und sofortige Skalierung
Das offensichtlichste Plus von Cloud-Diensten ist die Möglichkeit, eine Cloud-Infrastruktur einer beliebigen Konfiguration (ein Server oder ein ganzer Cluster) für einen beliebigen Zeitraum zu mieten. Auf unserer
Mail.Ru Cloud Solutions (MCS) -Plattform erfolgt die Abrechnung pro Sekunde - Sie müssen nur für die tatsächlich verwendeten Computerressourcen bezahlen.
Im Gegensatz zu Bare-Metal-, Private-Cloud- und den meisten russischen Cloud-Anbietern berechnet MCS keine Ressourcen für gestoppte virtuelle Maschinen (RAM, CPU): Sie müssen nur für den verwendeten Speicherplatz bezahlen. Beispielsweise kostet die Testkonfiguration von 20 CPUs, 40 GB RAM und 1 TB Festplatte 24.800 ₽ / Monat, und die Kosten für Speicherplatz betragen 7.000 ₽ / Monat. Wenn Sie beispielsweise Automatisierungstools verwenden, um eine solche Umgebung um 21:00 Uhr zu stoppen und um 9:00 Uhr bereitzustellen, zahlen Sie 15 900 ₽ - eineinhalb Mal weniger als bei einer Miete rund um die Uhr.
Nach unserer Erfahrung können die Gesamteinsparungen durch Tests in der Cloud 60 bis 70% betragen, verglichen mit Tests in der lokalen Infrastruktur.
Durch die sofortige Skalierung von Ressourcen in der Cloud können Sie Umgebungen schnell und nur zum richtigen Zeitpunkt bereitstellen und die gemieteten Kapazitäten zu fast 100% nutzen. Die Bereitstellungszeit der Testumgebung ist im Vergleich zu On-Premise um mehrere Tage oder sogar Monate reduziert.
Von den Entwicklern selbst zugewiesene Ressourcen
Mithilfe von Self-Service-Portalen können Entwickler Testumgebungen in der Cloud konfigurieren und ihnen Ressourcen zuweisen, ohne die Administratoren zu kontaktieren. Selbst diese einfache Aktion kann die Markteinführungszeit eines Produkts um mehrere Wochen verkürzen.
API zum automatischen Erstellen und Zerstören von Testumgebungen
Mit der Cloud können Sie kurzlebige Umgebungen nach einem
Just-in-Time- Modell erstellen.
Mithilfe der REST-API und der CLI können Sie Testumgebungen in großen Mengen bereitstellen, stoppen, aktualisieren und löschen. Auf diese Weise können Sie den gesamten Lebenszyklus für Testumgebungen konfigurieren und Hunderte von Umgebungen gesund halten. Dank der sofortigen Cloud-Skalierung und der sekundengenauen Abrechnung werden Flexibilität und reduzierte Betriebskosten erreicht.
Hier ist ein Beispiel aus unserer Erfahrung.Das Unternehmen entwickelt Software für 150 Banken. Jede Bank hat eine eigene Filiale in Git mit zusätzlichen Funktionen, die über die Boxed-Lösung integriert sind. Das Unternehmen ist gezwungen, zwei oder drei parallel arbeitende Testumgebungen für jeden Client zu erstellen: Testen mit der aktuellen Version, Testen mit der neuen Version, Überprüfen auf Aktualisierungen von der aktuellen auf die neue Version. Insgesamt müssen für 150 Clients nur bis zu 450 Testumgebungen gleichzeitig bereitgestellt und gewartet werden - Entwicklungsumgebungen werden dabei nicht berücksichtigt.
Im Private Cloud-Modus (sie verwenden Virtualisierung in ihrem eigenen Rechenzentrum) ist es fast unmöglich, mit einer solchen Last zu arbeiten, da die verfügbare Hardware häufig nicht für den parallelen Betrieb aller Umgebungen ausreicht. Infolgedessen warten Entwickler darauf, dass sie an die Reihe kommen, und können den Betrieb der neuen Version der Anwendung nicht schnell überprüfen.
Durch die automatisierte Bereitstellung und Verwaltung von Testumgebungen in der öffentlichen Cloud wird die Einschränkung der Testgeschwindigkeit aufgehoben und letztendlich die Markteinführungszeit verkürzt. Darüber hinaus ist das Kostenmanagement beim Mieten von Cloud-Ressourcen vorhersehbarer und die Kosten selbst sind niedriger als bei Verwendung Ihrer eigenen Spezialausrüstung für Prüfstände.
Ein weiterer Vorteil von Cloud-Testumgebungen ist die Integration in CI / CD-Tools. Diese Lösungen (z. B. Jenkins) enthalten Plugins, mit denen Sie während des Builds dynamisch Testumgebungen in der MCS-Cloud erstellen können. Sie können eine Testumgebung direkt vor dem Ausführen von Funktions- oder Regressionstests aktivieren. Wenn die Tests erfolgreich sind, wird die Umgebung automatisch zusammengebrochen, wenn etwas nicht stimmt. Die Umgebung wird gespeichert, damit Entwickler die Verbindung wiederherstellen und den Grund für die Regression verstehen können.
Vorgefertigte Bausteine für Testumgebungen
Stellen Sie die Testumgebung schnell auf der Mail.Ru Cloud Solutions-Plattform bereit
PaaS hilft beispielsweise
Kubernetes-Containern und -Datenbanken in der Cloud. Kubernetes entwickelt einen Servicekatalog mit Hunderten von Anwendungen.
Aus dem Katalog können Sie in wenigen Minuten ActiveMQ-, RabbitMQ-, Kafka-Cluster, Protokollüberwachungs- und -analysesysteme, verschiedene CMS und Datenbanken bereitstellen. Im Gegensatz zum beliebten
Docker Hub , der nur benutzerdefinierte Anwendungsvorlagen enthält, verfügt der
Kubernetes Service Catalog über Vorlagen auf hoher Ebene, die die Integration vereinfachen. Über die Vorlagen können Sie vorkonfigurierte Anwendungskomponenten (Nachrichtenwarteschlange, Diensterkennung, Datenbanken, Anwendungsserver, CI / CD-Tools, Caching-Server, Blockchain-Tools usw.) bereitstellen, ohne die virtuellen Maschinen konfigurieren zu müssen, auf denen sie bereitgestellt werden.
Anwendungen auf dem Kubeapps-Marktplatz erhältlich.Sandkästen für Big Data
Auf MCS können Sie Testumgebungen für Big-Data-Anwendungen bereitstellen. Mit dem
PaaS-Dienst Big Data können Sie Cluster aus Hadoop, Spark, HBase und Airflow erstellen. Der Bereitstellungsprozess ist vollständig automatisiert, was im Vergleich zur Selbstkonfiguration Wochen Zeit spart.
Ein zusätzlicher Vorteil ist die Abrechnung von Sekunde zu Sekunde und die sofortige Skalierung. Die Möglichkeit, erweiterbare Testumgebungen für kurze Zeiträume zu erstellen, reduziert die Kosten des Unternehmens für die Wartung einer analytischen IT-Infrastruktur. Die Einsparungen können im Vergleich zu vor Ort 80% erreichen.
Integration mit Infrastructure-as-a-Code
Im Gegensatz zu proprietären Lösungen, die auf VMWare basieren, basiert die MCS-Cloud-Plattform auf der OpenStack-Open-Software, die vollständig in verschiedene Tools integriert ist: Terraform, Ansible, Puppet, Chef.
Terraform wurde im Geiste von Infrastructure-as-Code (IaC) entwickelt, wenn der Prozess des Einrichtens der Infrastruktur als Codierung angeordnet und den Entwicklern vertrauter ist. Terraform ist in einer privaten Cloud schwierig zu verwenden, da es nicht vollständig in VMware integriert ist. In der MCS-Cloud können Unternehmen vorgefertigte Beispiele für die Arbeit mit Terraform verwenden (sie befinden sich in
diesem GitHub-Repository ).
Erstellen einer Testumgebung mit Terraform.Erinnere dich an mich
- Das Testen in der Cloud ist in der IT-Branche eine Selbstverständlichkeit und wird bereits von einer Vielzahl von Organisationen angewendet: von staatlichen Universitäten bis zu großen IT-Unternehmen .
- Das Erstellen von Testumgebungen in der Cloud hilft, Geld zu sparen, da eine sofortige Skalierung und Automatisierung über APIs möglich ist, die eine nahezu 100% ige Auslastung der gemieteten Infrastruktur ermöglichen.
- Zusätzliche Dienste auf der Cloud-Plattform und Vorlagen auf Kuberntetes-Containern sind vorgefertigte Bausteine, die nicht konfiguriert werden müssen.
- Schwer zu konfigurierende Dienste, wie z. B. Big Data-Verarbeitungstools, können in der Cloud einfacher als vorkonfigurierte Vorlagen gemietet werden. Sie sparen Wochen, wenn Sie nicht in die Einstellungen eintauchen.
- MCS basiert auf OpenStack und ist vollständig in Terraform und andere DevOps-Tools integriert.
Alle diese Tools können kostenlos auf der Mail.Ru Cloud Solutions-Plattform getestet werden. Bis Ende November können Sie
über diesen Link mit dem ILOVEHABR-Gutscheincode Ihrem Konto 1000 Rubel hinzufügen und Test-Test-Test durchführen.