Gestión de versiones separadas con código común

Mi producto tiene la siguiente estructura: sitio web, iOS, aplicaciones móviles Android, backend.

Hay un código común que utilizan todos los componentes anteriores. Digamos que tiene que cambiar una parte del código dentro de él (solo una vez en un lugar) para que los cambios aparezcan en todos los componentes.

Al mismo tiempo, si, por ejemplo, hay un error en el sitio web que requiere un cambio en este código común, también tenemos que probar las aplicaciones móviles para asegurarnos de que no haya fallas allí.

Ahora hacemos lanzamientos con poca frecuencia, y tenemos todos los componentes lanzados a la vez. Esto parece una forma ineficaz de hacer lanzamientos. Me gustaría lanzar cada producto por separado a su propio ritmo sin comprometer la calidad.

¿Alguna idea de cómo se puede hacer esto?

Respuestas (3)

Como una decisión de este problema puede ser los siguientes pasos:

Preparación

  1. Mueva el código común bajo algún repositorio de control de versiones (git, por ejemplo).
  2. En el código de cada proyecto (Android, iOS, etc.) agregue el enlace al repositorio de código común.
  3. Obtenga la última versión actual del código común del repositorio para cada proyecto.

Trabajo diario

  1. Imaginemos que queremos actualizar la app de Android mejorando el código común y lo hacemos.
  2. Luego vamos al código de la aplicación de Android y obtenemos el último código común actual del repositorio.
  3. Realice las pruebas necesarias de la aplicación de Android de acuerdo con el flujo de desarrollo actual de su equipo.
  4. Haga el lanzamiento de la aplicación de Android con el nuevo código común.

Otro trabajo

  1. Realice los pasos de trabajo diario para otros proyectos en su lista.

Por lo tanto, puede usar dicho método para mejorar solo un proyecto sin temor a romper sus otros proyectos.

ingrese la descripción de la imagen aquí

Una de las reglas de oro de la entrega continua es:

Si algo es difícil, hazlo con frecuencia.

En este momento, le preocupa que la publicación en las distintas plataformas afecte la calidad. Si puedes aliviar ese miedo, entonces el problema desaparece.

estaría buscando:

  • Use extensas pruebas de regresión automatizadas
  • Integre y pruebe con frecuencia (quizás incluso varias veces al día)
  • Use enfoques como alternar funciones y lanzamientos controlados para eliminar el riesgo de lanzamientos
  • Automatice su proceso de liberación

Este enfoque requiere una inversión sustancial de tiempo y recursos, pero el beneficio es mucha más flexibilidad en la liberación y la capacidad de adaptarse rápidamente a los cambios.

Esto suena como un problema principalmente orientado al código. Desea que los componentes de su aplicación se acoplen libremente o se desacoplen por completo. Usando buenos principios de programación como responsabilidad única e inversión de dependencia, cambiar algo en un sistema no necesariamente tiene un impacto inmediato en todo lo demás. A partir de aquí, ya sea que su código común sea una biblioteca o algún tipo de servicio, puede usar un esquema de control de versiones para permitir actualizaciones que afecten a una plataforma pero no a otra.