Eine Produktseite behauptet, es gebe eine API, und das Integrationsmeeting hängt an der zweiten Frage. Welche Operation, auf welchem Objekt, von wem aufgerufen, und was gilt als Erfolg? Wer diese vier Fragen beantwortet, bevor er Produkte vergleicht, eliminiert meist die Hälfte der Kandidaten. Außerdem wird der verbleibende Vergleich zu etwas, das ein Test entscheiden kann.

Ersetzen Sie die Aussage, es gebe eine API, durch eine Operation

Eine API ist ein Transportweg, keine Fähigkeit. Ein REST-Endpunkt, ein lokaler Socket und ein Kommandozeilen-Wrapper können alle API heißen, bieten aber keine gleichwertigen Operationen.

Schreiben Sie die Operation als Satz auf, bevor Sie die Dokumentation öffnen.

Eine lokale Verbindung zu starten ist eine clientseitige Aktion mit einem Benutzer davor. Ein Geräteprofil auszugeben ist eine Bereitstellungsaktion mit einem Inventar dahinter. Den Zugang eines Benutzers zu sperren ist eine administrative Aktion mit einem Prüfpfad. Diese drei leben meist in verschiedenen Komponenten, gehören verschiedenen Teams und haben unterschiedliche Befugnisse.

Vier Felder machen den Vertrag prüfbar

Füllen Sie für jede Operation vier Felder aus: das Objekt, die Aktion, den Aufrufer und die Erfolgsbedingung. Ein Vertrag mit einem fehlenden Feld ist ein Wunsch.

Die Tabelle ist das ganze Arbeitsblatt:

FieldQuestionExample
ObjectWhat is being acted on?One enrolled device
ActionObserve, create, change, start, stop, or revoke?Revoke
CallerWhich identity calls it?Deployment service
SuccessWhat observable state proves it?Future sign-in denied

Die Erfolgsbedingung ist das Feld, das alle überspringen, und es entscheidet, ob die Integration funktioniert. Eine gespeicherte Einstellung ist kein aktiver Tunnel, und ein deaktiviertes Konto ist keine beendete Sitzung.

Wenn zwei Operationen verschiedene Aufrufer brauchen, sind es zwei Integrationen. Sie in einem Dienstkonto zu bündeln bedeutet meist, mehr Befugnisse zu vergeben, als eine der beiden braucht.

Ordnen Sie die Schnittstelle ihrer tatsächlichen Schicht zu

Die Community-Management-Schnittstelle von OpenVPN spricht über TCP oder einen Unix-Socket mit einem Daemon. Ihre Befehle umfassen Zustandsbeobachtungen und Daemon-Signale.

Damit ist sie ein Steuerkanal für den Daemon, keine gehostete Abo-API und kein Benutzerregistrierungsdienst. Wer die Dokumentation sorgfältig liest, baut nicht gegen eine Schicht, die das Objekt nicht besitzt.

Dieselbe Dokumentation sagt, dass das Protokoll keine eigene Verschlüsselung mitbringt. Wer den Socket erreichen kann, kann den Daemon steuern; behandeln Sie ihn daher als sensible Steuerung, nicht als Metrik-Feed. Binden Sie ihn an Loopback oder einen Unix-Socket und legen Sie ihn hinter eine eingeschränkte Regelung, wenn ein entfernter Aufrufer ihn braucht. Ihn zur Bequemlichkeit ins Internet zu stellen macht aus einem Steuerkanal einen Vorfall.

Legen Sie das Verhalten nach dem Aufruf fest

Annahme ist nicht Abschluss. Der Daemon kann zurückkehren, bevor der Tunnel steht; warten Sie daher auf das dokumentierte Abschluss- oder Fehlerereignis und verknüpfen Sie es mit der gesendeten Anfrage.

Legen Sie fest, was der Aufrufer tut, wenn die Antwort verloren geht. Ein Anlegen oder Wiederverbinden blind zu wiederholen ist nicht dasselbe wie zu prüfen, ob die erste Anfrage schon gewirkt hat.

Zugriffsentzug sind mindestens drei verschiedene Aktionen: künftige Anmeldung blockieren, eine laufende Sitzung beenden und den Nachweis widerrufen. Verlangen Sie die, die die Richtlinie wirklich fordert, und sagen Sie im Vertrag, welche welche ist. Bezeichnen Sie eine erfolgreiche Kontenaktualisierung nicht ohne Beleg als vollständigen Widerruf. Der Unterschied zählt während eines Vorfalls, wenn die Uhr läuft.

Prüfen Sie den Vertrag mit einem Piloten

Ein kleiner genehmigter Pilot sollte Erfolg, Ablehnung, Unterbrechung und Wiederholung abdecken, gefolgt von der Anwendungsoperation, die erlaubt oder verweigert werden soll.

Für eine Schnittstelle auf Daemon-Ebene üben zwei Befehle Beobachtung und ein Signal aus:

echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505

Gewähren Sie nur die Befugnis, die die Operation braucht. Halten Sie Geheimnisse aus Routineprotokollen heraus und protokollieren Sie genug private Details, um zu sagen, welches Ziel betroffen war und wie es endete.

Schreiben Sie den Wiederherstellungspfad für den Fall auf, dass die Steuer-API selbst ausgefallen ist. Wählen Sie die Schnittstelle, die das Objekt und seinen Lebenszyklus besitzt; Automatisierungsversprechen auf einer Produktseite sind kein Ersatz.

Ähnliche Artikel