¿Por qué ayuda conocer la virtualización desde la perspectiva de un programador? Excepto las pruebas y el desarrollo en varias plataformas diferentes sin la necesidad de cambiar entre sistemas operativos, ¿hay alguna razón particular por la cual la virtualización es importante para un programador? ¿Hay algún detalle que debe tenerse en cuenta antes de desarrollar en instancias virtuales?Virtualización y por qué es bueno para los programadores
Respuesta
Bueno para el desarrollo, porque tiene la misma configuración de servidor en la máquina virtual que en el servidor de producción.
https://stackoverflow.com/questions/905926/developer-software-setup
desde una aplicación de espacio de usuario no debería haber ninguna diferencia el desarrollo de un sistema operativo virtualizados frente a un sistema operativo normal. Puede haber algunos errores si su código hace suposiciones explícitas del tamaño de la memoria de la máquina y del número de procesadores y cree lo que el hipervisor le dice.
Una de las principales ventajas es tener todo su entorno de desarrollo como un único archivo de imagen. Tengo una versión perfectamente configurada de Windows Server, Visual Studio, ReSharper, etc. Puedo probar fácilmente una nueva versión de algo en una copia de esta máquina virtual sin preocuparme de que cause problemas.
También puedo hacer una copia de seguridad de todo mi entorno de desarrollo para transferirlo a otra máquina física muy fácilmente. He pasado por 3 máquinas solo en esta oficina, así que fue un salvavidas en sí mismo.
La única desventaja real que veo es el rendimiento. Por lo general, debe utilizar menos núcleos de CPU físicos de los que realmente tiene y menos memoria. Sin embargo, con una máquina suficientemente potente, esto no es un gran problema.
Editar: Como dijo nader, la E/S también es importante para la mayoría de los proyectos. Aunque desarrollar en una máquina virtual significa una penalización de E/S bastante grande en comparación con una instalación nativa del sistema operativo, en la práctica rara vez encuentro que sea un problema. Las capacidades superiores de acceso aleatorio de los SSD están ayudando a mitigar este inconveniente también.
Si desarrolla un controlador o algo muy cercano al hardware con alto riesgo de dañar la máquina, estará contento de trabajar en una máquina virtual.
Volver a un estado anterior es más fácil que reparar un sistema operativo dañado.
De acuerdo, este parece uno de esos momentos que te gustaría desarrollar en una máquina virtual en lugar de en tu máquina. – hyperboreean
Lo uso para probando nuestro instalador, porque es importante comprobar si la aplicación funcionará en una instalación limpia del sistema operativo.
Solía realizar estas pruebas manteniendo un disco duro con una nueva instalación del sistema operativo y haciendo una copia de ese disco para (casi) cada nueva ejecución de prueba. Esto llevó mucho tiempo, y la solución de máquina virtual me ha salvado mucho de tiempo. Tenga en cuenta que esto incluso le permite realizar la depuración remota tan fácilmente como cuando usa dos máquinas no virtuales.
Nota: Si usted está interesado, estoy usando VirtualBox, que es una muy buena herramienta y libre de virtualización.
Si está desarrollando en un entorno virtual, querrá asegurarse de saber qué especificaciones se utilizaron para crear el entorno. Si tiene una máquina de 4 Gig y crea un entorno virtual con 1 Gig, querrá asegurarse de que las cosas en su desarrollo no crezcan hasta el punto de sobrepasar la memoria. Esto causará leves problemas de rendimiento.Personalmente me topé con esto y fue bastante complicado rastrearlo. El escenario era que estaba arreglando un error y probándolo en un entorno virtual. Por cierto, no configuré el entorno virtual ... La aplicación recibió un golpe de rendimiento debido a todo el intercambio de memoria que estaba teniendo lugar.
Un buen uso para un entorno virtual es cuando desarrolla aplicaciones que entran en conflicto con Windows Gina. Es mucho más fácil reinstalar un entorno virtual que una PC completa ... (aquí también se ha hecho).
Me sorprende que nadie haya mencionado la facilidad de implementación. Todo lo que necesita hacer es obtener la compilación en las O/S virtuales y luego puede copiar la imagen en tantos servidores nuevos (ejecutando algún tipo de solución de virtualización [como VMWare]) como desee, escalando fácilmente su aplicación.
que hacer todo mi desarrollo en una instancia XP virtual en VMware Fusion para que pueda usar un Mac para todo y todavía escribir código .NET ;-)
Tenemos un gran número de diferentes versiones/cliente personalizaciones de nuestro software, y no es posible que 2 instalaciones de nuestro software coexistan en la misma máquina. La virtualización nos permite reemplazar las 50-60 máquinas físicas que necesitamos para la prueba y la reproducción problemática con 2 o 3 servidores virtuales: toma alrededor de 10 minutos hacer una copia de una plantilla VHD que tenemos y crear una nueva máquina virtual, y siempre que asigne 1-2 Gb de RAM, el rendimiento es comparable al de una máquina física (lenta).
Las máquinas virtuales también son excelentes para las máquinas de construcción.
Personalmente realizo todo mi desarrollo en mi máquina deskop para un mejor rendimiento y depuración remota en máquinas virtuales. No uso máquinas virtuales en mi escritorio, ya que consume demasiada memoria RAM, tenemos servidores virtuales dedicados para eso.
Ser capaz de completamente restablecer el estado del sistema es muy útil para depurar aplicaciones que modifican su entorno - Si las acciones se repiten después de un reinicio, y están limitadas al entorno de la sala de pruebas de la máquina virtual, están más o menos garantizados para obtener el mismo resultado.
- registrar el estado de un error en un programa, y enviarlo al desarrollador (junto con toda la "máquina").
- Probando su código en varios O.S, algunos de los cuales no tiene.
- Trabajando en un entorno más protegido, asegurándose de que el código no dañe el sistema: útil para comprender programas peligrosos, como virus, y desarrollar seguridad contra él, para escribir programas de disco duro potencialmente incorrectos y todo lo que pueda tener efectos catastróficos en su sistema.
- Escriba fácilmente su propio O.S sin la necesidad de escribir sobre sectores de arranque "reales", un acto potencialmente dañino (Espero que esto no sea nuevo ...).
- Utilice rápidamente herramientas y programas que no encuentre en su propio O.S.
- Demuestre un programa en varias ocasiones, restaurando una máquina virtual, de forma más rápida y con menos probabilidades de error, que tratando de recrear el estado en los minutos previos a la demostración.
- Conectado de forma menos directa a la programación, pero navegar por una máquina virtual (por ejemplo, para ver documentación) tiene el valor añadido de que su propio sistema (y código) importante no se verá perjudicado por programas maliciosos.
Según mi experiencia en la mayoría de los casos, la respuesta suele ser "no" (cuando se eliminan las pruebas y la orientación a múltiples plataformas). Ambos son motivos importantes para familiarizarse con las soluciones de VM de "escritorio". Otros han hecho un excelente trabajo al enumerar excepciones raras como la depuración de códigos del kernel.
Hay algunas peculiaridades que debe tener en cuenta cuando se ejecuta en una máquina virtual. Esta no es una lista exhaustiva:
Pérdida de precsision o incluso la inversión del tiempo en altas temporizadores resolución debido a la emulación de los recursos de hardware (depende un poco de la plataforma VM y el sistema operativo)
interfaces de red virtuales generalmente puenteado. Hemos visto un comportamiento extremadamente extraño en el sistema host con una aplicación que establece su propio puente entre las interfaces virtuales, comportamiento que lógicamente no debería afectar al host en una de las principales soluciones de VM.
Modelos de uso: si su producto tiene códigos de licencia Orwellian o registra un comportamiento dependiente del estado al interactuar con sistemas remotos, debería contar lo que sucedería si un sistema se "pausara" y "reiniciara" o reiniciara desde un "estado anterior" ". Normalmente, este tipo de cosas se tendría en cuenta de todos modos en una implementación sólida.
A veces son necesarias, porque la plataforma que se está programando no es compatible con el entorno de desarrollo estándar . Un ejemplo de esto es Sharepoint. A partir de Sharepoint 2007, aún necesita un sistema operativo de servidor para instalar Sharepoint 2007, WSS y las extensiones de Visual Studio Sharepoint (VseWSS).
Por lo tanto, para Sharepoint tengo que usar una VM Server de Windows para hacer mi trabajo de desarrollo. En cuanto a Sharepoint 2010, son compatibles con las instalaciones de Vista y 7 x64, pero seguiré usando una máquina virtual, porque no quiero que SharePoint en mi máquina principal disminuya la velocidad de todo. En cambio, lo quiero en una máquina virtual donde los servicios están activados cuando es necesario y desactivado cuando no lo hago sin tener que apagar/encender manualmente cada servicio. Esto además de las muchas buenas respuestas publicadas anteriormente.
- 1. ¿Por qué Sass es bueno?
- 2. Si NSDictionary es bueno para valores emparejados, ¿qué es bueno para los valores triples?
- 3. ¿Qué sistema móvil es para programadores?
- 4. Quienes usan la virtualización, ¿es el servidor vmware gratuito adecuado para programadores?
- 5. ¿Por qué LuaJIT es tan bueno?
- 6. ¿Es bueno learncpp.com para principiantes?
- 7. por qué configurar ScrollViewer.CanContentScroll para falsa deshabilitar la virtualización
- 8. DVCS Choices - ¿Qué es bueno para Windows?
- 9. ¿Qué tan bueno es VTK?
- 10. ¿Qué IDE utilizan los programadores CLISP?
- 11. ¿Qué tan bueno es startswith?
- 12. ¿Qué tan bueno es SecRandomCopyBytes?
- 13. ¿Qué es un framework PHP y cuál es bueno?
- 14. ¿Por qué try {...} finalmente {...} es bueno; prueba {...} catch {} ¿malo?
- 15. ¿Es bueno el enfoque paquete por función?
- 16. Dos preguntas para los programadores antiguos
- 17. Modelado 3D para programadores
- 18. ¿Qué es un ID Jsp bueno
- 19. Sitios para principiantes en los programadores de Delphi
- 20. ¿Qué es un motor de juegos bueno y gratis?
- 21. Herramientas estadísticas para programadores
- 22. ¿Qué tiene de bueno gettext para los archivos de idioma?
- 23. ¿Qué es - [NSString sizeWithFont: forWidth: lineBreakMode:] bueno para?
- 24. ¿Recomendarías vim/emacs para los programadores principiantes?
- 25. ¿Qué es el "Hola mundo"? de algoritmos genéticos bueno para?
- 26. extjs: lo que es bueno para xtype
- 27. ¿Es bueno Ninject para aplicaciones de producción?
- 28. ¿Es bueno Cassandra para almacenar archivos?
- 29. Virtualización y computación en la nube: ¿por dónde empezar?
- 30. ¿Hibernate es bueno para el procesamiento por lotes? ¿Qué hay del uso de la memoria?
El rendimiento en términos de E/S es un problema mayor. El código de compilación, etc. necesita una buena E/S, especialmente para proyectos más grandes. –
Solo revisando esto. Las preocupaciones de E/S no son un problema con la llegada de SSD baratos. – kwcto