Pregunta

Recientemente, el zumbido de la virtualización ha llegado a mi lugar de trabajo donde los desarrolladores prueban las máquinas virtuales en sus computadoras. Anteriormente he escuchado a varios desarrolladores diferentes acerca de cómo configurar una máquina virtual en sus computadoras de escritorio para mantener sus entornos de desarrollo limpios.

Hay muchos productos de software de máquinas virtuales en el mercado:

Me interesa saber cómo usa la virtualización de manera efectiva en su trabajo. Mi pregunta es ¿cómo utiliza las máquinas virtuales para el desarrollo diario y por qué motivo?

¿Fue útil?

Solución

Acabo de construir una máquina realmente robusta en casa para poder ejecutar varias máquinas virtuales a la vez. Sin embargo, mi caso es probablemente extremo, pero aquí está mi lógica para hacerlo.

Pruebas

Cuando pruebo, particularmente una aplicación de escritorio, normalmente creo varias máquinas virtuales, una para cada plataforma en la que mi software debería ejecutarse (Windows 2000 / XP / Vista, etc.). Si los sabores de 32 y 64 bits están disponibles, también construyo uno de cada uno. También juego con la configuración de hardware de la VM (por ejemplo, mucha memoria RAM, poca memoria RAM, 1 núcleo, 2 núcleos, etc.). Encontré muchos pequeños bichos de esta manera, que definitivamente lo habrían logrado en la naturaleza si no hubiera usado este enfoque.

