Eine Cloud-Entwicklungsumgebung für On-Premise-Anwendungen einsetzen

Die Tools vieler renommierter Public-Cloud-Dienste erlauben es IT-Teams, das Entwickeln und Testen komplett in die Public Cloud zu verschieben.

Selbst wenn man in nächster Zeit lokale Anwendungen nicht ganz oder nur teilweise in die Cloud migriert: Die Vorteile einer Cloud-Entwicklungsumgebung kann man in jedem Fall genießen. Der Hintergrund: Viele Unternehmen verfolgen einen Hybrid-Cloud-Ansatz. Sie lassen zwar Produktivanwendungen weiter lokal laufen, erledigen aber die laufenden Entwicklungs- und Testarbeiten in der Public Cloud.

Mit der Vielzahl von Werkzeugen, die inzwischen von mehreren Cloud-Anbietern bereitgestellt werden, ist es einfacher als in den vergangenen Jahren, eine Infrastruktur On-Demand aufzubauen, Code zu schreiben und ganze Testbatterien für Anwendungen auszuführen, um sicherzustellen, dass die Applikationen für den produktiven Einsatz bereit sind.

Vorteile der Public Cloud für Entwicklung und Tests

Egal ob es sich um eine einfache Anwendung handelt, die auf einem einzelnen Server ausgeführt wird, oder um eine hoch entwickelte Multi-Tier-Anwendung, die eine komplexe Testumgebung benötigt: Cloud-Computing-Plattformen wie Amazon Web Services (AWS) und Microsoft Azure können den Entwicklungsprozess drastisch beschleunigen.

Public-Cloud-Anbieter machen es Nutzern einfach, die Bereitstellung von virtuellen Maschinen (VMs) zu beschleunigen. Ein einziger API-Aufruf stellt dem Entwicklungs- oder Testingenieur eine virtuelle Maschine zur Verfügung, mit der er die Anwendung implementieren und mit einer Reihe von Tests validieren kann. Allerdings geht das nicht mit allen Anwendungen so einfach.

Einige Unternehmens-Applikationen brauchen eine umfassende Infrastruktur, um die lokale Produktionsumgebung für geeignete reale Tests zu imitieren. Das App-Team – Entwickler und IT-Operatoren – muss die Ausführung der Anwendung in der realen Welt und die Besonderheiten der Umgebung, in der die Anwendung läuft, möglichst gut verstehen, so dass das Team das Verhalten der App, wie etwa die Latenz, genau vorhersagen kann.

Ausgereifte Plattformen wie AWS und Azure verwenden dafür deklarative JSON-basierte Vorlagen. Mit diesen kann die Automatisierung komplexer Infrastrukturumgebungen mit eigenen Netzwerk, Speicher und VM-Instanzen unterstützt werden. Auf diese Weise können operative Teams in der Cloud in wenigen Minuten vollständig konfigurierte Repliken der lokalen Produktionsumgebung erstellen. Allgemein ist dieses Konzept als Infrastructure as Code (IAC) bekannt, bei AWS heißt es CloudFormation und bei Azure Resource Manager-Vorlagen.

Entwickler können auf der gewählten Cloud-Plattform so viele virtuelle Server einsetzen, wie sie gerade benötigen – und nicht benötigte einfach wieder stornieren.

Hinzu kommt ein weiterer Punkt: Leiter von Rechenzentren sind immer wieder mit Hardwareeinschränkungen konfrontiert, wenn sie ihren Entwicklungs- und Test-Teams Ressourcen zuordnen. Schließlich müssen die Hardwarespezifikationen für die Testumgebung denen ähnlich sein, die sie in der Produktion einsetzen. Diese physischen Systeme müssen aber auch am Laufen gehalten werden. Weil Hardware und unterstützende Peripheriekomponenten hin und wieder ausfallen, kann es im Fall der Fälle passieren, dass sich das Testen des Codes verzögert, bis das operative Team die Komponenten ersetzen oder beheben kann.

