今日已更新 152 条资讯 | 累计 38845 条内容
关于我们

Warum ich jede fremde Schnittstelle behandle, als würde sie mich verraten wollen

Sergey Shinder 2026年09月03日 02:21 1 次阅读 来源:Dev.to

Die meisten schwerwiegenden Vorfälle, die ich erlebt habe, kamen nicht aus dem eigenen Code. Sie kamen von der Grenze, an der mein System mit einem fremden gesprochen hat. Eine API, die plötzlich langsamer antwortete. Ein Feld, das eines Tages null war, obwohl es das nie sein durfte. Eine Antwort, die kein JSON mehr war, sondern eine HTML-Fehlerseite eines Proxys dazwischen. Aus diesen Erfahrungen ist eine Grundhaltung geworden, die vielleicht misstrauisch klingt, aber pragmatisch gemeint ist: Ich vertraue keiner Schnittstelle, die nicht mir gehört. Und ehrlich gesagt vertraue ich auch den eigenen nur bedingt. Das heißt nicht, dass ich von schlechter Absicht ausgehe. Es heißt, dass ich davon ausgehe, dass alles, was schiefgehen kann, irgendwann schiefgeht, und dass es genau dann passiert, wenn es am schlechtesten passt. Ganz konkret bedeutet das ein paar unverhandelbare Punkte. Jeder ausgehende Aufruf hat ein Timeout. Immer. Ein Aufruf ohne Timeout ist ein Aufruf, der mein ganzes System zum Stillstand bringen kann, weil ein Thread ewig auf jemanden wartet, der nie antwortet. Jede Antwort wird geprüft, bevor ich ihr glaube. Ich lese nicht einfach ein Feld aus, ich frage erst, ob es da ist und ob es sinnvoll ist. Und für Ausfälle des Gegenübers habe ich einen bewussten Plan, sei es ein Wiederholungsversuch mit Verzögerung, ein Fallback oder ein sauberer Fehler nach oben. Was mir am meisten Ruhe gebracht hat, ist die Idee des Circuit Breakers. Wenn ein fremder Dienst offensichtlich am Boden liegt, hört mein System auf, ihn immer wieder anzurufen. Es wartet, gibt ihm Zeit, sich zu erholen, und schützt sich selbst davor, im Warten zu ertrinken. Ein sturer Retry gegen ein totes System macht die Sache für alle nur schlimmer. Integration ordentlich zu machen heißt nicht, Fehler zu verhindern. Das kann ich nicht, denn die andere Seite gehört mir nicht. Es heißt, dafür zu sorgen, dass der Fehler des anderen nicht automatisch mein Fehler wird. Die Grenze zwischen zwei Systemen

本文内容来源于互联网,版权归原作者所有
查看原文