Este enfoque también hace que sea fácil jugar con diferentes escenarios de software (¿qué sucede si el usuario que instala el programa no tiene .NET 3.5 sp1? ¿Qué sucede si no tiene el componente XXX? etc.?

Desarrollo

Cuando desarrollo, tengo una máquina virtual que ejecuta mis servidores de base de datos (SQL2000 / 2005/2008). Esto es por dos razones. En primer lugar, es más realista. En un entorno de producción, su aplicación probablemente no se ejecuta en el mismo cuadro que la base de datos. ¿Por qué no replicarlo cuando te desarrollas? Además, cuando no estoy desarrollando (recuerda que esta también es mi máquina doméstica), ¿realmente necesito tener todos esos servicios de base de datos funcionando? Sí, podría encenderlos y apagarlos manualmente, pero es mucho más fácil encender una máquina virtual.

Clientes

Si quiero mostrar a un cliente el trabajo web que he hecho, puedo poner una sola VM en la DMZ y él puede iniciar sesión en la VM y jugar con el proyecto web, mientras que el resto de mi red / computadora es seguro.

Compatibility

Vista64 es ahora mi máquina principal. Cualquier hardware / software antiguo que poseo no funcionará bien con ese sistema operativo. Mi solución es tener Windows XP 32 como VM para todos esos elementos.

Otros consejos

Aquí hay algo que no se ha mencionado todavía.

Cada vez que un proyecto ingresa al modo de mantenimiento (también conocido como abandonded), creo una VM con todas las herramientas, bibliotecas y el código fuente necesario para construir el proyecto. De esa manera, si tengo que volver a ello un año después, no apostaré por ninguna herramienta o biblioteca mejorada en mi estación de trabajo.

Cuando comencé en mi empresa actual, la mayoría del personal de soporte / dev / PM ejecutaba Virtual PC con 1-3 VM en su escritorio para realizar pruebas.

Después de unos meses, armé una propuesta y ahora usamos un servidor VMware ESXi que ejecuta un grupo de máquinas virtuales (todas las 24 horas al día, 7 días a la semana) para que nuestro personal de soporte pruebe los problemas de los clientes y reproduzca los problemas. Tenemos máquinas virtuales de Windows 2000 / XP / Vista con cada Office 2000/2002/2003/2007 instalado (así que son 12 máquinas virtuales) más algunas máquinas virtuales de prueba más generales, algunas máquinas Server 2003/2008 que ejecutan Citrix, Terminal Services, etc. Básicamente la mayoría de las veces, cuando llegamos a una nueva configuración de cliente que necesitamos depurar, y es probable que otros clientes también tengan esa configuración, configuraré una VM para ello. (p. ej., solo estamos utilizando tres máquinas virtuales de 64 bits en este momento, principalmente de 32 bits)

Además de eso, el mismo servidor ejecuta una máquina virtual XP que uso para crear instaladores (InstallShield, WiX), depuración (VS 2005) y localización (Lingobit), así como una segunda máquina virtual que nuestros desarrolladores utilizan para realizar pruebas automatizadas (TestComplete ).

A las máquinas virtuales de desarrollo e instalador se les ha asignado mayor prioridad y ambas están configuradas como máquinas virtuales de doble CPU con 1 Gb de memoria. Las máquinas virtuales restantes tienen la misma prioridad y 256-1Gb de RAM.

Todo se ejecuta en un Xeon de cuatro núcleos con 8 Gb de RAM que ejecuta ESXi y raid de hardware (4x1Tb RAID10)

Para una inversión de poco más de US $ 2.5k, hemos mejorado la productividad en 10 veces (imagine el tiempo de inactividad mientras que una falta de soporte instala una versión anterior de Office en su escritorio para replicar un problema del cliente o el tiempo que no puedo usar Mi escritorio porque estamos construyendo instaladores). El siguiente paso será duplicar la memoria RAM a 16Gb a medida que agregamos más máquinas virtuales con Windows Server 2008 y Vista.

Todavía tenemos máquinas virtuales extrañas en nuestros equipos de escritorio (tengo versiones localizadas de Windows, Ubuntu y Windows 7 ejecutándose en VMware Workstation, por ejemplo) pero las configuraciones comúnmente usadas en gran medida se han descargado en un servidor dedicado que podemos todos se conectan de forma remota en. Mucho, mucho más fácil.

La virtualización (con instantáneas o discos no persistentes) es realmente útil para probar la instalación del software en una configuración limpia conocida (es decir, no queda nada de las instalaciones con errores anteriores de su software).

Tener su cuadro de desarrollo en un solo archivo (con una Máquina Virtual) hará que sea mucho más fácil hacer copias de seguridad y restaurar si se produce un problema.

Además de eso, también puede llevar su caja de desarrollo portátil a diferentes máquinas, ya que no está restringido en esa única máquina en particular en la que normalmente trabaja.

No solo eso, sino que también puede probar en diferentes sistemas operativos a la vez, con un solo sistema operativo instalado en cada archivo de máquina virtual que tenga.

Créeme, esto te ahorrará una gran molestia cuando hagas los trabajos que mencioné anteriormente.

Otro buen caso de uso para máquinas virtuales es crear una red virtual de máquinas. Por ejemplo, puede abrir máquinas que ejecutan los diferentes niveles de la pila de aplicaciones, cada una en su propia máquina virtual. Piense en ello como el centro de datos de un hombre pobre.

Estas máquinas virtuales también pueden aparecer disponibles en su red física, por lo que puede usar RDP o similar para obtener una sesión de terminal remota con ellas.

Puede tener una máquina robusta (mucha memoria) ejecutando estas máquinas virtuales, mientras accede a ellas de forma remota desde otra máquina, como una computadora portátil, o la máquina que tenga con la mejor pantalla.

Uso una máquina virtual en Windows para ejecutar Linux. Aunque ya existe una versión de emacs para Windows, usarla en Linux simplemente se siente más gratificante por alguna razón.

Mantener las computadoras archivadas

Tengo la situación de que las escuelas en mi región están cerradas, pero su sistema financiero debe mantenerse por hasta 2 años para garantizar que se paguen todas las facturas pendientes. Esto solía manejarse manteniendo el hardware de las escuelas mothballed que tuvieron algunos problemas:

  • Esto desperdició los escasos recursos de hardware y ocupó mucho espacio físico.
  • Los oficiales de finanzas tenían que estar físicamente presentes en el hardware para trabajar en cada sistema.

Hoy alojo a cada escuela en su propia caja virtual dentro de un único host físico. Cada sistema individual es accedido por rdp en el número de IP del host, pero con su propio número de puerto y la seguridad original de cada escuela se mantiene.

Los oficiales de finanzas ahora pueden trabajar en las escuelas con mothballed sin tener que viajar a donde están físicamente ubicados, hay más espacio físico en la sala de servidores y la copia de seguridad de todas las escuelas con mothball a la vez es un proceso automatizado simple.

Con cada escuela en su propia vbox no hay forma de contaminación cruzada de datos entre sistemas. Muchos miles de dólares en hardware también se liberan para la redistribución.

La virtualización parece ser la solución perfecta para este problema.

Utilicé el enfoque de virtualización utilizando VMWare Server cuando la tarea que tenía delante era probar un entorno en clúster de WebSphere Application Server. Después de configurar VMWare Server, creé una nueva máquina virtual e hice todas las instalaciones de software que necesitaría como WebSphere App Server, Oracle, WebSphere Commerce, etc., después de lo cual apagué la máquina virtual y copié la imagen del disco duro virtual en dos archivos, uno como clon de VM y otro como copia de seguridad.

Creé una nueva máquina virtual y asigné una de las imágenes de disco copiadas, así que tengo dos sistemas en funcionamiento ahora que me permitieron probar el mismo escenario de un entorno agrupado. Tomé una instantánea de la máquina virtual a través de VMware y si me ponía al día con alguna actividad, revertiría los cambios a la instantánea tomada, por lo que pasaría al estado anterior y aumentaría mi productividad en lugar de tener que averiguar qué invertir. La imagen de disco de respaldo también se puede usar si necesito volver a un estado muy antiguo, en lugar de tener que empezar desde cero.

La funcionalidad de instantáneas que existe tanto en VMWare como en la PC / servidor virtual de Microsoft es lo suficientemente buena como para considerar la virtualización para escenarios en los que cree que podría hacer cambios importantes, que pueden no ser tan fáciles de revertir.

Por lo que sé, no hay nada como Parallels en Mac, sino trabajo en lugar de pruebas.

La integración (con " coherencia " ;, su máquina virtual no se está ejecutando " en una ventana " de su sistema host, todos los programas en el sistema guest tienen su ventana adecuada en el sistema host) es espléndida y le permite llenar todo ( TODOS! ) lagunas:
Mi compañero de trabajo ha configurado que Outlook (no hay nada como Outlook para MacOsX) en Windows aparece cuando hace clic en un " mailto: " -link en una página web, navega con Firefox en Mac!
En la otra dirección, si recibe un PDF, hace doble clic en el archivo adjunto en Outlook (en Windows) que abre el archivo PDF en el visor de PDF integrado en Mac.

VirtualBox también ofrece esta posibilidad de separación de ventanas (al menos cuando Windows se ejecuta en la VM en Linux), que es realmente útil para el trabajo.

Para las pruebas, etc., por supuesto, no hay nada como un entorno limpio y separado.

Tenemos un servidor físico dedicado a alojar máquinas virtuales en nuestro entorno de desarrollo. Las máquinas virtuales se suben y bajan regularmente y se utilizan para probar el software en entornos operativos estándar conocidos.

También es muy útil cuando queremos que una aplicación se ejecute en un dominio que sea diferente al entorno de desarrollo.

Además, la organización para la que estoy trabajando está en la etapa de planificación para crear un gran campo de pruebas virtual. Esta será una gran red de máquinas, ubicadas en su propia red, y todo el personal interno de la organización, los contratistas y los proveedores externos podrán configurar su software con fines de prueba antes de implementarlo en el entorno de producción. Las máquinas virtuales reflejarán las máquinas físicas en el entorno de producción.

Suena bien, pero todos son un poco escépticos: esta es una organización gubernamental ... La burocracia y la burocracia probablemente convertirán esto en una gran pérdida de tiempo y dinero.

Si estamos usando una máquina virtual (vpc 2007, Virtual Server 2005, aplicación VMWare, etc.)

1.Podemos ejecutar múltiples sistemas operativos (windows98,2000, XP, Vista, Windows Server 2003,2008, Windows 7 / linux / solaris) en un único servidor

2.Podemos reducir los costos de hardware y amp; Espacio del centro de datos

3.Podemos reducir la potencia & amp; Costo de enfriamiento de CA.

4.Podemos reducir el recurso de administración,

5.Podemos reducir el costo de la aplicación

6. Podemos ejecutar ADS / DNS / DHCP / Exchange / SQL / Sharepoint Server / File Server ... etc

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