Flujo de trabajo de desarrollo y producción

He visto piezas de este problema resueltas en la networking, pero todavía estoy confundido, así que pensé en preguntarles a los expertos en Stack Overflow acerca de esto.

Somos una pequeña empresa emergente y, en este momento, nuestro flujo de trabajo de desarrollo -> producción implica ingresar y solo cargar el código de desarrollo.

El código de desarrollo ESTÁ bajo control de subversión, aunque no hemos aprovechado troncos / tags / twigs, ya que no tengo una buena idea de cómo usar mejor esta estructura. Siento que debería haber una integración perfecta con el sitio en vivo que no me requiera copyr y pegar carpetas y files.

Aquí hay algunos detalles: – desarrollo en CakePHP + MySQL – alojado en Media Temple (gs) – los desarrolladores usan Mac OS (Coda) y Windows (Dreamweaver)

Entonces mi pregunta es: ¿cómo se configura un flujo de trabajo escalable?

Su flujo de trabajo parece adecuado para una organización pequeña que no tiene control de calidad. Te aconsejaría que inviertas algunos resources en

1) Cree lanzamientos de producción y tenga un esquema de versiones para que pueda rastrear sus lanzamientos de producción con precisión. Etiquete cada versión para que pueda rastrearla.

2) Construye un instalador. No recurra a copyr carpetas manualmente porque podría cometer un error. Un instalador también facilita el seguimiento cuando algo sale mal en la producción.

3) Realice algunos controles de calidad en la producción antes de implementar. Incluso un pequeño QA recorre un largo path. Los desarrolladores no son buenos evaluadores ya que pueden estar sesgados hacia las "características" del progtwig.

4) No te molestes con twigs hasta que realmente tengas que usarlo. Solo entonces quedará claro qué estructura necesita. El libro rojo de subversión tiene algunas ideas sobre cómo estructurar sus twigs.

Una forma en que he hecho esto en el pasado es hacer que el código de producción sea realmente un cliente de subversión en vivo, retirando la twig de 'producción'.

Así que haces tu trabajo como de costumbre en la twig de desarrollo, y cada vez que estás listo, cortas una copy a la twig de producción. Sincronice los serveres de producción y estará en vivo. Si algo sale mal, siempre puede resincronizar a la versión anterior.

Para get puntos adicionales, puede agregar una twig de etapas, para que pueda ver todas las cosas que cambiaron y que no están en su código. Luego los agrega a una secuencia de commands de implementación que ajustará los sistemas de producción según sea necesario.

Creo que lo más importante a considerar es include la mayor cantidad de processs y flujos de trabajo que mejorarán la calidad del código y networkingucirán el esfuerzo de implementación. La key es comenzar a crear algunas de estas cosas cuando su base de código se haya establecido. En los primeros días, cuando todo está cambiando rápidamente, pasará más time actualizando los scripts de lo que ahorrará con los scripts.

Yo recomendaría las siguientes cosas:

  1. Crea un script de compilation automatizado. Hay muchas tecnologías diferentes y lenguajes de scripting que se pueden usar (prefiero Ant) para extraer sus files del control de fuente, boost automáticamente los numbers de versión, agregar tags y crear los packages de implementación. Esto puede requerir una gran cantidad de esfuerzo para configurar y desentrañar las tareas que los desarrolladores están haciendo actualmente, pero esto valdrá enormemente en el largo ploop. Debería liberar a los desarrolladores de la tarea repetitiva de build y permitirles concentrarse en resolver sus problemas técnicos. Como sabrá, los desarrolladores se aburren haciendo lo mismo una y otra vez y cuando se aburre, comienzan a cometer errores.

  2. Instalación automatizada Esta es una ventaja marginal, mientras que las cosas todavía están en una etapa de desarrollo rápido, pero a largo ploop liberará resources que podrían ser mejor gastados en otros lugares. Por lo less, debe tener un package de installation y pasos de installation para implementar su código.

  3. Entorno de puesta en escena . Podría argumentar que esto no es necesario hasta que su base de usuarios sea lo suficientemente grande como para iniciar sqawking cuando el sistema de producción desaparezca cuando implemente el código. Es importante tener un sistema que le permita probar sus cambios sin molestar a su base de usuarios. Pero, por supuesto, esto también requiere un poco de esfuerzo de control de calidad. Definitivamente necesitas algunas testings antes de la implementación. Los desarrolladores siempre asumen que tienen razón y nunca se han perdido nada, pero nunca se les debe creer. Siempre hay una ruta de código diferente o una nueva permutación de clics en la que nunca pensaron.

  4. Respalda tu SVN . Esto debería ser evidente, pero trabajé para una empresa donde nuestro repository de origen no fue respaldado durante más de dos años. Puede hacer una copy de security haciendo un svndump y luego copyndo el file resultante en otra location. También puede hacer una copy de security de las carpetas donde su repository existe y luego restaurarlas si ocurren problemas.