Usar máquinas virtuales para desarrollar

Hoy he dado por chat una pequeña “clase magistral” de por qué mola más programar usando máquinas virtuales. Os dejo el extracto, que seguro que a alguien le interesa.
Inconvenientes:
Tardaras un rato hasta que lo montes, la primera vez. Creo que es el único inconveniente! Y cuando lo hagas varias veces, será cada vez más rápido.
Ventajas:
  • Puedes montar un entorno de desarrollo para cada proyecto que necesites, que sea un clon de tus máquinas de preproducción y producción. Así tendrás menos problemas de entorno.
  • Puedes mover la máquina donde quieras y montarla en otros servidores si quieres (proveedores en la nube, por ejemplo). O puedes compartirla con tu equipo de desarrollo para que todos trabajéis sobre el mismo entorno, independientemente de si usan linux, windows o mac.
  • Puedes trastear todo lo que quieras, sin enmarronar tu máquina fisica, que se queda limpia y sin problemas (no quieres ver un mac con mysql, apache, nginx, tomcat, lucene, nosql, memcached, sendmail, mongrel, xdebug haciendo profiling, etc… todo a la vez).
  • Puedes emular entornos reales. Por ejemplo, si tienes una máquina de produccion para BD y busquedas, y otra para frontal, puedes tener dos virtuales, una con cada cosa, y levantarlas o tirarlas a necesidad.
  • Si formateas el ordenador, la máquina sigue estando ahi, con sus backups o todo lo que te de la gana :)
  • ¿Se te ocurre alguna mas?
¿Cómo montarlo?
  1. Virtual box, gratis y molón. Sino, VMWare, u otras opciones comerciales
  2. Descarga ubuntu server. Si te ves con pelotas, la última debian (aunque ya no es como los viejos tiempos…). Si además quieres dedicarle tiempo, compila tu mismo los paquetes, recompila el kernel y pasa una noche de las divertidas de verdad que tanto nos gustan.
  3. En principio ya tendrás todo montadito, apache, php, mysql, etc… sino, apt-get y a molar. Monta los entornos de desarrollo dominios que necesites en tu apache, nginx o el que toque.
  4. Monta una carpeta compartida de tu máquina real a la virtual, donde tengas el código de tu aplicación. Tu programas en tu windows (o tu mac), ejecutas (o compilas) en la virtual. Si haces algún deploy con ant o similares, o maven, en la máquina virtual.
  5. Desde tu maquina fisica, accedes a la IP de la virtual. pero primero le añades un host (local.midominio.com, o devmidominio.com por ejemplo, el segundo caso es mejor si tu proyecto trabaja con subdominios).
  6. El resto, igual que siempre. Git parriba, git pabajo (o SVN), no necesitas hacer deploy porque la máquina virtual de DEV coge el código de trabajo actual de tu repositorio, pero es (teoricamente) la misma configuracion que tus servers de preprod y prod
  7. Si tienes un problema, sabes que al menos tienes coherencia de servers (y no tienes problemas porque en una máquina tienes php5.1 y en otra 5.2 con un parche raro de ubuntu que no hay en redhat, por ejemplo).
  8. A programar!



Discútemelo

consultoria web

V2.0