Contract Testing as a Service: apoya a tus clientes

Contract Testing as a Service: apoya a tus clientes

Alejandro Pena, Chapter Lead Backend

Alejandro Pena

Chapter Lead Backend

21 de noviembre de 2024

El Contract Testing se asocia normalmente con la gestión de la integración, el versionado y la compatibilidad entre microservicios en arquitecturas a gran escala. Este es el caso de uso más común, sin embargo, existen otros. En este artículo exploraremos un caso de uso alternativo particularmente interesante (¿y original?): apoyar a tus clientes cuando el núcleo de tu negocio se basa en una API que ofreces. 

Esto presenta desafíos, pero también oportunidades muy valiosas, donde el Contract Testing puede desempeñar un papel crucial pero distinto. En una relación tan simbiótica en la que tu API es el núcleo de las operaciones del cliente, mantener una integración perfecta no es solo una prioridad, sino un compromiso con el éxito de ambas partes.

Vamos a ello.

Contexto

Un cliente se acercó a nosotros con una situación particular. Todo su negocio giraba en torno a una API que sus clientes utilizaban para integrarse en su sistema. Esta API era su oferta core y servía a numerosos clientes que dependían de ella para sus operaciones diarias. Aunque todo funcionaba sin problemas la mayor parte del tiempo, habían experimentado algunos incidentes aislados en los que los cambios, a pesar de una cuidadosa planificación, causaban pequeñas interrupciones. Dado el carácter crítico de sus operaciones, querían evitar que estos problemas se produjeran en el futuro.

Así que, en lugar de seguir con el enfoque tradicional de versionado de API (y perseguir a los clientes para que se actualicen...), propusimos algo diferente: proporcionar a sus clientes una plataforma que les permita realizar Contract Testing en su API. Involucrarlos en el ciclo de vida de la API. Darles más control y participación, asegurando una mayor tranquilidad para ambas partes.

Al final, en este caso empresarial esa integración específica de la API fue crucial para todos los implicados.

Desafíos

En nuestras conversaciones con el cliente, identificamos varios retos a los que se enfrentaban a la hora de gestionar su API. Uno de los principales problemas era la gestión continua de los cambios en la API. Cada modificación creaba un efecto dominó que obligaba a mantener la compatibilidad entre varias integraciones y daba lugar a un abrumador registro histórico de versiones.

Además, la presión para garantizar integraciones fiables y seguras pesaba mucho sobre su equipo. A menudo carecía de información clara de los clientes sobre cómo afectaban estos cambios a sus operaciones, lo que dificultaba la priorización y la resolución eficaz de los problemas. Esta falta de comunicación obstaculizaba su capacidad para gestionar las integraciones de forma proactiva y responder a las necesidades de los clientes a tiempo.

Además, dado que el servicio que ofrecían a través de esta API era fundamental para el negocio de sus clientes, cualquier cambio, por pequeño que fuera, podría interrumpir sus operaciones. Esto no sólo ponía a prueba sus recursos, sino que también ponía en peligro sus relaciones con los clientes. Equilibrar la necesidad de innovación con la necesidad de estabilidad se convirtió en un reto crítico que tuvieron que sortear con cuidado.

Contract Testing as a Service

Propusimos ofrecer Contract Testing como un servicio a través de una instancia de PactFlow, permitiendo a los clientes realizar pruebas de forma colaborativa. Este servicio podía ofrecerse exclusivamente a los clientes "VIP", ampliarse a todos o incluso incluirse como una ventaja para determinados niveles de suscripción. Aunque los clientes tengan que poner de su parte (ya sabes, pequeños detalles como el desarrollo de pruebas y la publicación de contratos de consumo...), los beneficios potenciales para ambas partes son significativos:

  • Mayor agilidad en el desarrollo.

  • Reducción drástica de riesgos y conflictos con cada actualización.

  • Información instantánea sobre el uso de la API.

  • Mocks listos para usar en todas las versiones y contratos de API.

  • Mejora sustancial de la experiencia del desarrollador (cliente).

Me gusta mucho el último punto. Mejorar la experiencia de los desarrolladores debería ser siempre una prioridad. Recuerda que vamos a mejorar la estabilidad de las integraciones y reduciremos el MTTI (Mean Time To Integration). Un proceso de integración fluido es clave para que los nuevos clientes adopten rápidamente la API, al tiempo que se garantiza que los casos de uso existentes continúen sin interrupciones. Esta agilidad permite a los desarrolladores centrarse en la innovación en lugar de lidiar con problemas de compatibilidad.

Los portales para desarrolladores también desempeñarían un papel crucial a la hora de maximizar la eficacia de este enfoque. Estos portales no sólo centralizan la documentación y las herramientas de integración, sino que también proporcionan acceso a entornos de prueba y contratos actualizados, agilizando el proceso tanto para los equipos de proveedores como de consumidores. Los portales para desarrolladores permiten escalar las operaciones de forma organizada y eficiente, lo que resulta esencial a medida que crecen los ecosistemas de API.

Además, podremos anticiparnos a los casos de uso emergentes. Analizando los contratos y el uso que cada cliente hace de nuestra plataforma, podemos descubrir casos de uso que son necesarios abordar para mantener la relevancia de la API. Esto no sólo mejora la fiabilidad, sino que también proporciona una comprensión más profunda de cómo los clientes están utilizando el sistema en escenarios del mundo real.