Auch hier ist die Cloud eine große Hilfe: In Cloud-Entwicklungsumgebungen wird die physische Hardware „ausgelagert“, zusammen mit allen damit verbundenen Wartungsaufgaben. Entwickler können auf der gewählten Cloud-Plattform so viele virtuelle Server einsetzen, wie sie gerade benötigen – und nicht benötigte einfach wieder stornieren. Um mögliche Ausfälle und Wartung kümmert sich der Provider, das unternehmenseigene Team hat damit nichts zu tun.

Dies führt zu einem dritten Punkt: Der Betrieb eigener Hardware zur Ausführung von Entwicklungs- und Test-Workloads bedeutet, dass die Mitarbeiter der IT-Organisation zeitweilig beschäftigungslos herumsitzen. Das kostet Geld. Die IT braucht zudem Stellfläche und Platz im Rechenzentrum und verbraucht wahrscheinlich auch dann Strom, wenn das Data Center gar nicht genutzt wird. In der Cloud bezahlen die Benutzer nur das, was sie verbrauchen. Umgebungen können bei Bedarf aufgebaut und wieder abgebaut werden, so dass die Organisation nur die benötigten Ressourcen bezahlt.

Inzwischen wurde auch wichtige Software Cloud- bzw Hybrid-Cloud-fähig gemacht: Viele Continuous Integration  und Application Lifecycle Management Tools arbeiten sowohl mit Cloud-Plattformen als auch mit lokalen Servern zusammen. Anbieter wie AWS und Microsoft verfügen über eine Reihe von DevOps-Tools, die sowohl mit lokalen als auch Cloud-basierten Servern funktionieren und so den hybriden Übergang von der Entwicklung zur Produktion erleichtern.

Tools, die eine Hybrid Cloud ermöglichen

Wenn man von vorne anfängt, sollten man mehrere Tools ins Auge fassen, die eine vollautomatische Pipeline für Software-Releases aufbaut.

Quellcodeverwaltung: Git ist das am häufigsten verwendete Tool für die Verwaltung des Source Codes und bietet ein verteiltes Versionskontrollsystem. Viele kontinuierliche Test- und Integrations-Tools arbeiten problemlos mit Git zusammen, und zahlreiche Unternehmen arbeiten mit GitHub, einem webbasierten Git-Repository-Hosting-Service. Anwendungsteams können damit öffentliche und private Quellcode-Repositories aufbauen und auf Grundlage der Codebasis zusammenarbeiten. Diese kann schließlich in Test- und Produktionsumgebungen geschoben werden.

Kontinuierliche Integration: Für die automatisierte Code-Bereitstellung in Cloud-Test-Umgebungen sollten Sie einen CI-Server ausprobieren. Der CI-Server steuert mehr oder weniger den gesamten Build-Prozess und ist die zentrale Integrationsinstanz, die unabhängig von den einzelnen Entwicklern und der Projektsituation arbeitet und so als Quality Gate für das gesamte Projekt fungiert. Der CI-Server kann so eingerichtet werden, dass er das Quellcode-Repository für Commits – Änderungen des Anwendungscodes – abfragt und dann eine Reihe von Stages erzeugt, die auf den letzten Änderungen basieren.

Zum Beispiel kann man den Open Source Jenkins CI Server verwenden, um ein GitHub-Repository für eine Anwendung abzufragen – oder die Mitbewerber TeamCity, Travis CI, CircleCI oder Codeship. Wenn eine Änderung übergeben wird, führt Jenkins einen Build auf dem Code aus, führt Unit-Tests aus und löst dann durch das Starten einer CloudFormation-Vorlage die Bereitstellung einer Testumgebung aus. Sobald die Umgebung aktiv ist und läuft, bringt ein anderer Job die Anwendung auf die Server in Ihrer Testumgebung. Dadurch wird der Anwendungscode von den Produktionsservern ferngehalten, bis er alle Tests bestanden hat. An diesem Punkt kann das operative Team entweder den Code manuell auf den Servern implementieren oder ihn zur Ausführung automatisch aktivieren.

