Tägliche Notiz: Debugging eines Produktions-API-Workflows
Integrationstest grün, Staging grün, Produktion schlägt bei 1 % der Anrufer fehl. Der Fehler war an einem Ort, den ich nie vermutet hätte.
Heute war so ein Tag.
Die API gibt im Staging 200 zurück, 500 für ~1% des Produktionsverkehrs. CloudWatch zeigt, dass die Lambda nach 29,9s aussteigt. Jeder Integrationstest grün. Jeder Lasttest grün.
Habe zwei Stunden damit verbracht, die Datenbank zu beschuldigen. Es war nicht die Datenbank.
Es stellte sich heraus: Eine unserer upstream SaaS-Integrationen begann, Antworten mit einem spezifischen Header zurückzugeben, auf den unser HTTP-Client stillschweigend erneut versuchte. Drei Versuche × 10s Backoff = 30s = Lambda-Timeout. Die 1% waren die Teilmenge von Kunden, deren Daten zufällig über einen bestimmten Vendor-Edge geleitet wurden.
# vorher
session = requests.Session()
session.mount("https://", HTTPAdapter(max_retries=Retry(total=3, backoff_factor=1)))
# nachher
session = requests.Session()
session.mount("https://", HTTPAdapter(max_retries=Retry(
total=3,
backoff_factor=1,
respect_retry_after_header=False, # der Vendor lügt
allowed_methods=frozenset(["GET"]), # niemals POSTs erneut versuchen
)))
Lehre, die ich immer wieder lerne: Retry-Strategien sind eine Systemgrenze. Standardwerte sind fast immer falsch für dein System.
Gehe mit Kopfschmerzen, aber einem grünen Dashboard ins Bett.
Verwandt
Weiterlesen
Tägliche Notiz: Den ersten Blogbeitrag von meinem Handy aus veröffentlichen
Der Meta-Post. Ich habe diesen Blog ins Leben gerufen und diesen Beitrag vom Sofa aus auf meinem Handy geschrieben. Quick Note funktioniert.
Tägliche Notiz: TIL — Polly SSML <mark> Tags
Polly's SSML <mark>-Tags geben Timing-Events über den Stream aus. Nützlich, um Bildschirmunterschriften mit der Sprachwiedergabe zu synchronisieren.
Was ich beim Entwerfen von Omnichannel-Backend-Integrationen gelernt habe
Geteiltes Intent-Schema, letztlich konsistenter Gesprächszustand und warum der Kanal das Letzte sein sollte, was dein Backend darüber weiß.
Weiter geht's
Wohin als Nächstes?
Stöbere durch weitere technische Texte, sieh dir die Engineering Case Studies an oder melde dich direkt.