Wir haben uns bei codecentric schon vor ein paar Jahren entschieden möglichst viele Dienste in die Cloud zu verlagern. Google Apps war ein erster Schritt bei uns, um den eigenen Exchange Server abzulösen. Die Frage die sich irgendwann in diesem Prozess gestellt hat ist, wie es mit Cloud Diensten für die Software Entwicklungsumgebung, also Entwicklungswerkzeuge und -infrastruktur, aus der Cloud aussieht? Mit diesem Artikel möchte ich einen Überblick über verfügbare Entwicklungstools als Software as a Service (SAAS) oder Platform as a Service (PAAS) geben und diese beschreiben. Natürlich ist das nur ein kleiner Ausschnitt der verfügbaren Tools, aber aus meiner Sicht sicherlich eine Auflistung der besten verfügbaren Werkzeuge – insbesondere wenn man wie wir mit agilen Methoden und Praktiken entwickelt.
Gerne würde ich aber Euer Feedback und Eure Erfahrung dazu hören, denn der Markt entwickelt sich sehr schnell und es ist kaum möglich alle Werkzeuge im Blick zu haben.
Source Verwaltung – GitHub
Eine der wichtigsten Werkzeuge für den Entwickler ist eine Versionskontrolle für Sourcen, Dokumente und andere Artefakte in der Entwicklung. Nach CVS, Subversion und Co haben sich mittlerweile Distributed Version Control Systeme (DVCS) durchgesetzt. Git und Mercurial haben sich hier etabliert. Mit GitHub gibt es eine Plattform, die Git aus der Cloud bereitstellt. Immer mehr OpenSource Projekte, aber auch Firmen stellen auf diese Plattform um – mittlerweile verwaltet GitHub mehr als 3.500.000 Projekte. Es gibt auch eine Enterprise Version für die unternehmensinterne Installation, was aus rechtlichen Gründen interessant sein kann. GitHub ist sehr einfach und intuitiv zu bedienen. Projekte lassen sich leicht anlegen oder clonen, d.h. man kann beispielsweise mit einem Klick eine lokale Kopie des Springframeworks anlegen. Neben den Versionskontrollfunktionen gibt es aber auch noch ein Wiki, ein einfaches Bugtracking Werkzeug und ein Collaborations Werkzeug für die Durchführung von Code Reviews – insbesondere letzteres ist ein echter Mehrwert in Projekten.
Eine Alternative zu GitHub ist BitBucket , das sicherlich einen ähnlichen Funktionsumfang hat, aber ursprünglich nur für Mercurial ausgelegt war. Seit kurzem wird aber auch Git unterstützt. BitBucket wurde von Atlassian gekauft und es wird spannend sein zu beobachten wie BitBucket und die Atlassian Tools integriert werden.
Agiles Projektmanagement – Jira OnDemand und Sprint.ly
Atlassian stellt seine Werkzeuge seit diesem Sommer alle auch als OnDemand Version aus der Cloud bereit. Das spart Administrations- und Betriebskosten und man ist immer auf einem stabilen, aber aktuellen Stand der Werkzeuge. Mit Jira OnDemand gibt es das wohl zurzeit beste Bugtracking Werkzeug aus der Cloud. Funktionen wie anpassbare Workflows, konfigurierbare Dashboards, eine mächtige Abfragesprache (JQL) und ein sehr gutes Plugin Konzept mit vielen nützlichen Erweiterungen machen Jira zu einer Allzweckwaffe. Mit Greenhopper erhält man dazu noch ein Werkzeug für agiles Projektemanagement, das sowohl Scrum als auch Kanban unterstützt. Man kann mit Greenhopper Product Backlogs pflegen und priorisieren, Release- und Sprintplanungen durchführen und User Stories auf Tasks runterbrechen. Greenhopper bietet dazu ein intuitives Taskboard an und erlaubt es verschiedene Burndowncharts zu generieren. Mit dem Jira Wallboard gibt es eine sehr gute Ansicht, um mit Hilfe eines LCD Fernseher oder Bildschirm einen Information Radiator zu installieren – ein wichtiges Instrument, da ein digitales Taskboard gegenüber dem klassischen Post-it Boards sonst einen großen Nachteil hat.
Jira und Greenhopper OnDemand eignen sich für kleine und große Projekte/Organisationen. Allerdings kann das Werkzeug für einige Teams auch zu mächtig sein und damit auch die Geschwindigkeit bremsen.
Eine sehr neue, aber intelligente Alternative für Projekte mit Startup Character ist Sprint.ly . Bei Sprint.ly steht das Produkt und das Produkt Backlog im Mittelpunkt der Anwendung. Man kann dort User Stories, Tasks, Fehler und Tests anlegen und schnell per drag&drop priorisieren. Sprint.ly bietet zudem ein Task Board an und die Möglichkeit die Schätzungen in Form von T-Shirt Größen vorzunehmen (S, M, L, XL). Sprint.ly begeistert durch ein sehr gutes UI Design und die schnelle Bedienung, die seit einigen Tagen auch Tastaturkürzel unterstützt. Dazu ist Sprint.ly hervorragend mit GitHub integriert, so dass ein Entwickler schon beim Einchecken von Code Kommandos mitgeben kann, beispielsweise um einen Task in Sprint.ly zu schließen – neben dieser Integration gibt es auch die Möglichkeit das Backlog über E-Mails zu pflegen. Der Prozess den Sprint.ly unterstützt ist agil, aber weder Scrum noch Kanban, sondern eine Mischung aus beidem. Mir persönlich gefällt der Ansatz sehr gut, aber ich denke er wird nicht für alle Projekttypen geeignet sein – hier muss man sicherlich selber mal ausprobieren. In einem späteren Blog Eintrag werde ich Sprint.ly auch noch einmal im Detail beleuchten.
Eine populäre Alternative zu Sprint.ly oder Jira ist PivotalTracker – damit habe ich allerdings keine praktischen Erfahrungen sammeln können.
Collaboration – 37signals Suite
Gerade in verteilten Teams ist es wichtig die Kollaboration zwischen den Team Mitgliedern zu fördern. 37signals (unter anderem auch die Erfinder von Ruby on Rails) hat hier einige Werkzeuge im Portfolio, die Maßstäbe bei Usability und Produktivität setzen und die in der 37signals Suite zusammengeführt werden. Die Suite bietet neben dem besseren Preis auch eine optimierte Pflege der Benutzer und Rechte an. Basecamp ist im Kern ein Task Management Werkzeug (To-Do Listen) für Teams, d.h. man kann für seine Projekte To-Do Listen pflegen und im Team Aufgaben (ver-)teilen. Dazu gibt es Kalender Funktionen, um Termine für Aufgaben zu pflegen und man kann sich über Nachrichten austauschen, sowie Datei verwalten. Wobei gerade für letzteres eigentlich Backpack das bessere Werkzeug ist – eine Art Intranet für Teams und Projekte. Gruppenkalender, Nachrichten, Content Management Funktionen und ein Dokumentenmanagement machen es zu einer Allzweckwaffe mit Social Media Funktionen. Abgerundet wird das Paket durch Campfire einen Echtzeit Chat für Teams, der keine Installation von Software benötigt, sondern komplett über einen Webbrowser funktioniert. Die Tools sind alle sehr gut miteinander integriert, bieten eine gute Benutzer- und Berechtigungsverwaltung und setzen bei der Bedienung Maßstäbe. Tastaturkürzel, hervorragende Mail Integration und offene APIs führen dazu, dass diese Werkzeuge kaum noch aus dem Alltag wegzudenken sind.
Continuous Integration – Cloudbees
Continuous Integration hat sich als wichtige Praktik in der Software Entwicklung etabliert. Jenkins hat sich hier neben vielen anderen CI Servern etabliert und wird auch bei uns gerade wegen seinen vielen Plugins eingesetzt. Cloudbees bietet Services an, der eine komplette CI Umgebung in der Cloud bereitstellt.
Die DEV Umgebung liefert einen Jenkins CI Server mit Services für Maven, Git und SVN – wobei natürlich auch GitHub integriert werden kann. Daneben liefert Cloudbees auch eine Laufzeitumgebung als Platform as a Service für Java Anwendungen inkl. Datenbank, um die gebauten Anwendungen auch direkt zu deployen und beispielsweise Testen zu können. Die CloudBees Plattform bietet ein paar technische Vorteile bei Skalierbarkeit/Elastizität und Verfügbarkeit, die jedes Unternehmen zu schätzen weiß, das schon einmal eine (oder eher viele) CI Umgebungen selber pflegen musste.
Eine Alternative ist Bamboo OnDemand von Atlassian, das insbesondere mit der guten Integration in die anderen Atlassian Produkte punktet und eine sehr gute Unterstützung für Amazon Web Services hat, um beispielsweise Test Server in der Amazon Cloud zu nutzen, um die Anwendung zu deployen. Dazu gibt es Ansätze für Continuous Deployment, die den klassischen Continuous Integration Ansatz erweitern um Funktionen für die Auslieferung von Software.
Testen – Saucelabs
Wie schon beim Thema CI beschrieben, ist es auch wichtig automatisierte Regressionstests auf Builds durchzuführen. Hierfür gibt es einen Reihe von automatisierten Testwerkzeugen wie das Robotframework oder JBehave . Gerade für Webanwendungen hat sich aber Selenium als Standard etabliert – die meisten Werkzeuge, wie beispielsweise das Robotframework nutzen für den Test von Web Anwendungen auch Selenium im Hintergrund. Saucelabs bietet eine Selenium Test Umbegung in der Cloud an. Saucelabs führt die Selenium Tests gegen den eigenen Build (z.B. in Cloudbees) aus und integriert sich dabei unter anderem in Jenkins. Die Vorteile von Saucelabs sind, dass die Tests sehr gut parallelisiert werden können (was bei vielen Tests wirklich zu einem großen Zeitgewinn werden kann), man verschiedenen Browser parallel testen kann und Saucelabs automatisch Videos von den Testläufen erstellt, um beispielsweise im Fehlerfall den Durchlauf in der Anwendung nachverfolgen zu können.
Entwicklungsserver – Amazon Web Services
Abschließend möchte ich noch Amazon Web Services erwähnen, die die Basis für viele der oben erwähnten Produkte sind. Amazon liefert eine Reihen von Werkzeugen und Services, die man in der Entwicklung sehr gut einsetzen kann. Über die AWS Management Console (siehe Screenshot) lassen sich die Cloud Services von Amazon konfigurieren und verwalten.
Über die Cloud Services von Amazon könnte man ganze Blog Serien schreiben, deshalb sei hier nur erwähnt, dass man Amazon AWS vielseitig in der Anwendungsentwicklung nutzen kann. Sei es um sich in der Amazon Elastic Compute Cloud Testrechner aufzubauen oder mit Amazon Elastic Beanstalk eine komplette auf Tomcat basierte Plattform für Java Anwendungen aus der Cloud zu beziehen, die sich von der Dimensionierung auch elastisch zur Laufzeit an die Anforderungen anpasst. Letztere integriert sich reibungslos als Server in die Eclipse Webtools und kann beispielsweise auch direkt eine relationale Datenbank über Amazon RDS einbinden.
Fazit
Der Artikel gibt einen Überblick über mögliche Tools für die Anwendungsentwicklung aus der Cloud. Die Möglichkeiten reichen von Projektmanagement Werkzeugen, über Team Collaboration bis hin zu CI Servern oder Test Tools und das aufsetzen eigener Dev-Infrastrukturen. Die Vorteile liegen auf der Hand: Keine eigenen Server und Administration, ein Preismodell das sich i.d.R. nach der Nutzung richtet und somit auch kleinen Unternehmen Zugriff auf die Werkzeuge ermöglicht, zudem i.d.R. gute Integration der Tools über offene Schnittstelle und moderne UIs, die einen Zugriff über das Internet ermöglichen.
Natürlich ist meine Übersicht nicht vollständig und ganze Kategorien, wie beispielsweise Application Performance Managament (AppDynamics oder New Relic ) oder Performance Testing (z.B. Keynote oder SOASTA ) als SAAS Lösungen wurden nicht betrachtet.
Wie sind Eure Erfahrungen mit diesen (oder anderen) Werkzeugen in der Cloud?
Weitere Beiträge
von Mirko Novakovic
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Mirko Novakovic
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.