Unha páxina de produto di que ten unha API, e a reunión de integración atasca na segunda pregunta. Que operación, sobre que obxecto, chamada por quen e que conta como éxito? Responder esas catro antes de comparar produtos adoita eliminar a metade dos candidatos. Tamén converte a comparación restante en algo que unha proba pode resolver.

Substitúa a afirmación de que ten unha API por unha soa operación

Unha API é un transporte, non unha capacidade. Un punto final REST, un socket local e un envoltorio de liña de ordes poden chamarse API, e non ofrecen operacións equivalentes.

Escriba a operación como unha frase antes de abrir a documentación.

Iniciar unha conexión local é unha acción do lado do cliente cun usuario diante. Emitir un perfil de dispositivo é unha acción de aprovisionamento cun inventario detrás. Desactivar o acceso dun usuario é unha acción administrativa cun rastro de auditoría. Esas tres adoitan vivir en compoñentes distintos, propiedade de equipos distintos, con autoridade distinta.

Catro campos que fan comprobable o contrato

Encha catro campos para cada operación: o obxecto, a acción, o invocador e a condición de éxito. Un contrato ao que lle falta un campo é un desexo.

A táboa é toda a folla de traballo:

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

A condición de éxito é o campo que a xente omite, e é o que decide se a integración funciona. Un axuste gardado non é un túnel activo, e unha conta desactivada non é unha sesión rematada.

Se dúas operacións necesitan invocadores distintos, son dúas integracións. Agrupalas nunha soa conta de servizo adoita significar conceder máis autoridade da que necesita calquera das dúas.

Axuste a interface á súa capa real

A interface de xestión comunitaria de OpenVPN fala cun demo por TCP ou por un socket Unix. As súas ordes inclúen observacións de estado e sinais ao demo.

Iso convértea nunha canle de control do demo, non nunha API de subscrición aloxada nin nun servizo de alta de usuarios. Ler a súa documentación con coidado evita construír contra unha capa que non posúe o obxecto.

Esa documentación tamén di que o protocolo non leva cifrado propio. Quen poida alcanzar o socket pode controlar o demo, así que tráteo como control sensible e non como un fluxo de métricas. Áteo a loopback ou a un socket Unix, e pono detrás dun arranxo restrinxido se un invocador remoto o necesita. Expoñelo a internet por comodidade converte unha canle de control nun incidente.

Especifique o comportamento tras a chamada

A aceptación non é o mesmo que a finalización. O demo pode volver antes de que o túnel estea erguido, así que espere o evento documentado de finalización ou de fallo e vincúleo á petición que enviou.

Decida que fai o invocador se se perde a resposta. Repetir unha creación ou unha reconexión ás cegas non é o mesmo que comprobar se a primeira petición xa surtiu efecto.

Retirar o acceso son polo menos tres accións distintas: bloquear o inicio de sesión futuro, terminar unha sesión viva e revogar a credencial. Pida as que a política realmente esixe, e diga no contrato cal é cal. Non etiquete unha actualización de conta exitosa como revocación completa sen probas. A diferenza importa durante un incidente, cando o reloxo corre.

Comprobe o contrato cun piloto

Un piloto pequeno e aprobado debería cubrir éxito, rexeitamento, interrupción e reintento, seguido da operación de aplicación que se supón permitida ou denegada.

Para unha interface a nivel de demo, dúas ordes exercitan a observación e un sinal:

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

Conceda só a autoridade que a operación require. Mantena os segredos fóra dos rexistros rutineiros e rexistre abondo detalle privado para dicir que obxectivo se viu afectado e como rematou.

Escriba a ruta de recuperación para o caso de que a propia API de control estea caída. Escolla a interface que posúe o obxecto e o seu ciclo de vida; as afirmacións de automatización nunha páxina de produto non son un substituto.

Artigos relacionados