2010-01-02 17 views
6

Estoy trabajando en una aplicación web que se ejecuta en la pila LAMP (Linux Apache Mysql PHP) y me gustaría recibir recomendaciones para mejorar mi flujo de trabajo.¿Cómo puedo mejorar mi estrategia de desarrollo e implementación?

tengo 3 ambientes:

  1. mi máquina local AKA mi desarrollo ambiente
  2. Un puesta en escena cuenta en mi servidor dedicado para que pueda probar la aplicación web
  3. Una producción cuenta en mi servidor dedicado

Hago todo el desarrollo en mi computadora local y uso un servidor de subversión que se encuentra en mi servidor dedicado. Configuré un script de gancho para que cada vez que me comprometa, mi cuenta de "preparación" se actualice con el nuevo código.

De vez en cuando me aseguro de que todo funcione bien en la cuenta provisional y envío los cambios a mi cuenta de producción mediante un pequeño script.

Esto funciona bastante bien en su mayor parte, pero hay un par de irritaciones:

  • Mi nombre de dominio está codificado en un par de lugares, por lo que es mucho tiempo para cambiar entre entornos . Puedo modificar el archivo de mi host de forma manual, pero no es exactamente rápido y no funciona para las 2 cuentas (prod/staging) en el mismo servidor.

  • No tengo forma de mantener la base de datos actualizada en los tres entornos. Podría usar la misma base de datos para todos los entornos, pero tendría que correr el riesgo de romper el entorno de producción.

Entonces, mi pregunta es: ¿qué podría hacer para mitigar estos problemas?

ACTUALIZACIÓN: El problema del dominio codificado es introducido por un software de terceros y, por lo tanto, "no codificarlo duro" no es una opción en este momento.

+0

Olivier: He editado su pregunta para intentar que sea más específica. SO no es un foro, y tiende a funcionar mal para "¿algún comentario sobre esto?" preguntas; Creo que hizo un buen trabajo al identificar problemas específicos en su párrafo final, y por eso intenté enfatizarlos (también alterando el enfoque del título de una solicitud de anécdotas) – Shog9

+0

¿Alguien puede decirme por favor cuál es la convención general y el significado? asociado con dev, stg y prod. Parece que estoy confundido acerca de su significado (o parece que he estado usando la convención/semántica que no están en sintonía con lo que otros están usando). Gracias –

+0

Creo que esta es la convención habitual: Dev: medio ambiente para los desarrolladores Puesta en escena: medio ambiente para la garantía de calidad (antes de empujar cambios a prod) Producción: entorno público –

Respuesta

1

Idealmente, desearía que la puesta en escena sea una réplica exacta de la producción. De esta manera, lo que ve en la puesta en escena puede estar razonablemente seguro de que verá en producción. El envío automático a la puesta en escena cuando se cometa no lo hará, ya que cualquier error que introduzca con una confirmación se enviará instantáneamente a la puesta en escena.

Lo que puede desear es configurar otro entorno y llamarlo prueba. Aquí es donde te presionarás automáticamente para cometer. Use ese entorno para hacer control de calidad y desde allí puede empaquetar el código y presionarlo para organizar las pruebas finales. Si todo va bien en la puesta en escena, empuje el paquete hacia la producción.

En cuanto a la cuestión del nombre de dominio, recomendaría no codificarlos si puede salirse con la suya. O al menos use subdominios para los diferentes entornos para facilitar la determinación programática del entorno en el que se encuentra.

Para mantener su base de datos actualizada en todos los entornos, puede considerar realizar un vaciado periódico de la producción y actualizando sus entornos de ensayo, prueba y desarrollo con ese volcado. Una vez al día debería funcionar.De esa manera, estás desarrollando y probando en contra de lo que tus usuarios ven en producción.

+0

Gracias por las sugerencias Darell. Entiendo la necesidad de un entorno que sea una réplica exacta de la producción, pero en este momento, dado que soy el único desarrollador/evaluador de mi aplicación, no es probable que cometa errores durante las pruebas. Para el problema del nombre de dominio, no tengo ningún poder real sobre eso ya que utilizo un software de terceros que es responsable de eso: /. Veré si los subdominios funcionan bien. –

1

En cuanto a sus últimos puntos, la solución obvia parece ser (1) no codificar el dominio en cualquier lugar, o si debe, al menos dividirlo en un archivo de "configuración local" que no se actualiza a través de SVN; (2) escriba una secuencia de comandos para sincronizar las bases de datos (es decir, copie los datos de producción a la escena y/o su entorno local, ciertamente no al revés) y ejecútelo ocasionalmente.

Cuestiones relacionadas