¿Cómo influye la arquitectura de software en la entrega continua?

¡Absolutamente! Hay tantas maneras que probablemente ni siquiera puedo pensar en todas ellas en este momento.

Principio de la mente: pruebas automatizadas. La forma más rápida de prueba es la prueba unitaria. Para una entrega continua, quieres velocidad. Podría tener un conjunto de cientos de pruebas de integración que afectan a la base de datos, pero demoran de 10 a 15 minutos en ejecutarse. Un conjunto de miles de pruebas unitarias puede ejecutarse en menos de un minuto. Sin embargo, si su arquitectura no aísla cosas como llamadas a servicios de terceros o llamadas de DB, entonces no puede burlarse de esas funciones y no puede construir pruebas unitarias.

También existe el sistema monolítico vs microservicios. Puede realizar entregas continuas con ambos, pero tienen diferentes cosas a tener en cuenta. Con los monolitos, el alcance de sus pruebas es muy amplio. A menos que el código dentro del monolito tenga un acoplamiento muy bajo, entonces puede ser difícil saber si un cambio en la función X no afectará a las funciones Y y Z. Las pruebas unitarias no pueden detectar todo, especialmente porque probablemente se haya burlado de la base de datos llamadas. Puede confiar en las pruebas de integración, pero existe el problema de la velocidad. A medida que crece el monolito, un conjunto completo de pruebas de integración podría durar horas. Eso no es muy continuo.

Con los microservicios tienes todo tipo de complejidad pero de una manera diferente. ¿Qué sucede si realiza un cambio en el Servicio A y el Servicio B que dependen del cambio en el otro? Es difícil garantizar que el despliegue de ambos ocurra exactamente en el mismo milisegundo. Por lo tanto, los servicios deben diseñarse de modo que pueda implementarlos en uno sin interrumpir ningún otro servicio. La compatibilidad con versiones anteriores es esencial. También hay efectos de onda.

Dicho esto, el alcance de la funcionalidad de un servicio debería ser bastante pequeño. Es posible que pueda escapar con unas pocas docenas de pruebas de integración y unos cientos de pruebas unitarias que se ejecutarán juntas en menos de un minuto.