Softwareentwicklung ohne eigene Infrastruktur? – Cloud-Dienste machen‘s möglich!

Das Thema Cloud-Computing war eines der bestimmenden Themen des vergangenen Jahres in der IT-Industrie. Experten sind sich darüber einig, dass sich die IT-Landschaft nachhaltig verändern wird. In der Praxis kommen insbesondere in Deutschland Cloud-Technologien noch selten zum Einsatz. Es existieren Vorbehalte und deshalb bleiben interessante Möglichkeiten häufig noch ungenutzt. Der Wandel ist allerdings bereits in vollem Gange, wie ein Blick auf bereits bestehende Cloud-Lösungen zur Unterstützung in den verschiedenen Phasen eines Softwareentwicklungsprojektes zeigt. Anhand von verschiedenen Cloud-Angeboten mit einem Schwerpunkt auf dem Microsoft-Portfolio, werden im folgenden Artikel Lösungen mit Vor- und Nachteilen aufgezeigt. So wird ein schneller Überblick darüber gewonnen, welche Lösungen bereits heute im eigenen Unternehmen produktiv eingesetzt werden können und was doch noch der Zukunft vorbehalten bleibt.
Ist die Cloud die Zukunft? Oder sind wir schon mittendrin?
Phasen in einem Entwicklungsprojekt
Unabhängig vom verwendeten Entwicklungsprozess – agil oder klassisch – lassen sich die Phasen eines Projekts in Spezifizieren, Planen, Umsetzen, Test und Betrieb unterscheiden.
In diesen werden jeweils unterschiedliche Werkzeuge zur Unterstützung, wie in Abb. 1 dargestellt, benötigt. Ob eine Softwarelösung zum Einsatz kommen muss, sollte dabei stets hinterfragt werden. In einem kleinen Team, das gemeinsam in einem Raum sitzt, kann auf vieles verzichtet werden. Der mit einer Softwarelösung einhergehende Verwaltungsaufwand kann in diesem Fall häufig vermieden werden. Völlig anders gestaltet sich die Situation, wenn an einem Projekt voneinander unabhängige Unternehmen an weltweit verteilten Standorten beteiligt sind. Hier ist ein Einsatz einer Softwarelösung kaum vermeidbar. Getrennte Netze und damit einhergehende verteilte Verantwortlichkeiten machen das Aufsetzen der Infrastruktur anspruchsvoll. Nach einer Einigung auf eine Lösung müssen virtuelle Netze aufgebaut und die Authentifizierung und Autorisierung gelöst werden. Der Aufwand lässt sich durch ein Ausweichen auf extern bereitgestellte Cloud-Lösungen reduzieren.
Cloud-Lösungen zur Unterstützung eines Entwicklungsprojekts
Kommunikation und Datenaustausch
Cloud-basierte Kommunikationslösungen sind heute bereits sehr weit verbreitet. Ein integriertes Desktop-Sharing, Chats und Whiteboards ermöglichen eine effiziente Zusammenarbeit. Das Telefon als Medium für Telekonferenzen wurde hierdurch weitgehend verdrängt.
Es steht eine Vielzahl von Lösungen (s. Abb.2) zur Verfügung. Skype [1] hat eine sehr hohe Verbreitung insbesondere in kleinen Unternehmen. Der Dienst steht kostenlos zur Verfügung. In größeren Unternehmen ist die Nutzung häufig untersagt, da sich der Datenverkehr nur sehr schwer kontrollieren lässt. Als quasi Standard für ein Desktop Sharing hat sich der Team Viewer [2] etabliert. Er bietet insbesondere bei der gemeinsamen Arbeit auf einem virtuellen Desktop Vorteile.
In vielen Unternehmen wurde zur internen Kommunikation Microsoft Lync eingeführt. Die Kommunikation wird durch einen Server im Intranet gesteuert. Mit Lync Online steht eine Cloud-Variante als Teil von Office 365 [3] mit vergleichbarem Funktionsumfang zur Verfügung. Für eine Kommunikation über Unternehmensgrenzen hinweg ist hierbei besonders interessant, dass Nutzer von Lync, Lync Online und Skype – eine entsprechende Konfiguration vorausgesetzt – sich gegenseitig erreichen und damit virtuell zusammenarbeiten können. Eine zentrale Administration und eine Einigung auf einen Dienst sind damit nicht notwendig.
Eine gemeinsame Lösung für die Ablage von Dateien wie Spezifikationen oder Storyboards zu finden, ist etwas komplizierter. Die Auswahl ist sehr groß (s. Abb.3). Für einen Einsatz im Unternehmensumfeld sind viele jedoch nur sehr bedingt zu empfehlen. Für einen einfachen Austausch von Dateien ist es möglich, auf Dropbox [4] oder OneDrive [5] zurückzugreifen. Letzterer Dienst bietet sogar die Möglichkeit, gleichzeitig an Office-Dokumenten zu arbeiten. Die Zugriffe werden allerdings über Nutzername und Passwort bzw. einen Microsoft-Account (ehemals LiveId) gesteuert. Eine sichere Verwaltung der Zugänge ist damit im Gesamtunternehmenskontext kaum möglich. Die Lösungen sind damit für kleine Projekte oder als temporäre Lösung verwendbar.
Als Alternative für Unternehmen stellt Microsoft Office 365 [3] zur Verfügung. Die darin enthaltene SharePoint Online-Version bietet die Möglichkeit, den Zugriff über ein oder mehrere Active Directorys zu steuern.
Projekt- und Quellcodeverwaltung
Bei der Projekt- und Quellcodeverwaltung kann man zwischen integrierten und voneinander unabhängigen Lösungen wählen. Bei letzterer Variante kommen für die Projektverwaltung insbesondere Atlassian Jira [6] und GitHub [7] in Betracht. Jira bietet sehr weitreichende Möglichkeiten bei der Anpassung des Workflows. GitHub ist insbesondere im Open Source-Umfeld etabliert. Über eine Synchronisierung des Active Directories ist eine zentrale Verwaltung der Berechtigungen möglich.
Als integrierte Lösung bietet sich Microsoft Visual Studio Online (VSO) [8] an. Die Quellcodeverwaltung erfolgt bei VSO über Git oder Team Foundation Version Control. Ein Web Portal sowie eine Integration in Excel, Projekt und Word [9] vereinfacht die Projektsteuerung. Darüber hinaus wurden in dem Dienst weitere Werkzeuge (s. Abb.4) zusammengefasst. Ein integriertes Test-Management ermöglicht die Spezifikation, Ausführung und Verwaltung von Testfällen. Der Build Dienst unterstützt bei der kontinuierlichen Überwachung der Quellcode-Qualität sowie bei der Erstellung von Setups.
VSO ist ein Beispiel für Microsofts „Cloud First“-Strategie
Die Ergebnisse des Buildprozesses können mithilfe des Release Managements in die produktiven Umgebungen übertragen werden. Die Skalierbarkeit von Anwendungen kann mit Hilfe von cloud-basierten Lasttests überprüft werden. Auch sehr große Nutzerzahlen lassen sich hierdurch simulieren und damit auch komplexe Szenarien überprüfen. Visual Studio Online ist ein Beispiel für Microsofts „Cloud First“-Strategie. Neue Funktionen werden regelmäßig, in etwa alle vier Wochen, automatisch in den Dienst integriert. Erst danach werden diese mit den vierteljährlichen Updates für die On-Premise-Version, den Team Foundation Server, bereitgestellt.
Der Zugang zu dem Dienst ist in jeder Microsoft Subscription bereits kostenlos enthalten. Zusätzlich stehen pro Konto fünf weitere Zugänge zur Verfügung. Darüber hinaus können unbegrenzt weitere Stakeholder auf einen eingeschränkten Funktionsumfang, wie z. B. das Melden eines Bugs, zugreifen.
Die von Microsoft garantierte Verfügbarkeit von 99,9 % geht über das hinaus, was sich in einer Unternehmensumgebung ohne sehr großen Aufwand zu betreiben realisieren lässt. Allein ein Einspielen der Updates führt zu einer längeren Wartungspause, in der eine lokale Installation nicht erreichbar ist. Seit diesem Jahr sind die europäischen Datenschutzrichtlinien Teil der Vertragsbedingungen. Als Rechenzentren stehen die USA oder Europa zur Auswahl. Als einer der wenigen Dienste ist Visual Studio Online sogar ISO 27001 [10] zertifiziert. Durch eine Verwaltung der Berechtigungen über das Active Directory oder alternativ über Microsoft Accounts eignet sich die Lösung sowohl für kleine als auch große Unternehmen.
Entwicklungsumgebung
In Unternehmen, in denen Anwendungen mit unterschiedlichen Technologien entwickelt werden, ist ein Aufsetzen eines Entwicklungsrechners häufig komplex. In einigen Fällen ist es auch nicht möglich, unterschiedliche Versionen einer Entwicklungsumgebung auf einem Rechner zu installieren. In so einem Fall bietet sich eine Virtualisierung ein. Es werden unterschiedliche Konfigurationen – z. B. Windows 7 mit Visual Basic 6 und Windows 8 mit Visual Studio 2013 – virtuell in einem Rechenzentrum bereitgestellt. Unter Nutzung von Infrastructure as a Service (IaaS)-Anbietern, wie z. B. Amazon oder Microsoft, können diese Virtualisierungen auch flexibel in der Cloud angeboten werden.
Die Zahlungen fallen dabei pro genutzter Minute der virtuellen Maschine (VM) zuzüglich verbrauchtem Speicherplatz an. Unter Microsofts Dienst Windows Azure [11] liegen z. B. die Kosten für einen Rechner mit 2 Kernen, 7 GB RAM und einer SSD bei einer Nutzung an 20 Arbeitstagen à 8 Stunden in etwa bei 40 € im Monat. Da in jeder MSDN-Subscription für Visual Studio Ultimate ein monatliches Guthaben von 75 € (Premium) bzw. 115 € (Ultimate enthalten ist [12], ist dieser Dienst in vielen Fällen sogar kostenlos.
Die Verbindung mit der VM erfolgt per Remote Desktop. Eine entsprechende Bandbreite vorausgesetzt ist das Verhalten mit einem lokalen Entwicklungsrechner durchaus vergleichbar. Bei rechenintensiven Aufgaben ist es zusätzlich möglich, die Leistung kurzzeitig und binnen weniger Minuten durch das Zuweisen von zusätzlichen Kernen und mehr Arbeitsspeicher zu steigern.
Die Erstellung einer virtuellen Instanz ist, wie in Abb.5 zu sehen, sehr einfach und schnell. Es stehen viele vollständig eingerichtete Maschinen mit unterschiedlichen Betriebssystemen zur Auswahl. Bei Bedarf kann ein selbst konfiguriertes Template ergänzt werden. Dabei wird zunächst ein virtueller Rechner entsprechend den Anforderungen eingerichtet. Danach wird dieser mit Hilfe von SysPrep in ein Image umgewandelt und zentral (s. Abb.6) bereitgestellt.
Bei Bedarf können sich Entwickler das Template in die eigene Subscription kopieren und darauf aufbauend eine neue VM erstellen.
Build-Prozess
Für die Umsetzung eines Build-Prozesses stehen mehrere Varianten zur Verfügung. Build-Dienste wie Travis-CI [13], AppVeyor [14] oder Visual Studio Online Elastic Build bieten die Möglichkeit, auf vorkonfigurierten Maschinen Build-Prozesse auszuführen. Eine Konfiguration eines separaten Buildservers ist damit überflüssig. Allerdings sind damit auch Anpassungen, wie z. B. eine Installation von zusätzlichen Komponenten, nur sehr eingeschränkt möglich. Die Kosten können schnell ausufern. Microsofts Lösung schlägt z. B. mit 0,0373 € pro Build-Minute zu Buche. Dies summiert sich bei mehreren parallel laufenden Prozessen oder bei einer Integration von umfangreichen Tests sehr schnell. Die enthaltenen 60 Freiminuten pro Monat sind zügig aufgebraucht.
Alternativ lässt sich eine Build-Server-Farm auch über einen IaaS-Anbieter aufbauen. Dabei werden virtuelle Build-Maschinen analog zu virtuellen Entwicklungsumgebungen konfiguriert und mit der Quellcodeverwaltung (s. Abb.7) verknüpft.
Abhängig von den Builds, die in der Warteschlange auf Bearbeitung warten, können entsprechende virtuelle Build-Maschinen flexibel gestartet und auch wieder gestoppt werden. Durch die Kostenstruktur (unter Windows Azure ab 0,06 €/h) lässt sich damit eine sehr kostengünstige Build-Farm, die sich stets den Erfordernissen anpasst, aufbauen. Die Wartung der Build-Server-Konfiguration (incl. Lizenzierung) muss dabei aber wieder selbst übernommen werden. Dies ermöglicht es allerdings auch, spezifische Komponenten oder ältere Compiler zu installieren. Eine solche Build-Farm ist dabei keineswegs an eine Hinterlegung des Quellcodes auf einem öffentlichen Repository wie Visual Studio Online gebunden.
Unter Windows Azure können über Site-to-Site-VPN Verbindung auch virtuelle Maschinen in das lokale Netzwerk integriert werden (s. Abb.8). Ein sicherer Zugriff auf eine im lokalen Netzwerk vorhandene Quellcodeverwaltung, wie z. B. einem TFS, wird damit möglich. Die typische lange Build-Schlange am Nachmittag kann damit vermieden werden.
Testsysteme
Analog zur Verwendung von virtuellen Maschinen für die Entwicklung können diese auch für Tests eingesetzt werden. Ein frisches Windows 7 zum Test eines Setups kann innerhalb von wenigen Minuten bereitgestellt und nach dem Test zurückgesetzt werden. Ein Test einer Anwendung in unterschiedlichen Umgebungen ist damit ohne das Vorhalten einer eigenen Infrastruktur möglich.
Zur Ausführung von Lasttests bietet sich die Nutzung von Visual Studio Online Load Testing [15] an. Auf Test-Agents mit bis zu 100 CPU-Kernen kann eine Vielzahl von virtuellen Nutzern über Web- oder Integrationstests simuliert werden. Das Verhalten einer Anwendung in verschiedenen Nutzerszenarien kann damit überprüft werden. Der Dienst wird pro Virtueller User Minute (VUM) abgerechnet. 20.000 Minuten sind im Monat frei. Danach werden 0,0003 € [16] berechnet. Ein Lasttest mit 50 Benutzern über 10 Minuten schlägt mit 500 VUMs zu Buche. Bei häufigem Einsatz empfiehlt sich der Aufbau einer eigenen cloud-gestützten Test-Farm analog zu der beschriebenen Build-Umgebung.
Hosting
Die Möglichkeiten zur Bereitstellung von Anwendung über einen Cloud-Anbieter sind sehr vielfältig. Sie reichen von Webseiten über Datenbanken bis hin zu virtuellen Maschinen.
Unabhängig davon, ob eine zu entwickelnde Anwendung später in einer Cloud gehostet werden soll, kann man diese Möglichkeiten während der Entwicklung nutzen. So kann z. B. regelmäßig eine Vorschauversion einer Anwendung oder einer Webseite über einen Cloud-Dienst bereitgestellt werden. Die Aufwände für eine Bereitstellung auf einem internen System mit entsprechender Konfiguration reduzieren sich. Da auf einem Testsystem zumeist nur mit simulierten Daten gearbeitet wird, ist eine Bereitstellung außerhalb zumeist auch nicht sicherheitskritisch.
Virtuelle Maschinen können bei den meisten Cloud-Anbietern variabel in der Leistung angepasst werden. In Verbindung mit Lasttests ermöglicht dies eine Analyse der Hardwareanforderungen für einen späteren internen Betrieb. Dabei wird die Anwendung zunächst auf einer bewusst klein dimensionierten VM veröffentlicht. Basierend auf den Anforderungen werden Lasttests erstellt und durchgeführt. Stützend auf den Ergebnissen wird entweder die Anwendung optimiert oder die Leistungsfähigkeit der VM schrittweise angepasst, bis die definierten Ziele erreicht wurden. Die gewonnenen Informationen können genutzt werden, um ein System mit optimalem Preis-Leistungs-Verhältnis für einen internen Betrieb auszuwählen.
Überwachung
Für die Überwachung von Anwendungen stehen ebenfalls cloud-basierte Lösungen zur Verfügung. Unter anderem für Webseiten bietet sich Application Insights an [17]. Nach Integration in den Quellcode z. B. über ein NuGet Package werden automatisch aufgetretene Ausnahmen an den Dienst übermittelt. Diese lassen sich auf einer Portalseite grafisch auswerten. Bei Bedarf können auch Alarme via E-Mail verschickt werden. Zusätzlich ist es möglich, die Erreichbarkeit einer Anwendung kontinuierlich überwachen zu lassen (s. Abb.9). Dabei ist auch die Auswahl von global verteilten Standorten möglich.
Weitere Metriken können in die Anwendung integriert werden. Der Dienst wird von Microsoft zur Verfügung gestellt. Man ist allerdings nicht an die Nutzung einer Microsoft-Technologie gebunden. Es werden weitere Programmiersprachen – unter anderem auch Java – unterstützt.
Vor- und Nachteile von Cloud-Lösungen
Eine Nutzung von Cloud-Diensten hat eine Reihe von Vorteilen. Insbesondere folgende sind hervorzuheben:
- Sehr hohe Verfügbarkeit
- Schnelle Erweiterbarkeit der Entwicklungslandschaft
- Regelmäßige Erweiterung des Funktionsumfangs
- Verringerung der Wartungskosten
Die Kosten einer Cloud-Lösung liegen meist unter denen einer selbst gehosteten Lösung. In die Kalkulation sind Kosten für die Hardwarebeschaffung, Stromverbrauch, Lizenzen sowie Wartungsaufwände einzubeziehen. Durch die zumeist monatliche Zahlung von Diensten ergibt sich in vielen Fällen eine bessere steuerliche Absetzbarkeit.
Den Vorteilen gegenüber stehen weitere Punkte, die berücksichtigt werden müssen: Die Daten werden außerhalb des eigenen Intranets gespeichert und verarbeitet. Damit gehen Risiken einher (vgl. [18]). Zum einen können ggf. Dritte sich Zugriff auf die Daten verschaffen. Zum anderen begibt man sich bei einem Hosting außerhalb der Europäischen Union ggf. auf rechtliches Glatteis. Einige Anbieter, wie z. B. Microsoft, haben entsprechende Regelungen in Vertragsbedingungen aufgenommen, um hier Sicherheit zu verschaffen.
Entscheidender ist allerdings die Frage, was passiert, wenn der Lösungsanbieter seinen Dienst einstellt oder es beim Anbieter zu einem Datenverlust kommt. Steht in diesem Fall eine Rückfallstrategie z. B. über eine Weiterführung des Hostings im Intranet zur Verfügung? Diese Frage wird bisher von den Anbietern nur ungenügend beantwortet.
Zusammenfassung
Der Überblick über die zur Verfügung stehenden Lösungen zur Unterstützung der Softwareentwicklung hat gezeigt, dass die Cloud keineswegs ein reines Zukunftsthema ist. Viele Cloud-Lösungen gehen bereits deutlich über das hinaus, was im eigenen Unternehmen bei Berücksichtigung des Kostenaspekts umsetzbar ist. Die Sorgen der Kunden insbesondere im Bereich Daten- und Rechtssicherheit wurden erkannt und über vertragliche Regelungen adressiert. Aktuelle Nutzerzahlen zeigen, wie schnell die Verbreitung steigt. Allein die Dienste Visual Studio Online und Office 365 nutzen weltweit mehr als 2 Mio. bzw. 9 Mio. Kunden. Eine Migration in die Cloud ist schrittweise möglich. Auch einzelne Cloud-Dienste, wie z. B. Build-Prozesse, lassen sich sinnvoll mit Diensten im Intranet kombinieren und damit auch bereits heute optimale Lösungen unter Berücksichtigung der Gegebenheiten zusammenstellen.
Quellen
[1] Skype
[2] Team Viewer
[3] Office 365
[4] Dropbox
[5] OneDrive
[6] Atlassian Jira
[7] GitHub
[8] Visual Studio Online
[9] AIT WordToTFS
[10] Wikipedia: ISO 27001
[11] Windows Azure
[12] blog.aitgmbh.de: Windows Azure Freikontingent
[13] Travis CI
[14] AppVeyor Continous Delivery
[15] Visual Studio Online Load Testing
[16] Visual Studio Online Pricing
[17] Application Insights
[18] blog.aitgmbh.de: Wie sicher ist die Cloud?
Neuen Kommentar schreiben