Schnittstellen, entworfen für ihre Nutzer
REST oder GraphQL, gewählt nach den Clients, die sie nutzen werden, und nicht nach Vorliebe. Einheitliche Fehlerbehandlung mit korrekten Statuscodes, Seitenweise Abfrage, die auch bei großen Mengen trägt, und Versionierung, bevor Sie sie brauchen — denn sie nachzurüsten, während Clients live sind, ist schmerzhaft.
Datenmodelle, die die nächste Funktion überleben
Schemaentwurf mit Blick auf die Abfragen, die Sie tatsächlich ausführen werden, passende Indizierung und umkehrbare Migrationen. Wir setzen relationale, dokumentenorientierte oder Graphdatenbanken nach der Form der Daten ein statt aus Gewohnheit.
Anmeldung und Berechtigung, getrennt gehalten
Sitzungs- oder Token-Anmeldung nach aktuellem Stand und ein Berechtigungsmodell, das bei jeder Anfrage auf dem Server geprüft wird. Zu verwechseln, wer jemand ist, mit dem, was er darf, gehört zu den häufigsten Ursachen für Fehler in der Zugriffskontrolle.
Anbindungen, die laut scheitern
Verbindungen zu Dritten mit Wiederholungen, Wartezeiten, Idempotenz und einer Behandlung unzustellbarer Nachrichten, dazu Alarmierung, sobald etwas stehen bleibt. Eine fehlgeschlagene Anbindung sollte jemanden wecken und sich nicht still ansammeln.
Hintergrundarbeit und Zeitsteuerung
Warteschlangen für alles Langsame, Unzuverlässige oder Stoßweise — Importe, Exporte, Dokumenterzeugung, Benachrichtigungen — damit eine Nutzeranfrage nie auf einen Dritten wartet.
Beobachtbarkeit ab dem ersten Deployment
Strukturierte Protokollierung, Zustandsprüfungen und Messwerte auf den Pfaden, die zählen. Eine Störung im Echtbetrieb zu diagnostizieren, sollte eine Abfrage sein und keine Ausgrabung.