Zum Inhalt springen
TypFreigeschaltet
PhaseProduktion
SchwierigkeitMittel
AufgabeAufgabe automatisieren
FürDevOps & Infra
ServicesCron
ServicesNotifications
Warum HoodyHTTP-nativ
TypFreigeschaltet
PhaseProduktion
SchwierigkeitMittel
AufgabeAufgabe automatisieren
FürDevOps & Infra
ServicesCron
ServicesNotifications
Warum HoodyHTTP-nativ
TypFreigeschaltet
PhaseProduktion
SchwierigkeitMittel
AufgabeAufgabe automatisieren
FürDevOps & Infra
ServicesCron
ServicesNotifications
Warum HoodyHTTP-nativ
TypFreigeschaltet
PhaseProduktion
SchwierigkeitMittel
AufgabeAufgabe automatisieren
FürDevOps & Infra
ServicesCron
ServicesNotifications
Warum HoodyHTTP-nativ
CRON · EXPIRES_AT · NOTIFICATIONS

Eine On-Call-Eskalation, die mit deiner Schicht abläuft

Poste am Montag einen Cron-Eintrag mit expires_at auf Freitag 09:00. Der Job pinged dein Telefon vier Tage lang alle 30 Minuten und löscht sich dann in dem Moment, in dem die Schicht endet. Der nächste On-Call postet seinen. Kein PagerDuty-Schedule, keine geteilte Scheduler-Config, keine Kalendererinnerung zum Deaktivieren.

Cron-Docs lesen

Wie die Schicht ohne Meeting übergibt

Drei Punkte in der Woche. Die Existenz des Cron-Eintrags spiegelt die Schicht exakt wider — kein Overlap, keine Lücke, keine übrig gebliebene crontab-Zeile.

Montag 09:00 → Freitag 09:01expires_at trägt die Schicht
MONTAG 09:00

Eintrag posten

Ein curl mit Schedule */30, command auf hoody-notifications/push/me, und expires_at = Freitag 09:00:00Z. Server gibt id e7d3 zurück.

MO–FR

Pings reiten dein Telefon

Vier Tage lang, alle 30 Minuten, läuft der Eintrag und pinged hoody-notifications. Nur dein Gerät. Der Team-Channel bleibt ruhig.

FREITAG 09:01

Eintrag entfernt sich selbst

Um 09:00:00Z löscht der Cron-Service e7d3. Der 09:30-Tick hat nichts zu feuern. Der nächste On-Call hat seinen schon gepostet.

Jeder On-Call schreibt einen POST, wenn seine Schicht beginnt. Das expires_at-Feld ist das gesamte Übergabeprotokoll — der Cron-Service erledigt das Aufräumen, auf die Sekunde genau.

Zwei curls — einer pro Schicht

Das ganze Rotationsprotokoll sind zwei HTTP-Calls pro Woche. Der On-Call postet am Montag, listet am Freitag, sieht, dass der Eintrag schon weg ist. Es gibt keine geteilte Schedule-Datei, in die man mergt.

monday.sh · m.dossantos
POST · entry
# monday 09:00 — i'm on call until friday 09:00
curl -X POST \
  https://oncall.containers.hoody.com/users/me/entries \
  -H "Content-Type: application/json" \
  -d '["schedule":"*/30 * * * *","command":"curl -fsS hoody-notifications/push/m.dossantos","comment":"on-call wk19","expires_at":"2026-05-08T09:00:00Z"]'

# response
HTTP/1.1 201 Created
{ "id":"e7d3", "expires_at":"2026-05-08T09:00:00Z", "enabled":true }
friday.sh · m.dossantos
GET · audit
# friday 09:01 — the next on-call took over
curl GET https://oncall.containers.hoody.com/users/me/entries

HTTP/1.1 200 OK
[
  // my entry e7d3 is gone — it expired
  // at 09:00 sharp. j.okafor's new
  // entry took over at 09:00:30.
]
# no slack thread, no calendar reminder

Kein geteilter Scheduler-Service ist beteiligt. Der Cron-Eintrag gehört dem Engineer; nichts am Setup des nächsten On-Calls hängt davon ab, dass der vorige aufgeräumt hat.

