Contract Drift
Ein Spec-Diff sagt Ihnen, dass etwas kaputtgegangen ist. Er kann Ihnen nicht sagen, wer dadurch kaputtgeht.
Jedes Breaking-Change-Tool vergleicht zwei Versionen eines Dokuments. Das ist die leichte Hälfte. Die Frage, die Sie am Morgen eines Releases tatsächlich haben, ist, welcher Ihrer Services kurz davor steht umzufallen, und ein Spec-Diff hat keine Ahnung.
Ein Feld, eine Woche
-
Dienstag
Ein Feld wird optional
Ein Agent verschärft einen Handler, und das Response-Schema verliert ein Feld, das schon immer da war. Der Pull Request ist grün. Die Änderung ist isoliert betrachtet korrekt.
-
Dienstag
Die Spec wird versioniert, nicht nur diffed
Das veröffentlichte Dokument wird als Snapshot mit einem Digest erfasst, seine Elemente extrahiert und gegen die Baseline verglichen. Der Vergleich beantwortet kompatibel oder nicht und benennt jede Änderung, die dazu geführt hat.
-
Dienstag
Der Graph sagt, wen es betrifft
Drei Services deklarieren eine Abhängigkeit von dem Service, der diesen Contract veröffentlicht. Das ist keine Vermutung aus einem Spec-Diff. Es wird aus ihren eigenen Manifesten gelesen.
-
Freitag
Was stattdessen früher passierte
Das Mobile-Team erfährt es im Staging, oder ein Kunde erfährt es in der Produktion, und jemand verbringt den Nachmittag damit, herauszufinden, welches Release es verursacht hat.
Der Eintrag
Was eine Änderung trägt
Ein Vergleich beantwortet, ob die beiden Versionen kompatibel sind, und jede Änderung darin ist ein Eintrag, auf den Sie reagieren können, statt einer Zeile Prosa.
- classification
- Um welche Art von Änderung es sich handelt, damit ein Rename und eine Entfernung nicht als dasselbe Ereignis abgelegt werden.
- severity
- Wie sehr es zählt, getragen von der Änderung selbst, statt später von demjenigen abgeleitet, der sie liest.
- summary
- Was sich verschoben hat, in einer Zeile, damit ein Reviewer nicht zwei Dokumente mit dem Auge diffen muss.
- before / after element
- Das exakte Element auf jeder Seite. Eine Änderung muss etwas benennen, das sie betrifft, sonst wird sie nicht erfasst.
- confidence
- Zwischen 0 und 1. Unsicherheit wird benannt, statt weggerundet zu werden.
- evidence
- Die Quelle und die Revision hinter dem Befund, damit er überprüft statt geglaubt werden kann.
Die Schnittstelle
Der Vertrag weiß, was sich geändert hat. Der Graph weiß, wer davon abhängt.
Keine der beiden Hälften ist für sich genommen ungewöhnlich. Beide in einem Datensatz zu vereinen, ist der Teil, der die Frage beantwortet, die Sie tatsächlich haben.
Die veröffentlichte Schnittstelle
Mit einem Digest und einer Revision erfasst, ihre Elemente extrahiert und mit der vorherigen Version verglichen.
In einem Graphen verbunden
Unter einem Geltungsbereich, in einer einzigen begrenzten Abfrage durchquerbar
Die Dienste, die sie nutzen
Gelesen aus den Manifesten, die diese Repositories veröffentlichen, mit der Datei hinter jeder Kante im Datensatz.
Wo Sie ihr begegnen
Im Review, bei der Änderung, die sie verursacht hat
Ein Befund zu einer veröffentlichten Schnittstelle wird danach gewichtet, was laut Graph von ihr abhängt. Ein Bruch an einem Vertrag, den drei Dienste nutzen, ist nicht derselbe Befund wie einer an einem internen Helper.
In Ihrem Assistenten, bevor die Änderung geschrieben wird
Verträge sind eine der Quellen, aus denen ein Kontextpaket schöpft. Fragt ein Agent, was eine Änderung berührt, erhält er die Schnittstelle und ihre Nutzer zusammen mit dem Code.
Setzen Sie Ihr System auf den Eintrag
Betreiben Sie den Open Core auf Ihrer eigenen Infrastruktur oder starten Sie im gehosteten Workspace. Der Graph ist in beiden Fällen portabel.