2010-05-26 21 views
5

Estoy trabajando para reconstruir el entorno de desarrollo/prueba/control de calidad de mi empresa. Tenemos 10-15 programadores que están involucrados en una serie de proyectos. Actualmente todos se desarrollan localmente en sus PC y usan el entorno de desarrollo para realizar pruebas. Actualmente no contamos con un entorno de control de calidad, por lo que las implementaciones suelen ser un problema porque generalmente se encuentran errores después de que algo se ha activado. Esto es lo que visualizo:Entorno de desarrollo/prueba/control de calidad ideal para desarrollo

  1. La eliminación de privilegios de administrador local de todos y hacer que todos se desarrollan en un servidor dev
  2. Crear un entorno de control de calidad que es idéntica a nuestros sistemas de producción. Esto les permitirá probar implementaciones.
  3. Cree un nuevo entorno de prueba que esté más bloqueado que el servidor de desarrollo para que se puedan realizar pruebas adecuadas.

¿Cuáles son sus pensamientos? ¿Cuál es la mejor manera de configurar un entorno como este? Desarrollamos aplicaciones ASP .NET utilizando MS Visual Studio 2008 (si eso ayuda).

Respuesta

4

Como desarrollador, realmente odiaría que me excluyeras de los privilegios de administrador local.

¿Por qué hacer que todos se desarrollen en un servidor de desarrollo? ¿Sus empleados no están todos en un entorno de oficina?

Lo único que realmente me gusta de sus sugerencias es que el servidor de QA es idéntico al entorno de producción. Lo siento.

usted debe ser:

  • código de gestión de control de código fuente a través
  • tiene un administrador de construcción dedicado que empuja las compilaciones a la garantía de la calidad. Luego de la aprobación de QA/cierre de negocios/inserte su proceso comercial aquí, el administrador de compilación presiona para la producción.
  • Espero que tenga un entorno de prueba para su base de datos, también. El DBA debe gestionar el cambio de los cambios de la base de datos a la producción. Los desarrolladores crean en el entorno de prueba, que es un servidor SQL/lo que sea en otro servidor que todos usan.
  • Si está utilizando productos MS, considere la posibilidad de realizar sus proyectos WDP (proyectos de implementación web). MSBuild se integra con esto, y puede disparar una compilación directamente desde una tarea de compilación TFS, por ejemplo. Creaciones incrementales, compilaciones diarias, solo manuales: es realmente agradable una vez que lo tienes configurado correctamente.
+0

Gracias por la información. Realmente solo quiero lo mejor para los programadores y para el departamento de TI. Ahora estoy pensando que darle a cada programador su propia máquina virtual para el desarrollo mientras se eliminan los privilegios locales de administración en su máquina será la mejor manera. ¿Hay algo que podamos usar para automatizar las compilaciones de su código .NET de SVN cada noche en el servidor de prueba? – zewsk

+0

¿Has oído hablar de CruiseControl.Net? Creo que podría hacer las compilaciones automatizadas para ti. –

0
  1. Do not. Va a ser un PITA y perjudicará la productividad de los desarrolladores, al afectar su capacidad de implementación rápida, depurar su código y ejecutar al mismo tiempo varias versiones de su código.
    Por supuesto, debe obligarlos a desarrollarse como no administradores a nivel local, pero esa es otra historia.
  2. Sí. De hecho, iría más allá y forzaría a que todo el código que se está revisando en el repositorio principal pase por la implementación automatizada en un servidor limpio. También debe tener uno de esos entornos, donde también se implementa el código que se va a enviar a la producción.
  3. Sí. Es una parte del artículo 2.

La primera tarea que desea trabajar es para asegurar que todos los productos que su empresa trabaja en un paquete de implementación tiene ** que se puede implementar de forma automatizada en un absolutamente limpio máquina**.Si no tiene dicho paquete, tendrá muchos problemas para tratar de forzar el proceso anterior, ya que cada implementación requerirá una intervención manual que le costará a su empresa tanto tiempo y recursos que a nadie le importará.

La segunda tarea es crear una configuración definitiva para sus servidores de implementación y preparar imágenes, que cualquier persona puede implementar en una máquina local o virtual. Esta será la línea de base para cualquiera de sus pruebas y debe estar lo más cerca posible de la configuración de producción real.

