Tenemos un proyecto donde el código de IU será desarrollado por el mismo equipo pero en un lenguaje diferente (Python / Django) de la capa de servicios (REST / Java). El código para cada capa sale en diferentes repositorios de código y que pueden seguir diferentes ciclos de lanzamiento. Estoy tratando de llegar a un proceso que evite / reduzca los cambios importantes en la capa de servicios desde la perspectiva de la capa de la interfaz de usuario.
He pensado escribir pruebas de integración en el nivel de la capa de UI que ejecutaremos cada vez que construyamos la UI o la capa de servicios (estamos usando Jenkins como nuestra herramienta de CI para construir el código que está en dos repositorios Git) y si hay fallas, entonces algo en la capa de servicios se rompió y la confirmación no se acepta.
¿Sería también una buena idea (¿es una práctica recomendada?) Que el desarrollador de la capa de servicios cree y mantenga una biblioteca de cliente para el servicio REST que existe en la capa de la interfaz de usuario que actualizarán cada vez que haya un cambio importante en su API de servicio? Posiblemente, tendríamos la ventaja de una API de tipo estático con la que se construye el código de la interfaz de usuario. Si la API de la biblioteca del cliente cambia, entonces el código de la interfaz de usuario no se compilará (por lo que sabremos antes que hubo un cambio importante). También seguiría ejecutando las pruebas de integración al crear la interfaz de usuario o la capa de servicios para validar aún más que la integración entre la interfaz de usuario y los servicios todavía funciona.