No se trata sólo de ofrecer una herramienta técnica, sino de establecer una colaboración más profunda con clientes que son parte integral de su negocio. En un contexto en el que romper la integración simplemente no es una opción, implicar a tus clientes en el proceso de pruebas ofrece una capa de garantía que beneficia a ambas partes.

young-programmers-2023-11-27-04-58-25-utc.webp

¿Bidireccional o consumer-driven?

A la hora de decidir entre bidireccionalidad y consumo en este escenario, es importante tener en cuenta que el impacto de la decisión sobre los clientes es mínimo. Afecta principalmente al proveedor. En una configuración bidireccional, el proveedor elige publicar su OpenAPI a PactFlow, confiando en que PactFlow haga su magia. Por otro lado, en un enfoque orientado al consumidor, el proveedor necesita implementar pruebas, cubriendo los estados específicos especificados en los contratos del consumidor.

Así que, si te decides por el enfoque "sólo VIP", una estrategia orientada al consumidor puede dar lugar a pruebas de integración más completas y, aunque requeriría un mayor esfuerzo por tu parte para cubrir diferentes escenarios, también mejoraría tu comprensión de las necesidades de tu cliente.

Sin embargo, si el servicio se extiende a una base de clientes más amplia, gestionar los estados de numerosos contratos puede resultar complejo. Tendrías que centrarte en homogeneizar los estados utilizados por todos tus clientes para facilitarte la vida. Y buena suerte con eso... habrás cambiado un problema por otro. Por eso, en estos casos, optar por un enfoque bidireccional puede simplificar la gestión al tiempo que garantiza la fiabilidad de las integraciones API.

Permitidme hacer un poco de autopromoción e invitaros a leer este artículo sobre flujos de trabajo orientados al consumidor en Contract Testing.

Consideraciones sobre esta estrategia

Aunque las ventajas de adoptar las pruebas de contratos como servicio son evidentes, no deben pasarse por alto algunas consideraciones a la hora de adoptar una estrategia de este tipo:

  • Complejidad en las relaciones comerciales: compartir las responsabilidades de las pruebas con los clientes puede ser beneficioso, pero también puede aumentar las expectativas en torno a la estabilidad de la API. Los clientes VIP pueden esperar resoluciones más rápidas o una atención personalizada, lo que puede provocar fricciones si no se gestiona con cuidado. Para mantener el equilibrio, es esencial establecer expectativas claras entre los distintos niveles de clientes.

  • Sobrecarga operativa: los clientes tendrán que invertir tiempo en desarrollar y mantener su Contract Testing. Por parte del proveedor, la gestión y el soporte de múltiples contratos requerirá una coordinación adicional para garantizar que todos los contratos se gestionan con eficacia. Sin embargo, los procesos bien estructurados y la automatización pueden ayudar a minimizar estos retos.

  • Riesgos contractuales: aunque superar las pruebas contractuales aumenta la confianza en los cambios de API, no elimina el riesgo de fallos. Si no se gestiona con cuidado, puede crear una falsa sensación de seguridad. Debe mantenerse una comunicación clara sobre las limitaciones de las pruebas y las expectativas de cumplimiento para evitar malentendidos.

Conclusión

En resumen, la adopción de Contract Testing as a Service ofrece una oportunidad transformadora para mejorar la relación con tus clientes en este tipo de contextos. Al implicar a los clientes en el ciclo de vida de la API y proporcionar herramientas de pruebas colaborativas, tu empresa puede mejorar la estabilidad, la agilidad y la comunicación

Este enfoque mitiga los riesgos asociados a los cambios de API y fomenta asociaciones más sólidas. Además, los portales para desarrolladores y los entornos sandbox pueden elevar todo el ecosistema de API, fomentando la confianza y garantizando el éxito mutuo. Un enfoque bidireccional simplifica la gestión, mientras que una estrategia orientada al consumidor fomenta una colaboración más profunda, alineando tu servicio más estrechamente con las necesidades reales de tus clientes.

Para las empresas cuyos clientes confían en su API como componente central de sus operaciones, el Contract Testing no es sólo una red de seguridad, es una forma de profundizar en la colaboración, fomentar la confianza y garantizar el éxito mutuo.

En última instancia, la estrategia adecuada dependerá de la base de clientes y de los retos específicos a los que te enfrentes, allanando el camino hacia un ecosistema de API más resistente.

¡Gracias por leerme!

Alejandro Pena, Chapter Lead Backend

Alejandro Pena

Chapter Lead Backend

With over 14 years of experience as a Software Engineer, I specialize in Backend, Quality Engineering, and DevOps. My passion for exploring new technologies is matched by my love for video games. I enjoy hiking with my family, watching movies, reading, or listening to music in my free time.


Nuestras últimas novedades

¿Te interesa saber cómo nos adaptamos constantemente a la nueva frontera digital?

Inteligencia Artificial, de la tecnología a la transformación
Inteligencia Artificial, de la tecnología a la transformación

Insight

6 de noviembre de 2024

Inteligencia Artificial, de la tecnología a la transformación

Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles
Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles

Tech Insight

5 de noviembre de 2024

Innovación de impacto: Cómo evaluar y diseñar productos digitales sostenibles

Mutation Testing: Probando tus pruebas
Mutation Testing: Probando tus pruebas

Tech Insight

28 de octubre de 2024

Mutation Testing: Probando tus pruebas

Sobreingeniería en software: cómo complicar lo sencillo sin necesidad
Sobreingeniería en software: cómo complicar lo sencillo sin necesidad

Tech Insight

21 de octubre de 2024

Sobreingeniería en software: cómo complicar lo sencillo sin necesidad