Pregunta

Es una buena práctica separar su API y su sitio web orientado al usuario, por lo que busco algunos consejos sobre cómo estructurar el diseño del módulo/submódico para un proyecto Python que tiene API simultánea y desarrollo frontal.

Cuando actualmente implementamos, tenemos dos máquinas diferentes: una es el servicio web, que utiliza la API, y la otra es la aplicación web.

Una forma en que estaba pensando en abordar el problema es construir un súper proyecto mínimo que inicialice las configuraciones, administra la ejecución de pruebas, el lanzamiento de la aplicación, la demonios, etc.

Entonces, abusando Submódulos git, separando la aplicación web del submódulo API que se puede desarrollar simultáneamente.

De esta manera, puede haber versiones para la API (la revisión de confirmación específica), así como la implementación de la aplicación web que no interfieren entre sí, ya que se aplica la compatibilidad hacia atrás.

Algunas contras con este enfoque:

  1. Está vinculado a Git
  2. Los cambios en la API de ruptura aún requieren que se reinicie la aplicación web (pero ese es el caso con cualquier servicio en torno a una API)
  3. git-submodules puede ser demasiado complicado y difícil de entender para las personas nuevas (no estoy seguro de este)

Una vez que tenemos suficiente ancho de banda, podemos usar algo como ZC.BuildOut para usar un sistema de compilación para implementar.

Otra solución es usar ZC.BuildOut inmediatamente y tener un repositorio maestro y simplemente construir los archivos de lanzamiento de Python.

¿Pensamientos?

¿Fue útil?

Solución

Definitivamente los mantendría como diferentes repositorios. El supermodule depende de ti. No tenerlos como submódulos no le impide hacer etiquetas en ambos repositorios para que pueda mantener las cosas sincronizadas para diferentes lanzamientos. Su punto sobre los submódulos que se complican en exceso es correcto y si lo hace, lo pensaría solo como una forma de mantener ciertas liberaciones en sincronización. Pienso que los submódulos están diseñados para agregar bibliotecas remotas a otro proyecto donde realmente necesita usar esos submódulos, pero otras personas los están desarrollando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top