Abenteuer mit Go und Vue.js

Der ein oder andere mag auf Twitter schon mitbekommen haben, dass ich mich wieder etwas vermehrt mit Go beschäftige. Irgendwie mag ich Go. Ich weiß auch nicht genau warum. Die Sprache fühlt sich sehr nach dem Kind von C und Ruby an. Ich mochte C damals sehr. Jedenfalls mehr als C++. Was aber auch vielleicht an der Objekt-Orientiertheit lag.

Jedenfalls habe ich jetzt ein kleines Sideproject gestartet. Mit Go und Vue.js. Was eigentlich eine super Kombination ist, da Go für das Backend zuständig ist und Vue für das Frontend. Ich mag z.B. auch Laravel sehr und auch das Micro Framework Lumen, jedoch finde ich es für viele Sachen einfach Overkill.

Und deswegen mag ich auch Go sehr, weil man extrem schnell kleine Programme, Services etc. schreiben kann, ohne viel overhead. Und der Vorteil an so einem Sideproject ist, dass man sich einfach mal mit einigen Themen auseinander setzt. Wie z.B. mit Go. Oder auch mit Vim. Da ich, wenn ich Go programmiere, vim benutze. Ich bin zwar ein großer Sublime Advokat, aber für Go finde ich Vim einfach deutlich angenehmer. Besonders das vim-go Plugin leistet tolle Arbeit mit auto fmt und shortcuts für go run, go build, go docs etc.

Sketches

Sideprojekt Backup Statistiken

Wir benutzen auf der Arbeit seit kurzem Backup, was ein sehr cooles Ruby Gem ist um Backups zu fahren. Man kann über eine DSL einfach seine Backup Models erstellen, unterstützt verschiedene Datenbanken, verschiedene Kompressionen, Verschlüsselung der Backups über OpenSSL oder GPG, verschiedene Storages und Syncers (S3, Rackspace, Dropbox, SCP etc.) Und hat dazu noch einige Notifier im petto, wie Email, Twitter, Slack, DataDog, Nagios, HTTP POST und einige anderen.

Wenn man nun sowas wie Nagios oder DataDog laufen hat, dann hat man ja Monitoring und Statistiken schon abgedeckt. Falls nicht, wäre es ja cool eine Übersicht der vergangenen Backups zu haben.

Die Integration

Die einfachste Version, ist einfach der kleine Go Service der läuft und eine einfache API hat um Backup Logs in einer sqlite zu speichern und abzurufen.

So kann man beim Backup Notifier einfach einen HTTP POST request an den Service schicken, mit Status des Backups (success, warning, failure), Start- und Endzeit, Duration und der Message.

Das Dashboard

Das Vue Frontend fragt dann die Daten ab und basierend auf der Message die idR den Model Namen beinhaltet, der sowas wie der Projektname ist, gruppiert es die Daten und erstellt einem schöne Karten pro Projekt mit Charts der letzten Backups.

So kann man auf einem Blick sehen, wie die Backups verlaufen sind und wo es Probleme gab. Zusätzlich könnte man noch Logs von z.B. S3 auswerten um Speicherauslastung und Kosten anzuzeigen.

Status

Das Go Backend läuft soweit. Ich bin jetzt noch dran das Frontend zu bauen. Wenn das fertig ist, wird nur noch ein Docker Image erstellt und dann auf GitHub geschmissen!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.