Leistungs-, Last- und Interface-Prüfung: Performance- und Interface-Tests stellen sicher, dass eine Anwendung die erwartete Benutzerlast in der Produktivumgebung verarbeiten kann und dass sie ordnungsgemäß funktioniert. Beliebte Tools, die Last- und Performance-Tests für lokale und Cloud-basierte Ressourcen ausführen können, werden von Apica und BlazeMeter angeboten. Ghost Inspector ist ein praktisches Tool zum Beheben von Website-Bugs und anderen UI-Problemen.

Mehr zum Thema Softwareentwickelung:

Kostenloses E-Handbook: Grundlagen der App-Entwicklung für Android und iOS.

Oracle JET bietet Entwicklern verschiedene Tools für die Anwendungsentwicklung.

Kostenloses E-Handbook: Softwareentwicklung mit Amazon Web Services.

Softwareentwicklung mit Platform as a Service (PaaS) – Hype oder Realität?

Die sichere Softwareentwicklung in AWS gewährleisten.

Cloud-native DevOps-Werkzeuge

AWS und Microsoft haben Cloud-basierte Software-Lifecycle-Management-Tools entwickelt, um Hybrid-Cloud-Anwendungen flexibel verwalten zu können, die eine lokale Infrastruktur zusammen mit Public Clouds nutzen.

AWS CodeDeploy automatisiert die Implementierung des Anwendungscodes in einer Amazon-Elastic Compute-Cloud-Instanz oder auf eigenen Servern. AWS CodePipeline erstellt eine orchestrierte Continuous-Delivery-Pipeline in der Cloud, die ein Quellcode-Repository für Änderungen abfragt, Builds und/oder Tests auf dem CI-Server startet und dann Code auf Entwicklungsinstanzen in der Cloud und auf lokalen Servern ausrollt, die den CodeDeploy-Agenten ausführen.

Die Visual Studio Team Services von Microsoft funktionieren ähnlich wie die AWS DevOps-Tools. Die Release-Management-Funktion ermöglicht es IT-Teams, eine automatisierte Release Pipeline zu bauen, womit das Anwendungs-Team Code auf jedem Server bereitstellen kann.

Ein CI-Server kann entweder lokal oder in der Cloud ausgeführt werden. Darüber hinaus müssen Cloud-Server keine einzige Cloud bilden: On-Premise-Server können auch eine andere Cloud-Plattform als Entwicklungs- und Testserver nutzen. Zum Beispiel kann einen nichts daran hindern, den AWS-CodeDeploy-Agenten auf einer Azure VM auszuführen.

In der realen Welt arbeiten

Die Technologie für eine hybride Entwicklungs- und Test-Bereitstellung, die Cloud und On-Premise verknüpft, ist heute schon verfügbar. Eine der größten Herausforderungen ist wahrscheinlich die Komplexität der Ökosysteme.

Team-Mitglieder benötigen bestimmte Ressourcen, um ihren Job zu erledigen. Dazu gehören Schulungen zu Public-Cloud-Plattformen und zu den spezifischen CI/CD-Tools, welche die App-Pipeline bilden.

Damit der Ansatz funktioniert, sollten alle Teams in einer Organisation an Bord geholt werden. Zum Beispiel gibt es Szenarien, in denen Ihre lokalen Netzwerk- und/oder Sicherheits-Teams den Datenfluss vom lokalen Standort in die Cloud verstehen müssen, damit sie Vorschriften oder interne Sicherheitsrichtlinien einhalten können.

Unabhängig davon stellt die Förderung der Arbeitsbeziehung außerhalb der DevOps-Blase den erfolgreichen Übergang von der Public Cloud auf die Produktionsserver sicher. Man sollte versuchen, alle Teams an Bord zu holen, die helfen können, das umfassende Ziel zu erreichen und die zusammenarbeiten, um den Job zu erledigen.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook!

Artikel wurde zuletzt im Januar 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Software-Entwicklung

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchDataCenter.de

Close