Warum brauche ich einen Rails und PHP Error Tracking Service?

Du solltest wissen, wenn deine Applikation nicht richtig funktioniert

Ohne Error Tracking weißt du einfach nicht, wenn etwas in deiner Applikation schief läuft. Klar, du kannst deine Log-Dateien die ganze Zeit über durchsuchen. Aber wer tut das? Und wer will das? Wenn Fehler auftauchen, kannst du nicht schnell genug davon erfahren.

Exceptiontrap wird dich in Echtzeit über den Fehler informieren und dir die wichtigsten Daten zeigen. Also in welchem Kontext der Fehler aufgetreten ist, den Stacktrace, die Request- und Umgebungsvariablen, usw.

Automatisierte Tests sind gut, aber nicht genug — du brauchst beides

Automatisierte Tests schützen dich vor einem Großteil der Fehler und sind unersetzbar. Aber Tests und Error Tracking stehen nicht im Wettbewerb, sondern müssen zusammen genutzt werden. Es wird immer Dinge geben, an die du bei der Implementierung nicht gedacht hast. Durch getrackte Fehler wird deine Test-Suite mit Sicherheit wachsen.

Zusätzlich sind die Chancen sehr hoch, dass deine Entwicklungs- oder Staging-Umgebung nicht 100% identisch mit der Production-Umgebung sind. Und wenn wir von Ruby on Rails, dem Zend Framework und weiteren Frameworks sprechen, ist dir vermutlich aufgefallen, dass die Test-Umgebung von der Production-Umgebung abweicht.

Was kann sonst noch schief gehen?

Lassen wir mal die Dinge und Bugs im Code beiseite, an die du nicht gedacht hast – also wofür noch keine Tests existieren. Ein paar zusätzliche Fehlerquellen:

  • Das Verhalten deiner Applikation unter Last (Deadlocks, Threading Probleme, Timeouts bei Datenbankabfragen, ...).
  • Z.B. das Verhalten deiner Produktiv-Datenbank. Vielleicht sortiert sie die Datensätze anders oder führt die Abfragen in einer anderen Reihenfolge aus.
  • The externe API, die du nutzt ist nicht erreichbar oder wurde verändert.
  • Der memcached, Redis, MongoDB, "Ein-Dienst-Deiner-Wahl" fällt zeitweise aus.
  • Der Mailserver ist gerade überlastet oder etwas mit der Verbindung stimmt nicht.

Ein paar Exceptions aus der Praxis

  • NoMethodError - undefined method 'fetch_data' for #<NotificationWorker:0x007f9d958867d0>
  • Dalli::RingError - No server available
  • ActionView::Template::Error - undefined method 'city_name' for nil:NilClass
  • ActionView::Template::Error - PG::UndefinedColumn: ERROR: column users.full_name does not exist
  • Timeout::Error - execution expired
  • Net::SMTPAuthenticationError - 454 Temporary authentication failure
  • JSON::ParserError - 795: unexpected token at '...'
  • Zend_Controller_Action_Exception - Action "show" does not exist and was not trapped in __call()
  • Doctrine_Connection_Mysql_Exception - SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

Die Liste könnte unendlich weiter gehen. Selbst wenn du vergisst eine Datei ins Repository einzuchecken oder die Datenbankmigration nicht ausführst, sollest du sofort Feedback dafür bekommen. Oder willst du dich nach ein paar Stunden lieber wundern, warum sich auf einmal keine neuen Benutzer mehr anmelden?

Warum solltest du Exceptiontrap nutzen?

Exceptiontrap wird dir helfen

  • Immer über Fehler Bescheid zu wissen — in Echtzeit.
  • Die relevanten Informationen sofort zur Hand zu haben.
  • Die Fehler und Bugs so schnell wie möglich zu beheben.
  • Zu wissen, ob ein Fehler schon einmal aufgetreten ist, und wie oft.
  • Mit deinem Team effektiv über die Fehler zu kommunizieren.

Du wirst wissen, dass keine Fehler auftreten und dich besser fühlen

Du musst nicht mehr deine Log-Dateien durchsuchen oder kurz den Error Output aktivieren (bitte nie machen). Du weißt, wenn es Fehler gibt und du weißt, wenn es keine Fehler gibt.

Deine Applikation braucht also einen Error Tracker

Spare dir unzählige Stunden bei der Fehlersuche oder die Ungewissheit, ob alles richtig funktioniert. Starte jetzt.