Certyo
Volver al blogIngeniería

Qué cambia en tu código cuando agregas Certyo: un walkthrough de integración de 5 LOC

La objeción de ingeniería más común: "esto suena como una integración pesada". No lo es. Agregar integridad a una ruta de escritura es una llamada HTTP. Las rutas de lectura no cambian. Esto es lo que tu base de código se ve realmente después.

28 de abril de 2026
7 min de lectura

Cuando el equipo de seguridad lleva Certyo a ingeniería, la primera pregunta rara vez es "¿funciona?" — es "¿qué tan invasiva es la integración?". La respuesta honesta es: menos de lo que la gente espera. Agregar integridad tamper-evident a un servicio existente es una sola llamada HTTP en la ruta de escritura, sin cambios en la ruta de lectura, y una pequeña adición operacional para verificación. Este post recorre cómo se ve eso en código real, qué agrega la versión production-grade encima de la versión mínima, y dónde vive el costo de ingeniería real.

La integración mínima

Si tienes un servicio que escribe registros a una base de datos, la adición mínima es un solo POST a /api/v1/records después de cada escritura. El cuerpo de la petición es el registro mismo más identificadores de tenant. La respuesta es un 202 Accepted con un identificador de registro que puedes guardar junto a tu fila.

Las rutas de lectura no cambian. Tu aplicación sigue leyendo de tu base de datos exactamente como antes. La prueba de integridad se computa bajo demanda al momento de verificación — no en cada lectura. Esta es la elección de diseño que mantiene la integración pequeña: la integridad es una preocupación aditiva de la ruta de escritura, no una reescritura de la ruta de lectura.

Cómo se ve el código realmente

Tres ejemplos concretos — Node, Go, Python — para la misma integración mínima. Cada uno son aproximadamente 5 líneas de código nuevo agregadas a un handler de escritura existente:

  • Node — `await fetch(url, { method: 'POST', headers, body: JSON.stringify({ tenantId, clientId, record }) })` inmediatamente después de tu INSERT existente. El fetch es fire-and-forget para el camino feliz; la respuesta 202 confirma que el registro entró a la cola de ingestión.
  • Go — una sola llamada `http.Post` con la misma forma de payload. Envuélvela en una goroutine si quieres escrituras no bloqueantes, o llámala síncronamente si quieres durabilidad dura antes de devolver al usuario.
  • Python — `requests.post(url, json={'tenantId': ..., 'clientId': ..., 'record': ...})` junto a tu save de ORM existente. La librería maneja reuso de conexión y reintento ante fallo de red si configuras una sesión.

Qué agrega la versión production-grade

La versión de 5 LOC es real y funciona para staging o prueba de concepto. La versión de producción agrega tres cosas encima: claves de idempotencia para que una petición reintentada no haga doble anclaje, un outbox local para que fallos de red transitorios no pierdan registros, y manejo estructurado de errores para que fallos de anclaje no rompan escrituras hacia el usuario. Ninguno de estos es específico de Certyo — son los mismos patrones que usarías para cualquier efecto secundario fuera de proceso.

5
Líneas de código para la integración mínima de ruta de escritura
0
Cambios requeridos en la ruta de lectura
1 día
Tiempo típico para integración nivel staging

La versión de producción está más cerca de 30 a 80 líneas incluyendo idempotencia, outbox y observabilidad. Eso sigue siendo pequeño en términos absolutos — comparable a agregar cualquier llamada a servicio interno con semántica at-least-once. La razón por la que los ingenieros alcanzan herramientas como Outbox o Debezium es la misma razón por la que aplican aquí: efectos secundarios durables en la ruta de escritura son un problema resuelto.

Por dónde fluye realmente la integración

El flujo end-to-end desde tu aplicación hasta una prueba verificable on-chain tiene cinco etapas. Tu código solo participa en la primera. Todo lo posterior lo opera la plataforma — no hay nada que integrar, mantener ni escalar de tu lado:

POST /api/v1/records
Acumulador Kafka
Lote Merkle
Anclaje Polygon
Verificación bajo demanda

El paso de verificación es donde una ruta de código distinta importa: cuando un auditor o consumidor downstream quiere probar que un registro está intacto, llama a POST /api/v1/verify/record. Esa llamada también es de una sola línea. El resultado de verificación es determinista y re-ejecutable por cualquier tercero contra la raíz Merkle on-chain. Esta es la parte que va en el paquete de evidencia entregado a compliance, no en el código de tu aplicación.

Dónde vive el costo de ingeniería real

El framing de 5 LOC es honesto sobre la integración pero puede ocultar tres lugares donde se requiere pensamiento de ingeniería real. Ninguno es bloqueante, pero los ingenieros deben saberlo de antemano:

  • Diseño de idempotenciaSi tu handler de escritura puede reintentar ante fallo — y la mayoría de handlers bien construidos lo hacen — necesitas asegurarte de que peticiones reintentadas no produzcan registros anclados duplicados. La plataforma soporta claves de idempotencia; la decisión de ingeniería es qué clave natural en tus datos es lo suficientemente estable para usarla como clave de idempotencia (típicamente un UUID de registro o un identificador de transacción).
  • Política de modo de falloSi la llamada de anclaje falla, ¿qué debe hacer la escritura cara al usuario? ¿Bloquear hasta que el anclaje tenga éxito (durabilidad fuerte, mayor latencia)? ¿Continuar y reconciliar después (mejor latencia, requiere outbox)? Esta es una decisión de política que depende de la criticidad del registro. La mayoría de equipos eligen reconciliar-después para el grueso de registros y anclaje síncrono para un pequeño subconjunto de alto riesgo.
  • Surfacing de verificaciónLa integración mínima ancla registros pero no expone verificación a los usuarios finales. Si tu aplicación necesita mostrar "este registro fue verificado en X timestamp" en la UI, esa es una pequeña integración adicional en la ruta de lectura. No es gratis, pero tampoco es por donde la mayoría de equipos empieza.

Qué pedirle a tu revisor de ingeniería

Si un líder de seguridad o cumplimiento está revisando Certyo con ingeniería, el pedido correcto es un spike de un día: levanta la integración de staging con la versión de 5 LOC, córrela contra un subconjunto representativo de escrituras, observa el resultado en la UI de verificación, y escribe los gaps production-grade (clave de idempotencia, outbox, política de error). Ese output es una estimación interna creíble para la integración completa. También es un entorno de staging funcional, lo cual hace concreta la decisión de la siguiente etapa en lugar de teórica. Para la API de verificación en detalle, ver el portal de desarrolladores. Para topologías de despliegue, ver /es/about.

Agregar integridad a una ruta de escritura es una sola llamada HTTP. Las rutas de lectura no cambian. El trabajo de ingeniería que queda — idempotencia, reintento, observabilidad — es el mismo trabajo que harías para cualquier efecto secundario durable. No hay sorpresa.

¿Listo para ver esto en acción?

Solicita una demo y verifica tu primer registro en minutos.