0

No soy un gran admirador de los desarrolladores de centralización en un servidor de desarrollo. La gente debería poder editar y fusionar desde donde sea que estén con el sistema en el que estén. ¿Qué problema estás tratando de resolver con esto? Puede haber otra solución a ese problema.

El servidor QA es obligatorio. Su equipo de control de calidad necesita un lugar donde puedan ir para romper cosas que no afectarán el desarrollo.

Supongo que por el servidor "TEST", este es en realidad un lugar donde las construcciones nocturnas se pueden colocar para que los desarrolladores puedan hacer pruebas antes de lanzar a QA? Esa es una muy buena idea, y como menciona Cen, las compilaciones nocturnas en una tarea de compilación a ese servidor podrían usarse para ayudar en este proceso.

3

Esto parece estar gritando para Continuous Integration en mi mente. Aquí es donde tendrías una segunda parte de un entorno de desarrollo que no es la máquina local de alguien, pero se puede usar para mostrar lo que se está haciendo actualmente y asegurar que las fusiones de código no estén rompiendo cosas. Esto separado de un entorno de prueba que es lo que QA usaría y debería haber otro entorno para ser el entorno de cuasi producción que es otro nivel, de modo que si hay revisiones para publicar esto se puede hacer por separado que versiones más grandes que pueden requerir más tiempo para que QA realice una regresión suficiente para garantizar que la nueva funcionalidad no rompa muchas cosas.

0

No me gustaría lidiar con esto al eliminar el privilegio de administrador local, que hará más daño que bien, pero recomendaría configurar un servidor de compilación para verificar las compilaciones en un entorno controlado. El conjunto de herramientas que he adoptado, que he encontrado funciona muy bien para mí y para mi equipo de una docena de voluntarios, es:

  • JetBrains TeamCity - La integración continua y construir, además de corredor de prueba unidad de
  • Atlassian Jira - seguimiento de problemas y gestión de proyectos
  • Atlassian Fisheye/Crucible - revisiones de código y métricas generales de código.
  • Servidor VisualSVN - control de código fuente
  • Cliente VisualSVN (integración con Visual Studio, bien vale la pena).
  • JetBrains ReSharper: productividad del programador y algunas herramientas de prueba de unidades ordenadas.

No puedo recomendar esas herramientas lo suficiente. TeamCity se ocupa de su "encontramos el error después de que enviáramos" al mover sus compilaciones de las máquinas de desarrollo y construirlas en un entorno limpio y controlado. También ejecutará pruebas unitarias y se asegurará de que siempre tenga una compilación operativa (nombrando y avergonzando al compilador).

Crucible es un producto valioso que le permite realizar revisiones de códigos de pares fácilmente y con una auditoría completa, para que pueda verificar que se están realizando correctamente.

Los otros elementos que creo que se explican por sí solos, todos contribuyen a las 'mejores prácticas' que moverán su tienda un largo camino hasta la 'Prueba de Joel'. Atlassian tiene una oferta de 10 licencias por $ 10 en algunos de sus productos, lo cual es difícil de superar.

A pesar de todo, la solución a sus problemas de desarrollo va a ser, al menos en parte, cultural. Puede poner estas (u otras) herramientas en su lugar, pero necesitará el apoyo del equipo y la administración, y deberá abordar sus prácticas para garantizar que los desarrolladores las usen. Es posible que se procese un poco de reeducación, porque a los desarrolladores descuidados no les gusta que los obliguen a mejorar su juego. Comenzaría con el servidor de compilación e insistiría en que no se puede liberar ningún código a menos que provenga de una compilación automatizada. Muchas buenas prácticas se saldrán de eso. Puede considerar la posibilidad de adoptar pruebas unitarias y revisiones de códigos cuando sea conveniente para su organización, pero planee hacerlo desde el principio.

+0

Francamente, todos son desarrolladores descuidados. Realmente no tienen ninguna estructura. Soy el DBA y hago todo lo posible para que su entorno funcione. Estoy pensando que dar a cada programador su propia máquina virtual para el desarrollo sería una buena alternativa para eliminar sus privilegios de administrador local. Podríamos usar algo para automatizar sus compilaciones desde SVN al entorno de prueba. – zewsk

