2010-05-19 10 views
26

Estoy a punto de implementar en producción un sitio bastante complejo y por primera vez necesito un entorno de ensayo donde pueda probar cosas en un entorno más realista, especialmente con respecto a algunos servicios externos que no se pueden ejecutar en la zona.Buenas prácticas de bases de datos de etapas

Mi plan general es desarrollar & probar primero localmente, realizar cambios simples (pequeñas correcciones de errores, HTML/CSS, JS, etc.) directamente a producción, y para cambios más grandes, presionar primero al subdominio de etapas para realizar pruebas exhaustivas y luego a la producción.

No creo que deba mantener sincronizadas las bases de datos de producción y producción (la actualización manual ocasional sí) pero me pregunto si hay buenas prácticas generales con respecto al mantenimiento de un entorno intermedio en relación con un entorno de producción, especialmente cuando se trata de bases de datos.

Cualquier pensamiento/consejo/experiencia general sería apreciado.

ACTUALIZACIÓN:

Gracias por los comentarios, yo obtener la esencia. Supongo que vale la pena tomarse un tiempo para pensar sobre esto. Aceptada la respuesta popular.

Respuesta

26

Pasar por alto la puesta en escena y hacer cambios en la producción es una receta para el desastre y el desuso. A medida que realiza esos cambios, la definición de menor comienza a cambiar. En segundo lugar, a medida que los dos entornos se van (es decir, la puesta en escena ya no coincide con la producción) las cosas se rompen y se pierde la confianza en el entorno de puesta en escena. Para obtener el máximo provecho de un servidor intermedio, debe realizar implementaciones automáticas en él, realizar pruebas completas y solo luego implementar (automatizar) la producción (sin importar cuán pequeño sea el cambio). También debe asegurarse de que el entorno completo sea lo más similar posible y permanezca así. Esto obviamente incluye el DB. Normalmente configuro una sincronización diaria o por hora (dependiendo de la frecuencia con la que estoy creando el sitio o la aplicación) para mantener la base de datos, y a menudo la ejecuto como parte del proceso de compilación.

+7

+1. Todo el propósito de un entorno de ensayo es imitar lo que está a punto de entrar en producción. Si hay cambios en la producción que no se reflejan en el código que ha organizado, ¿por qué molestarse con un servidor intermedio? – NotMe

+1

¿Puede compartir alguna idea de cómo sincronizar el DB automáticamente? – geckob

+1

@geckob que debería ser una pregunta separada, ya que dependerá de la base de datos específica, el sistema operativo, donde se ejecuta (virtual, en el centro de datos, la nube) etc. –

7

Como alguien desarrollar un software que ayuda a tool con cada paso del proceso de implementación, puedo decir que la mejor práctica cuando se trata de la organización de los ambientes es reflejar su entorno de producción exactamente. Esto incluye un esquema de base de datos idéntico (los datos no son relevantes, la copia de seguridad/actualización ocasionalmente está bien), la misma versión del sistema operativo, paquetes de servicio actualizados, configuraciones del servidor web, etc.

En un mundo ideal, funcional o de usuario No es necesario realizar pruebas de aceptación en etapas porque el objetivo de un entorno de prueba es solo probar la implementación en producción. Sin embargo, en el mundo práctico, a veces es aceptable que su entorno de ensayo sea también su entorno de prueba funcional o UA.

Cada vez que cambie una configuración o modifique la configuración en su servidor de producción, debe cambiar la configuración en el servidor intermedio, esto garantizará que si puede implementar su aplicación en etapas tendrá, con gran probabilidad, desplegar a producción sin error.

+11

No estoy de acuerdo con que "los datos no sean relevantes". Dependiendo del sistema, los datos de producción pueden revelar todo tipo de problemas impredecibles en su entorno de ensayo ... Lo cual es una especie de punto :) – Dolph

+3

@Dolph - cuando digo datos me refiero a algo así como "Pedidos" o "Empleados". Si está almacenando configuración de cualquier tipo en la base de datos, entonces tiene razón en que definitivamente debe ser idéntica. Sin embargo, si los datos simples están rompiendo su aplicación de alguna manera, entonces eso debería haber sido capturado durante la prueba de control de calidad. Por supuesto, si sus entornos de ensayo y prueba son los mismos, entonces probablemente sea una buena idea actualizar su base de datos provisional con frecuencia;) –

+3

En un mundo perfecto, estaría de acuerdo. Pero en mi experiencia, los usuarios del mundo real siempre encuentran formas de generar datos que nadie más esperaba. – Dolph

Cuestiones relacionadas