Anwendung von DevOps-Methoden bei der Verwendung von Open Source in Microsoft Azure
Maksim Kanev, stellvertretender CTO und Leiter der DevOps-Umsetzung bei WaveAccess, erläutert die Implementierung von DevOps-Tools und -Methoden zum Erstellen, Bereitstellen und Unterstützen von Open Source-Projekten mit Microsoft Azure. Er teilt hier weiterhin einige Erfahrungen zu spezifischen Fällen, um diesen Ansatz näher zu beleuchten.
Die Geschäftstransformation beginnt mit einer eingehenden Analyse des Gesamtbildes. Die Untersuchung der Produkte und Dienstleistungen erfolgt unter dem Gesichtspunkt der Kundenzufriedenheit. Mit diesem Ansatz wird, nachdem das Problem klar und präzise formuliert wurde, ein eigenständiges Transformationsprojekt erstellt und eine separate Arbeitsgruppe gebildet – und zwar aus Mitarbeitern, die nicht an anderen Aufgaben beteiligt sind. Dies ist in der Regel teurer als auf bereits eingebundene Arbeitskräfte zurückzugreifen (selbst unter Berücksichtigung von Überstunden und Prämien). Auf lange Sicht ist dieser Ansatz jedoch völlig gerechtfertigt, da es sinnvoller ist, in die Zeit für die Analyse zu investieren, als das gesamte Projekt zu ruinieren.
Für das neue Transformations Team ist es wichtig, die bestehenden Geschäftsprozesse und kritischen Funktionen zu dokumentieren.
In solchen Fällen ist es sinnvoll, neue Technologien zu testen, wobei sehr wahrscheinlich Microsoft Azure in Frage kommt. Sie können einen Teil der Ressourcen vorübergehend zum Testen von neuen Servern oder für die Datenerfassung und -verarbeitung angefertigten Lösungen sowie für die Bereitstellung von Inhalten an Kunden (falls erforderlich) zuweisen.
Danach werden die angefertigten Lösungen implementiert und die erste Gruppe interessierter Benutzer wird gebeten, ihre Meinung zu den vorgeschlagenen Diensten zu äußern. Wenn das Feedback zu diesem Zeitpunkt positiv ausfällt, ist es sinnvoll, den Vorgang zur Integration dieser Lösungen in die vorhandene Infrastruktur anzustoßen.
Aktualisieren einer bestehenden IT-Umgebung mit Microsoft Azure
Die Roadmap für ein effizientes und kostengünstiges Upgrade der IT-Umgebung mit Azure Cloud-Technologie umfasst mehrere Schritte:
-
Überprüfen der Dokumentation der bestehenden Subsysteme des Software Komplexes
-
Festlegen der Geschäftsanforderungen für das aktualisierte System, das in direktem Kontakt mit den Endbenutzern steht
-
Definieren der ersten Gruppe von Diensten, die auf die neue Infrastruktur migriert werden
-
Auswahl und Test von Technologien, die die vorhandenen ersetzen könnten
Es ist wichtig, entweder den vollständigen Datensatz aus der vorhandenen Datenbank abzurufen oder darin enthaltene personenbezogenen Daten vorerst unkenntlich zu machen (z. B. müssen bei medizinischen Daten, bei denen der Zugang zu Informationen gesetzlich streng geregelt ist, personenbezogene Daten und Teile der Krankenakte entfernt oder ersetzt werden).
-
Erstellen eines auf neuen Technologien basierenden Proof of Concepts zur Durchführung von Lasttests
Es wird eine Pilot-Version des Systems mit einigen Funktionen implementiert, mit der die Einhaltung nicht funktionaler Anforderungen (Last, Sicherheit, Fehlertoleranz) überprüft werden kann.
-
Erstellen eines Minimum Viable Products (MVP; ein Produkt mit dem minimal nötigsten Funktionsumfang) basierend auf neuen Technologien für den Pilotbetrieb
In diesem Modus haben die Early Adopter, einschließlich der Arbeitsgruppe, Endbenutzer und Unternehmensleiter, die Möglichkeit, die Lösung zu testen sowie ihre Kommentare und Vorschläge abzugeben.
-
Vollständige Inbetriebnahme der aktualisierten Dienste in den kommerziellen Betrieb – nachdem alle Anforderungen berücksichtigt wurden
Dies kann auf Servern der alten IT-Umgebung oder auf neu gekauften Geräten geschehen (die Anforderungen an ein neues Rechenzentrum werden auf Grundlage der Stufen 5 und 6 festgelegt).
-
Analyse der Ergebnisse und Migration der nächsten Gruppe von Diensten
Nach der Analyse der Ergebnisse sollten Sie sich nicht mit einer der angefertigten Lösungen zufrieden geben. Eine weitere Gruppe von Diensten wird nun ausgewählt und in eine neue IT-Umgebung übertragen.
So bringen Sie ein Startup mit Azure in Gang
Hier einige unserer wichtigsten Empfehlungen, auf die Sie beim Start eines neuen Projekts achten sollten:
-
Es lohnt sich, sich auf bewährte Ansätze zu fokussieren.
-
Lean Startup gehört dazu: Die Entwicklung beginnt nicht, solange die Hypothese nicht bestätigt wurde.
-
Aufgaben werden nach den SMART-Kriterien (spezifisch, messbar, erreichbar, relevant, terminiert) definiert.
-
Es ist besonders wichtig, eine Liste mit Aufgaben zu erstellen, die in kurzer Zeit und mit messbaren Ergebnissen ausgeführt werden können, da der Zählerder Verbrauchsanzeige für die Azure-Ressourcen stets weiter tickt.
-
Mit Open Source-Technologien können Sie die Kosten in allen Phasen der Produktentwicklung minimieren. Stellen Sie diese Funktionalität bereit und reduzieren Sie die Kosten für die Implementierung.
Die Nutzung von Azure DevOps und Teams in der verteilten Teamkommunikation erlaubt es Ihnen, den gesamten Entwicklungszyklus mit einer einzigen Cloud-Infrastruktur abzudecken.
Nicht offensichtliche Wege zur Kostensenkung mit einer bestehenden bewährten Infrastruktur
Unternehmen sehen sich häufig mit einer Situation konfrontiert, in der sie Rechnungen für Dienstleistungen erhalten, die offenbar niemand bestellt hat. Es stellt sich jedoch oft heraus, dass der Entwickler einfach vergessen hat, eine laufende Funktion zu deaktivieren. Oder stellen Sie sich einen anderen Fall vor: Das Unternehmen startet eine große Anzahl virtueller Maschinen und ist gezwungen, für den Anstieg des Ressourcenverbrauchs zu zahlen.
Betrachten wir einen Ansatz, der dazu beiträgt, solche Situationen zu vermeiden, am Beispiel der Replikation eines auf maschinellem Lernen basierenden Dienstes.
Fall: Replizieren von Diensten für maschinelles Lernen
Die Aufgabe des Projekts bestand darin, eine Plattform zur Bestimmung von Anomalien auf Satellitenbildern zu entwickeln, die auf Open Source-Technologien basiert.
Das Tool musste dem Anwender erlauben ein Bild zu uploaden. Dieses Bild wurde dann unter Verwendung von maschinellem Lernen analysiert, um bestimmte Anomalien in der Landschaft zu identifizieren.
Darin lag ein großes Problem: Die Bildgröße konnte bis zu 14 GB erreichen (TIFs mit Informationen über Gelände, Kartenabbildung und andere technische Daten, die in den Berechnungen verwendet wurden).
Die Lösung musste sich auf mehrere Regionen skalieren lassen, jedoch gleichzeitig jeden einzeln zu verarbeiten . Genaugenommen bedeutete dies, dass jeder Anwender seine eigene Dialogmaske benutzen musste, und das Laden von Bildern sowie das Empfangen einer Antwort in Echtzeit implementiert werden sollte.
Eine teure virtuelle Maschine mit einer GPU für jede Region zu betreiben, wäre eindeutig zu kostspielig gewesen. Mithilfe der Dokumentation und eines von Azure bereitgestellten Rechners erreichte WaveAccess das optimale Verbrauchsprofil, indem es eine Warteschlange für die Anwender implementierte und einigte sich mit den Business Analysten auf eine akzeptable Reaktionszeit. Als Resultat daraus werden die Bilder nun mit Python in einer große virtuellen Maschine verarbeitet, und die Antwort anschließend an die Warteschlange zurückgereicht. Auf diesem Weg wird eine asynchrone Datenverarbeitung sichergestellt.
Dies stellt wiederum sicher, dass die von Ihnen verwendeten Azure-Ressourcen kontinuierlich ausgeschöpft werden. Mit einer großen Anzahl von Benutzern und durch das Replizieren von Diensten in mehreren unterschiedlichen Regionen wird eine effizientere Nutzung virtueller Maschinen an Arbeitstagen erreicht.
Zu den Kernfeatures dieser Lösung gehörten:
-
Download riesiger Bilder (6-14 GB)
-
Kontinuierliche Verarbeitung von Informationen aus verschiedenen Regionen (Training + Vorhersage)
-
Jupyter Notebooks unterstützen die Entwicklung von Modellen für maschinelles Lernen
In der Folge ermöglicht das entwickelte System die Verarbeitung von Daten aus sechs Regionen mit lediglich zwei reservierten Instanzen.
Bei Bedarf werden vorübergehend zusätzliche Kapazitäten aktiviert, um Anwenderaufgaben zu erledigen (z. B. zu Trainingszwecken). Wenn sich ein bestimmtes Merkmal des Bildes plötzlich ändert und die Berechnungsgenauigkeit beeinträchtigt, beginnt das System mit einem zusätzlichen Training des machine learning Modells . So wird dem Modul ermöglicht, Anpassungen an seinen eigenen Charakteristika und Indikatoren vorzunehmen, und neu hochgeladene Bilder im neuen Format werden mit größerer Genauigkeit verarbeitet.
Rechenzentrum + Cloud: Warum benötigen Sie den Azure Kubernetes Service und Multi-Cloud?
Einige Unternehmen sind bestrebt Dienstleistungen effizient zu entwickeln, sind jedoch durch Budgetbeschränkungen und ihren Zeitplan eingeschränkt. Gleichzeitig benötigen sie spezifische Funktionen für ihre Entwicklungen und andere Projekte, sind jedoch leider nicht in der Lage, Quellcode und Distributionen in ihrer Umgebung bereitzustellen.
Fall: Integrierte Softwareentwicklungsumgebung
Betrachten wir ein Projekt, das für ein innovatives Technologieunternehmen umgesetzt wurde. Die von den Mitarbeitern des Unternehmens genutzten Dienste waren in den eigenen Rechenzentren angesiedelt, aber das Management war aus Sicherheitsgründen nicht bereit, Dritte in diese Umgebung zu lassen. Es war erforderlich, eine von der Produktionsumgebung isolierte Softwareentwicklungs- und Testumgebung zu kreieren. Dabei entschied sich das WaveAccess-Team für Azure.
Die Kernmerkmale der von WaveAccess angebotenen Lösung waren:
-
Organisation der Arbeit mehrerer Auftragnehmer in einer integrierten Entwicklungsumgebung
Es gibt ein Azure Kubernetes Service-Cluster, in dem mehrere Umgebungen für verschiedene Produkte und verschiedene Teams eingerichtet sind: sie überschneiden sich nicht, haben nur Zugriff auf eine begrenzte Anzahl von Ressourcen der Subscription, und können so alle beauftragte Funktionen entwickeln. Die Kommunikation erfolgt über das Ticketsystem in Jira. Die Zugriffsrechte zu erteilen oder die Erweiterung des Clusters in Bezug auf die Kapazität erfolgt ebenfalls schnell über ein Ticket.
-
Bereitstellung der Tools für Projektmanagement, Testautomatisierung und Lieferung von Resultaten
-
Eingeschränkte Cloud-Integration mit einem privaten Netzwerk
Dies stellte sich als ein absolut wichtiges Merkmal der Lösung heraus. Eine Multi-Cloud-Installation von Kubernetes ermöglichte die Verlagerung von Diensten aus Entwicklungsumgebungen in eine pre-Production-Umgebung in einem privaten Netzwerk. Dies bedeutet, dass die Ingenieure des Kunden die Einstellungen leicht übertragen und die Umgebung reproduzieren, sowie Sicherheit und Codequalität überprüfen konnten. CI / CDs wurden basierend auf Azure Pipelines implementiert. Der Zugriff auf die Umgebung und die dort laufenden Dienste erforderte aufgrund der Sicherheitsrichtlinien des Unternehmens eine zusätzliche Migration.
-
Einfache Übertragung von Einstellungen und Arbeitsergebnissen von der Entwicklungsumgebung in die Produktion und zurück
Als Ergebnis wurde eine Microsoft Azure-basierte Entwicklungsumgebung erstellt und mit Azure DevOps Server in ein privates Netzwerk integriert. Auftragnehmer erhielten per Azure Kubernetes Service Zugriff auf die Umgebung und per Azure DevOps Services Zugriff auf Projekte.
-
Kubernetes als Brücke
Der Azure Kubernetes-Service fungiert häufig als „Klebstoff“. In mehreren Projekten sind wir auf Situationen gestoßen, in denen Unternehmen sowohl über ein öffentliches Netzwerk mit einer auf Kubernetes basierenden Entwicklungsumgebung als auch über ein privates Netzwerk verfügten, in dem Kapazitäten und Dienstleistungen – nach Abschluss aller Arbeiten – in den pre-Productionbetrieb überführt wurden.
***
Das Aneignen einer DevOps-Philosophie in Verbindung mit der Migration zu Open Source mit Microsoft Azure bietet kommerzielle technologiefreie Lösungen von höherer Qualität und zu geringeren Kosten. Wir inspirieren unsere Kunden dazu, ihre Prozesse zu transformieren, und kümmern uns darum, Innovationen voranzutreiben und die Prozesse Ihres Unternehmens rentabler zu machen.
Lassen Sie sich mehr über unsere Projekte erzählen!
Kontaktieren Sie uns:
hello@wave-access.de