Wir haben auf Proxer ja bekanntlich unsere Proxer-Streams. Wir können so unserer Community viele Werke in HD anbieten, ohne Werbeeinblendung, ohne Trafficlimitierung und ohne irgendwelche Nachteile. Es passiert aber, dass uns ab und zu eine Festplatte kaputt geht. Das ist normal, Festplatten gehen nach intensiver Nutzung nunmal nach ein paar Jahren kaputt. Das ist grundsätzlich gar nichts schlimmes, wenn man Backups hat. Wenn. Und da liegt das Problem: Wir haben auf Proxer bislang unsere Streams nicht gebackupped. Der Grund war einfach, dass solch eine Backuplösung für große Mengen an Daten relativ teuer ist. Wir haben ein wenig Mittel in die Hand genommen und unsere Backup Infrastruktur erweitert.
Zum Backuppen von Streams ist sehr viel Speicher nötig. Im Falle von Proxer wissen wir nicht einmal die genaue Menge der Daten, weil sie so verstreut. Aber schätzungsweise liegt die Menge bei 15-20 TB Daten. Auf der Suche nach dem günstigsten Speicher vergleicht man natürlich erst einmal die verschiedenen Anbieter. Schauen wir uns mal Amazon an.
Für 15TB ergibt das im EFS File System Backup 900$ im Warm Storage und 180$ im Cold Storage. Im Besten Falle sind wir hier also bei 180$. Für Proxer Verhältnisse ist das viel Geld, das kommt für uns nicht in Frage. Schauen wir mal weiter bei Hetzner. Bei Hetzner gibt es die Storage Boxes, die eine kostengünstige Speicherlösung darstellen. Auch ohne Linux-Kenntnisse kann man sie sehr gut nutzen. Sie unterstützen nützliche Tools wie Rsync, SSH und SFTP.
Hier kommen wir im Best Case auf etwa 70€. Das ist deutlich besser als bei Amazon. Aber gibt es vielleicht bessere Alternativen? Auf Worldstream kann man weitere Festplatten zu seinen bestehenden Server hinzubuchen.
Hier kostet eine 16 TB HDD Festplatte 45€ pro Monat. Ich habe mich schlussendlich auch für diese Lösung entschieden und für einen meiner vorhandenen Server eine Festplatte dazu gebucht.
Nun kommen wir zur Software. Die Software zum Backuppen ist nicht so krass kompliziert. Wichtig ist hierbei, dass die Backup-Infrastruktur von der Stream-Infrastruktur abgekapselt ist. Alle Anfragen werden ausschließlich vom Backup-Server initiiert, sodass von außen keine Anfragen an den Backup-Server getätigt werden können. Falls die Stream-Infrastruktur Schaden annimmt oder unerwünschter Zugriff passiert ist, so gibt es keine Möglichkeit vom Streamserver auf den Backupserver zuzugreifen. Das Sequenzdiagramm sieht vereinfacht folgendermaßen aus.
Der cron job startet 1x pro Tag den Backup-Prozess. Es wird eine Liste der (neuesten) Episoden von der Stream-Datenbank bezogen. Diese werden in einer Schleife durchlaufen. Jede Episode wird heruntergeladen und es findet anschließend eine Prüfung ob die Datei wirklich richtig heruntergeladen wurde, statt. Falls die Datei nicht richtig heruntergeladen wurde, wird der Eintrag geloggt, und es muss manuell geprüft werden, was an der Datei falsch lief.
Auf der Stream-DB habe ich eine Art „Middleware“ entwickelt, der minimale Schnittstellen und Authentifizierung für den Backup-Server bietet. Diese Schnittstelle werde ich zukünftig erweitern, sodass nicht nur ein Backup-Prozess möglich ist, sondern auch ein Restore-Prozess. Das heißt, dass die Daten wiederhergestellt werden können, falls irgendwas schief gegangen ist.
Nun laufen die Backups seit ein paar Stunden. Zum ersten Mal liegen alle Stream-Dateien in einem zentralen Verzeichnis. Ich werde die Gelegenheit nutzen, fehlerhafte Dateien zu identifizieren, ein Verzeichnis daraus zu machen und diese mit unserem Anime-Team zu teilen, damit die Fehlerhaften Dateien korrigiert werden können. Ich weiß nicht, ob ich im nächsten Teil darüber berichten werde, aber mal schauen!