Una pàgina de producte diu que té una API, i la reunió d'integració s'encalla a la segona pregunta. Quina operació, sobre quin objecte, cridada per qui, i què compta com a èxit? Respondre aquestes quatre abans de comparar productes normalment elimina la meitat dels candidats. També converteix la comparació restant en una cosa que una prova pot resoldre.

Substituïu l'afirmació que té una API per una sola operació

Una API és un transport, no una capacitat. Un punt final REST, un sòcol local i un embolcall de línia d'ordres es poden anomenar tots API, i no ofereixen operacions equivalents.

Escriviu l'operació com una frase abans de mirar la documentació.

Iniciar una connexió local és una acció del costat del client amb un usuari al davant. Emetre un perfil de dispositiu és una acció de proveïment amb un inventari al darrere. Desactivar l'accés d'un usuari és una acció administrativa amb un rastre d'auditoria. Aquestes tres solen viure en components diferents, propietat d'equips diferents, amb autoritat diferent.

Quatre camps que fan el contracte provable

Ompliu quatre camps per a cada operació: l'objecte, l'acció, el sol·licitant i la condició d'èxit. Un contracte amb un camp que falta és un desig.

La taula és tot el full de treball:

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

La condició d'èxit és el camp que la gent omet, i és el que decideix si la integració funciona. Un paràmetre desat no és un túnel actiu, i un compte desactivat no és una sessió acabada.

Si dues operacions necessiten sol·licitants diferents, són dues integracions. Agrupar-les en un sol compte de servei normalment vol dir concedir més autoritat de la que necessita qualsevol de les dues.

Ajunteu la interfície amb la seva capa real

La interfície de gestió comunitària d'OpenVPN parla amb un dimoni per TCP o per un sòcol Unix. Les seves ordres inclouen observacions d'estat i senyals al dimoni.

Això la converteix en un canal de control del dimoni, no en una API de subscripció allotjada ni en un servei d'alta d'usuaris. Llegir-ne la documentació amb cura us estalvia construir contra una capa que no posseeix l'objecte.

Aquesta documentació també diu que el protocol no porta cap xifrat propi. Qui pugui arribar al sòcol pot controlar el dimoni, així que tracteu-lo com a control sensible i no com a feed de mètriques. Lligueu-lo a loopback o a un sòcol Unix, i poseu-lo darrere d'un arranjament restringit si un sol·licitant remot el necessita. Exposar-lo a internet per comoditat converteix un canal de control en un incident.

Especifiqueu el comportament després de la crida

L'acceptació no és el mateix que la finalització. El dimoni pot tornar abans que el túnel estigui aixecat, així que espereu l'esdeveniment documentat de finalització o de fallada i lligueu-lo a la petició que heu enviat.

Decidiu què fa el sol·licitant si es perd la resposta. Repetir una creació o una reconnexió a cegues no és el mateix que comprovar si la primera petició ja ha fet efecte.

Retirar l'accés són almenys tres accions diferents: bloquejar l'inici de sessió futur, acabar una sessió viva i revocar la credencial. Demaneu les que la política realment requereix, i digueu al contracte quina és quina. No etiqueteu una actualització de compte reeixida com a revocació completa sense proves. La diferència importa durant un incident, quan el rellotge corre.

Comproveu el contracte amb un pilot

Un pilot petit aprovat hauria de cobrir èxit, rebuig, interrupció i reintent, seguit de l'operació d'aplicació que s'ha de permetre o denegar.

Per a una interfície a nivell de dimoni, dues ordres exerceixen l'observació i un senyal:

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

Concediu només l'autoritat que l'operació requereix. Mantingueu els secrets fora dels registres rutinaris, i registreu prou detall privat per dir quin objectiu s'ha vist afectat i com ha acabat.

Escriviu el camí de recuperació per al cas que la mateixa API de control estigui caiguda. Trieu la interfície que posseeix l'objecte i el seu cicle de vida; les afirmacions d'automatització en una pàgina de producte no són un substitut.

Articles relacionats