0

Si realmente quiere simplificar las cosas, eche un vistazo al concepto de Despliegue continuo, que se está volviendo muy popular. Aquí hay un good introductory post; el objetivo general es implementar drect desde el desarrollo hasta la producción, utilizando estrictas comprobaciones automáticas para eliminar errores.

Una configuración de implementación continua completa puede ser un poco difícil de controlar inicialmente, pero puede comenzar probando este proceso para pasar del desarrollo al control de calidad.

0

Recuerde: no existe el entorno de desarrollo general "ideal" que se puede aplicar en todos los casos. A menudo, las limitaciones técnicas impiden la plena adopción de estas ideas. Como contratista de algunos años de renombre, he descubierto que el peor sistema con el que trabajé no tenía derechos de administrador local, cada pequeña instalación requería un llamado al soporte técnico, y siempre nos maldecían a los desarrolladores por pedirles demasiado.

El mejor escenario que tuve es el siguiente: si va a eliminar los derechos de administrador locales, proporcione una poderosa máquina virtual alojada localmente. Deben tener una DMZ en la red para que puedan hacer lo que quieran con la VM. Si estropean algo, simplemente puede restaurar una VM desde el archivo. Lo importante de este escenario es usar un buen repositorio de fuentes como GIT, Team Foundation Server, SVN, etc. Esta es la forma en que se supone que se debe hacer el desarrollo, sin depender de las estaciones de trabajo de los desarrolladores más allá de escribir el código. .

La lista de este y otros consejos:

permiten a los desarrolladores una total libertad dentro de sus máquinas virtuales (acceso a Internet, instalación de aplicaciones, etc)

uso de un repositorio de control de buena fuente, que cada desarrollador puede bifurcarse a voluntad de. Haga cumplir constantes comprobaciones (como una vez por hora) y tenga un servidor de compilación (integración continua o "CI") que verifique las compilaciones rotas. El servidor de CI debe enviar un correo electrónico a todos los integrantes del equipo cuando se rompa la compilación.

Ofrezca a cada máquina local los mejores recursos que pueda pagar. Escucho este argumento de que 4GB es suficiente para Visual Studio. Nada más lejos de la verdad. Puede optar por seguir con esto, pero créanme: cuando su máquina de desarrollo está buscando en el disco una y otra vez porque cada compilación ocupa mucha memoria, está perdiendo minutos cada hora, horas a la semana, en productividad perdida porque de máquinas lentas

Trate de no mirar a sus desarrolladores de manera detestable: lo sentirán a una milla de distancia y lo ofenderán por ello (¿quiere responsabilizarse de que los desarrolladores descontentos borren el código fuente o introduzcan errores?). Lo más probable es que la razón por la cual son "desarrolladores descuidados" es porque nadie más en la empresa puede gestionar personas. Los mejores equipos están liderados por gerentes de proyectos inteligentes, abiertos y educados. Obtienen lo que necesitan cuando lo necesitan. El costo del software no es NADA en comparación con el costo de los salarios de un desarrollador; sin embargo, sigo escuchando que este o aquel gerente rechazan un producto porque cuesta un gran premio. La última vez fue XML Spy, porque "el Bloc de notas será suficiente". Claro que sí, al igual que las piernas son suficientes en lugar de autos, pero no quiero caminar a todas partes, ¡maldita sea!

Para ir contra la corriente - en realidad creo que eliminar la capacidad de administración de todos los desarrolladores es algo bueno SI puedes crear un usuario de poder con más habilidades. El mayor problema que encuentro del equipo es que las personas aplican parches o instalan software adicional que no han borrado con la administración. La última vez que alguien instaló ReSharper y luego se quejó de que la máquina se estaba moviendo lentamente. Tenían una máquina de 2 GB y ReSharper 5 necesita 4 GB como mínimo para ejecutar Visual Studio 2010.

Adicional: aprenda a desarrollar sin el uso de un mouse. Este es un concepto radical que conozco, pero el mouse es más lento que los atajos de teclado. A menos que el icono esté en la esquina de la página, tarda un segundo o dos en encontrar un ícono y hacer clic. Recordar un atajo es más rápido.

Cuestiones relacionadas