0
23. Februar 2017
DataOne Blog

Benötigt man wirklich ein Backup für seinen Online/Cloud-Dienste zur Versionsverwaltung?

Wie die Anbieter von On-Demand-Software zur kollaborativen Versionsverwaltung ihr Backup-Konzept gestalten, haben wir in einer kurzen Übersicht zusammengestellt. Oftmals sind diese Konzepte jedoch nicht ausreichend. Wir zeigen ergänzend dazu Wege auf, wie Sie diese Lösungen erweitern können.


Arten von Versionsverwaltung

Die Versionsverwaltung einer Software gehört nicht nur zum guten Ton während dem Softwareentwicklungszyklus einer Lösung, sondern sollten sowohl im professionellen wie auch im engagierten privaten Bereich, stets durchgeführt werden.
Im Laufe der Zeit wurde unterschiedliche Version Control Software veröffentlicht. Die aktuell bekanntesten und am weit verbreitetsten Systeme sind wohl Git und SVN. Eine schöne Zusammenstellung und ein Vergleich von weiteren Systemen findet man auf Wikipedia.
Viele Unternehmen setzten diese Systeme On-Premises ein, um ihre Entwicklungsabteilungen mit starken Anpassungen derer zu unterstützen oder einfach aus der Angst ihr Code ist sonst nirgendwo sicherer und zahlen dafür den Preis von hohen Einführungs-, Hardware- und Wartungskosten.
Manch andere „wagen“ den Schritt und setzten stattdessen einen Online/Cloud-Dienst hierfür ein. Die bekanntesten Plattformen (laut Alexa-Ranking) sind GitHub, Bitbucket, SourceForge, GitLab und gerade im Microsoft-Umfeld Microsoft Visual Studio Team Services. Auch hierzu ein guter Vergleich auf Wikipedia.

Datensicherungen der Online/Cloud-Anbieter

Nun kann man glauben, mit einem professionellen und international erfahrenen Online/Cloud-Anbieter sind die wichtigsten Themen abgedeckt, insbesondere das immer brisante Thema Datensicherung, da der Anbieter dafür schon Sorge trägt. Grundsätzlich verwalten die bekanntesten Anbieter ihre Systeme dahingehend recht gut, meist auch besser als man es selbst tun kann.
Dennoch sollte man sich die Datensicherungsstrategien einmal genauer anschauen. Hier einige Verweise dazu:

Hier wird klar, dass nicht alle Eventualitäten zur vollen Zufriedenheit abgedeckt sind. Folgende Fragen kommen auf:

Was passiert, wenn ein Benutzer ein Projekt (Repository) löscht?

Natürlich muss man dabei wirklich sehr ungeschickt sein und man könnte fast sogar denken: selbst schuld!
Im Fall der Fälle, hat man Beispielweise bei GitHub die Möglichkeit ein bestimmtes Repository über den Support wieder herstellen zu lassen, in welchem Zeitraum das passiert und ob Kosten anfallen, konnte wir nicht entnehmen.
Bitbucket und SourceForge hingegen weisen explizit darauf hin, dass die Wiederherstellung eines einzelnen Repository nicht möglich ist und man daher auf eigene Sicherungskonzepte zurückgreifen soll.

Was passiert, wenn ein Anbieter einen Fehler bei der Datensicherung macht?

GitLab war diesbezüglich erst vor kurzem in aller IT-Munde. Ein Administrator hatte versehentlich 300 GB an Kunden-Daten gelöscht. Oops, kann passieren 😉 Leider kam noch dazu, dass der Datensicherungsmechanismus nicht gegriffen hat (peinlich!). Hier ein Artikel von t3n dazu.
Ob wirklich alle Daten wiederhergestellt werden können, ist wie bei GitLab äußerst fraglich. Des Weiteren muss man damit rechnen, dass nur ein älterer Stand des Quellcodes zur Verfügung steht, falls die Entwicklungen an der Software gerade mit Hochtouren durchgeführt werden.

Was passiert, wenn ein Anbieter seinen Dienst abschaltet, z.B. in Falle einer Insolvenz?

In dem Fall hilft meist nur schnelles Handeln und sich dann darüber Gedanken machen, alle relevanten Daten abzuziehen. Besser wäre es das Thema vorzeitig zu klären, um nicht in Panik zu geraten.

Fazit

Ob die Datensicherungsmechanismen der Anbieter ausreichend sind, muss jeder für sich selbst entscheiden. Wir finden diese nicht ausreichend und sind dabei auch nicht die einzigen. Man findet im Internet bereits mehrere Lösungen, die dieses Thema angehen. Die Lösungen sind entweder prototypenhafte Implementierungen privater Natur, reichen aber auch bis zu professionellen Diensten, wie beispielsweise BackHub. Uns hat keine Lösung wirklich zugesagt, deshalb haben wir vor einiger Zeit selbst eine einfache Lösung geschrieben, die eine Datensicherung für unseren Online/Cloud-Anbieter schafft.

BitUp

BitUp ist vorerst speziell für den Online-Dienst zur Versionsverwaltung von Altassian Bitbucket geschrieben. Eine Datensicherung kann auch nur für die Version Control Software Git durchgeführt werden.
Es handelt sich um eine Konsolen-Anwendung die in .NET C# geschrieben ist. Das .NET Framework ist somit Voraussetzung.
Das Datensicherungsziel kann entweder ein lokales Laufwerk sein, wo BitUp mittels einem Windows Task automatisiert gestartet wird oder die Ausführung kann in Azure erfolgen. In Azure kann die Ausführung von BitUp mittels einem Azure Web Job verwaltet werden. Das Datensicherungsziel ist hierbei Azure Files.
BitUp zieht grundsätzlich immer alle Repositories eines Bitbucket Teams ab. Das bedeutet es können keine einzeln ausgeschlossen werden. Ein Respository wird allerdings nur gesichert, wenn es entweder neu oder eine Änderung seit der letzten Sicherung erfolgt ist.

Ein Repository wird auf dem Datensicherungsziel in einer ZIP-Datei abgelegt. Die ZIP-Datei beinhaltet folgende Bestandteile des Repository:

• Quellcode
• Wikis
• Issues

Um Git Commands in C# auszuführen, wurde die Open Source Library libgit2sharp verwendet.

Das Projekt ist Open Source (MIT Lizenz) und darf somit beliebig verwendet und umgestaltet werden oder zur Inspiration dienen. Danke noch an dieser Stelle an unseren Kollegen Oliver, der die Implementierung durchgeführt hat.
Weitere Informationen zu BitUp sind dem Open Source Bereich von Data One auf GitHub zu entnehmen.

Die Anwendung ist eine unserer Lösungen, die wir im Kontext unserer Verwendung von Atlassian-Produkten angefertigt haben und Ihnen kostenlos zur Verfügung stellen. Im Laufe der Zeit werden wir ergänzend Lösungen für diesen Bereich veröffentlichen und somit unsere Atlassian-Tools-Suite erweitern.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.