У нас есть проект, в котором код пользовательского интерфейса будет разрабатываться той же командой, но на другом языке (Python / Django) из уровня сервисов (REST / Java). Код для каждого слоя выходит из разных хранилищ кода и может следовать разным циклам выпуска. Я пытаюсь придумать процесс, который будет предотвращать / сокращать критические изменения на уровне сервисов с точки зрения уровня пользовательского интерфейса.
Я подумал написать интеграционные тесты на уровне пользовательского интерфейса, которые мы будем запускать всякий раз, когда мы создаем пользовательский интерфейс или сервисный уровень (мы используем Jenkins в качестве инструмента CI для создания кода, который находится в двух репозиториях Git), и если возникают сбои, затем что-то на уровне сервисов ломается и фиксация не принимается.
Было бы также хорошей идеей (является ли это наилучшей практикой?), Чтобы разработчик уровня служб создавал и обслуживал клиентскую библиотеку для службы REST, которая существует на уровне пользовательского интерфейса, которую они будут обновлять всякий раз, когда происходит критическое изменение в их сервис API? Вероятно, тогда у нас было бы преимущество статически типизированного API, на основе которого строится код пользовательского интерфейса. Если API клиентской библиотеки изменится, код пользовательского интерфейса не будет скомпилирован (поэтому мы скоро узнаем, что произошло критическое изменение). Я также по-прежнему выполняю интеграционные тесты при создании уровня пользовательского интерфейса или сервисов, чтобы дополнительно проверить, что интеграция между пользовательским интерфейсом и сервисами все еще работает.