Drei Dinge, die diese Form aus deiner Woche entfernt

Ein On-Call-Eintrag, dem seine eigene Lebenszeit gehört, stoppt drei Klassen von Fehlern, die PagerDuty-Configs und Kalendererinnerungen nicht stoppen können.

ROUTING

Pings reiten ein Gerät — deins

Weil das command des Eintrags auf deinen persönlichen Notify-Endpoint zeigt, gehen Eskalationen für die Dauer deiner Schicht an dein Telefon, und nur das. Kein versehentlicher Team-Channel-Spam um 3 Uhr nachts.

OWNERSHIP

Keine geteilte Config zu editieren, kein PR zu mergen

Es gibt keine escalation_policy.yaml, die jeder anfasst. Jeder Engineer besitzt seinen Eintrag. Zwei On-Calls in verschiedenen Zeitzonen können nicht durch das Editieren derselben Datei in Konflikt geraten.

AUFRÄUMEN

Die Übergabe steckt in den Daten, nicht im Chat

Wenn am Freitag 09:00 die Schicht wechselt, fragst du nicht „Moment, krieg ich die noch?" Der Eintrag ist schon weg. Die Übergabe zu verifizieren ist ein GET, der eine Zeile weniger zurückgibt.

Was der Cron-Service garantiert

Zahlen kommen aus der Hoody Cron API. Echte Limits, keine erfundenen.

  1. EXPIRY-PRÄZISION1 Sek.

    Auto-Expiration läuft gegen die Systemuhr. Ein 09:00:00Z expires_at löscht innerhalb derselben Minute, in der der Cron-Tick feuert — kein 5-Minuten-Janitor-Lag.

  2. FELDER PRO SCHEDULE5

    Standard-5-Feld-Cron-Ausdrücke plus @hourly / @daily / @weekly Makros. */30 * * * * ist es, was während deiner Schicht alle 30 Minuten feuert.

  3. ISOLATION1 / User

    Jeder System-User hat seine eigene crontab. Der Eintrag des nächsten On-Calls lebt unter seinem eigenen /users/[name]/entries — nie deiner.

Limits laut Hoody Cron API: verwaltete Einträge sind JSON-CRUD mit UUIDs und expires_at; Raw-crontab-Zugriff pro User verfügbar; Per-User-crontab-Isolation ist eingebaut.

Wenn die Schicht endet, endet auch der Cron-Eintrag — automatisch.

vorher · die Rotationsdateinachher · zwei curls pro Woche
WIE DIE ALTE ÜBERGABE AUSSAHoncall.yaml editieren → PR → mergen → jemanden anpingen, damit er deaktiviertvier Menschen · eine geteilte Datei · trotzdem um 11 Uhr Freitag gepingt worden
WIE ES JETZT AUSSIEHTPOST /entries [ expires_at: '2026-05-08T09:00:00Z' ]ein Engineer · ein curl · der Cron-Service erledigt das Aufräumen
Cron-Docs lesen

Was das ersetzt

Die Standardtools, zu denen du greifst, wenn du On-Call-Rotationen willst. Jedes berechnet dir einen Service, ein Config-Repo und ein Übergaberitual. Ein Cron-Eintrag mit expires_at berechnet dir einen POST.

  • PagerDuty-EskalationsrichtlinienPro-Sitz-Pricing für das, was ein curl auf dein Telefon ist
  • Opsgenie-Schedule-RotationenEin ganzes Produkt, um herauszufinden, wer diese Woche gepingt wird
  • Custom-On-Call-Config-ReposGeteiltes YAML, das jeder per PR ändert und niemandem gehört
  • daran denken, Cron bei der Übergabe zu deaktivierenEine Kalendererinnerung, die du setzt, ignorierst und am Freitag verschickst
  • manuelles Eskalations-AufräumenSlack-Thread um 11 Uhr Freitag — „hey, kann mich jemand abmelden"
  • VictorOps-RotationenNoch ein Scheduler-Service für das, was ein expires_at-Feld erledigt

Hör auf, am Freitagmorgen crontab-Zeilen zu deaktivieren. Setz expires_at am Montag und vergiss es.

Cron-Docs lesen

Lies die anderen