Stránka produktu tvrdí, že má API, a integračné stretnutie sa zasekne na druhej otázke. Ktorá operácia, na ktorom objekte, kým volaná a čo sa považuje za úspech? Odpoveď na tieto štyri otázky pred porovnaním produktov zvyčajne odstráni polovicu kandidátov. Premení aj zvyšné porovnanie na niečo, čo dokáže rozhodnúť test.

Nahraďte „má API“ jednou operáciou

API je transport, nie schopnosť. Koncový bod REST, lokálny socket a obal príkazového riadka sa všetky môžu nazývať API a neponúkajú rovnocenné operácie.

Napíšte operáciu ako vetu, skôr než sa pozriete do dokumentácie.

Spustenie lokálneho pripojenia je akcia na strane klienta s používateľom pred ňou. Vydanie profilu zariadenia je prípravná akcia s inventárom za ňou. Vypnutie prístupu používateľa je administratívna akcia s auditnou stopou. Tieto tri zvyčajne žijú v rôznych komponentoch, patria rôznym tímom a majú rôzne oprávnenia.

Štyri polia, ktoré robia kontrakt testovateľným

Vyplňte štyri polia pre každú operáciu: objekt, akciu, volajúceho a podmienku úspechu. Kontrakt s chýbajúcim poľom je želanie.

Tabuľka je celý pracovný list:

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

Podmienka úspechu je pole, ktoré ľudia preskakujú, a práve ona rozhoduje, či integrácia funguje. Uložené nastavenie nie je aktívny tunel a vypnutý účet nie je ukončená relácia.

Ak dve operácie potrebujú rôznych volajúcich, sú to dve integrácie. Zlúčenie do jedného servisného účtu zvyčajne znamená pridelenie väčších oprávnení, než potrebuje ktorákoľvek z nich.

Zlaďte rozhranie s vrstvou, ktorej skutočne patrí

Komunitné rozhranie správy OpenVPN komunikuje s démonom cez TCP alebo Unix socket. Jeho príkazy zahŕňajú pozorovanie stavu a signály démonovi.

To z neho robí riadiaci kanál démona, nie hostované predplatné API ani službu registrácie používateľov. Starostlivé čítanie jeho dokumentácie vás ušetrí stavania na vrstve, ktorá objekt nevlastní.

Tá dokumentácia tiež hovorí, že protokol nemá vlastné šifrovanie. Kto sa dostane k socketu, môže ovládať démona, preto ho berte ako citlivé riadenie, nie ako tok metrík. Pripevnite ho k loopbacku alebo Unix socketu a umiestnite ho za obmedzené usporiadanie, ak ho vzdialený volajúci potrebuje. Vystavenie internetu pre pohodlie premení riadiaci kanál na incident.

Určite správanie po volaní

Prijatie nie je to isté ako dokončenie. Démon môže odpovedať skôr, než tunel vstane, preto čakajte na dokumentovanú udalosť dokončenia alebo zlyhania a prepojte ju s požiadavkou, ktorú ste poslali.

Rozhodnite, čo volajúci urobí, ak sa odpoveď stratí. Slepé opakovanie vytvorenia alebo opätovného pripojenia nie je to isté ako kontrola, či prvá požiadavka už zabrala.

Odobratie prístupu sú aspoň tri rôzne akcie: zablokovanie budúceho prihlásenia, ukončenie aktívnej relácie a zrušenie poverenia. Pýtajte si tie, ktoré politika skutočne vyžaduje, a v kontrakte uveďte, ktorá je ktorá. Neoznačujte jedno úspešné aktualizovanie účtu za úplné zrušenie bez dôkazu. Rozdiel je dôležitý počas incidentu, keď hodiny bežia.

Overte kontrakt pilotom

Malý schválený pilot by mal pokryť úspech, odmietnutie, prerušenie a opakovanie, po ktorom nasleduje operácia aplikácie, ktorá má byť povolená alebo odmietnutá.

Pre rozhranie na úrovni démona dve príkazy precvičujú pozorovanie a signál:

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

Pridelte iba oprávnenie, ktoré operácia vyžaduje. Držte tajomstvá mimo rutinných záznamov a zaznamenajte dosť súkromných podrobností, aby ste povedali, ktorý cieľ bol zasiahnutý a ako sa to skončilo.

Napíšte cestu obnovy pre prípad, keď je samotné riadiace API nedostupné. Vyberte rozhranie, ktoré vlastní objekt a jeho životný cyklus; tvrdenia o automatizácii na stránke produktu nie sú náhradou.

Súvisiace články