Donnerstag, 30. Januar 2020

Git house keeping

Über die Entwicklungszeit eines Projektes sammeln sich im Git viele Feature Branches, die man oft vergisst wegzuräumen. So geht es:

Löschen von lokalen Branches:

  1. git checkout master
  2. git branch -l | grep --color=never -v master | xargs git branch -D


Löschen von remote Branches:


    1. git branch -r | grep --color=never -v master | xargs git push origin --delete



    Mittwoch, 22. Januar 2020

    Kurz und Gut: Software Metriken

    Metriken helfen den Zustand von laufender Software zu überwachen (Monitoring) und Fehler frühzeitig zu erkennen. Das passiert dann mittels Alerts, die meist auf Metriken aufsetzen. Man kann in der Regel drei grundsätzlichen Arten von Metriken unterscheiden:
    1. Counter
    2. Meter bzw. Histogramm
    3. Gauge
    Aber wo ist der der Unterschied zwischen den Metrik Typen? 

    Hier ein Real Word Beispiel:
    Ein Gauge gibt an wie hoch der Wasserstand in deiner Badewanne ist.
    Ein Counter dagegen gibt an, wie oft jemand mit einem Eimer Wasser die Badewanne befüllt.

    Hier jetzt das Software Beispiel:
    Ein Gauge gibt an wie viele Einträge in deiner Datenbank sind.
    Ein Counter gibt an wie viele Elemente hinzugefügt wurden.


    • Gauges:
      • Benutzter Speicherplatz (RAM, Heap, Disk, ...)
      • CPU Usage
      • Anzahl von Einträgen in einer Datenbanktabelle
      • Load
    • Counter:
      • Requests
      • Laufzeit
      • Fehler
      • Transaktionen
      • Logzeilen 


    Kurz gesagt:
    Ein Gauge zeigt einen Zustand an, ein Counter zählt Events.

    Ich empfehle die Benutzung von Countern und Gauges.

    Warum ich den dritten Metriktyp Meter und Histogramm nicht empfehle.

    Meter neigen dazu zu lügen, oft werden die zusätzlichen Informationen nicht gebraucht und sie erhöhen den Aufwand. 
    Das Hauptproblem ist aber das die oft wenigen Daten die in einem Metrikpunkt akkumuliert werden. Sie erzeugen bei den verwendeten Aggregationen wie in Histogramm und Meter ein falsches Bild von den Daten. Ein ist Quantilberechnung über 5 Werte ist 95% Sinn frei.

    Zusammenfassung 

    1. KISS: Keep it simple an stupid - eine Metrik ist nur ein Float Wert und ein Name. So sollte auch der Code aussehen.
    2. Benutzt Counter und Gauge, je nach Anwendungskontext.
    3. Vermeidet die Metrik-Typen  Meter und Histogramm, es sei denn ihr wisst genau was ihr tut.
    4. Metriken helfen den Zustand von laufender Software zu überwachen und Fehler frühzeitig zu erkennen.
    5. Metriken ersetzen kein Logging.
    6. Metriken sind nicht mit Observability zu verwechseln.