3USD tu primer mes de Premium 馃槺 Canjear promo No me interesa

notifications Notificaciones

Marcar todas como le铆das

Ver m谩s

lightbulb_outline

Wsl vs Vagrant vs Docker

timer 4 Min.

remove_red_eye 1805

calendar_today 13/11/19

Portada del art铆culo con el t铆tulo Wsl vs Docker vs Vagrant

Una de las razones por lo que a muchas personas no les gusta el desarrollo en windows, es por el hecho de que muchas veces es dif铆cil instalar o ejecutar sotfware, como claro ejemplo podemos ver a ruby on rails, as铆 como a muchas otras tecnolog铆as.

Aunque, actualmente el desarrollar en windows es opcional, esto es debido a todas las herramientas que podemos usar, herramientas como lo son docker, vagrant y el wsl, nos permiten trabajar con linux en windows haciendo el desarrollo menos painful.

En este art铆culo veremos cuales son las ventajas y desventajas de usar ya sea docker, vagrant o wsl. Antes de continuar tenemos que tener en cuenta, que la 煤nica forma de poder correr linux en windows es usando la virtualizaci贸n, si, esto quiere decir que no importa si usas vagrant ,docker o el subsistema de linux , al final de d铆a estaremos usando una maquina virtual.

Docker

Comenzando nos encontramos con la opci贸n actualmente m谩s popular, docker sin dudad es la opci贸n #1 para desarrolladores windows ya que nos provee una forma de correr nuestras aplicaciones en un entorno de linux de una manera muy r谩pida, adem谩s que contamos con muchas herramientas con entornos pre-configurados, listos para el desarrollo.

Como ventajas de desarrollar en docker nos podemos encontrar con la r谩pides de definir entornos, esto es debido a las imagenes compiladas y a la orquestaci贸n con docker-compose, no olvidemos el eslogan Build, Share, and Run Any App, Anywhere, esto debido a que docker es multiplataforma, b谩sicamente podemos correr docker en cualquier ambiente linux, si esto incluye a maquinas virtuales 馃槷.

Otra ventaja y creo que es la m谩s importante es que con docker, directamente desarrollamos en un ambiente de producci贸n, nosotros podemos desarrollar nuestra app dentro de un contenedor y al finalizar automaticamente hacer deploy del mismo, con esto nos aseguramos que nuestra aplicaci贸n se ejecutar谩 exactamente como en desarrollo.

Como una desventaja que podemos encontrar, es el hecho de interactuar con la terminal interna del contenedor, es decir imaginemos que tenemos nuestro stack, de php y mysql, y queremos interactuar con php, de primeras instancias tendr铆amos que ejecutar docker exec -it container bash y que pasa si ahora queremos ejecutar otra terminal para ejecutar el servidor, tendr铆amos que volver a ejecutar el mismo comando para cada terminal con la que necesitemos interactuar, esto sin duda es una desventaja ya que muchas veces perdemos valioso tiempo ejecutando terminales.

Aunque por otro lado nos podemos encontrar con soluciones para esto, soluciones que vienen con un conjunto de scripts que hacen el desarrollo en docker divertido y sobre todo r谩pido.

Como ejemplo de estas podemos encontrar.

Como comentario adicional si t煤 eres un usuario de vscode, ahora podemos integrar vscode para el desarrollo con contenedores 馃槺 en C贸digoFacilito tenemos un video de como hacer la integraci贸n con este pluging, puedes ver el video aqu铆 馃憠 video.

Wsl

Continuando nos encontramos con el wsl o tambi茅n conocido como subsistema de linux para windows, esta es la soluci贸n nativa que viene con windows y nos permite ejecutar diferentes distro(Sistemas operativos) como ubuntu debian y opensuse, dentro de las ventajas que podemos encontrar es que el wsl tiene integraci贸n directa con el sistema de archivo de windows es decir nosotros podemos ejecutar comandos de linux dentro de cualquier directorio de nuestro sistema operativo.

Otra ventaja que podemos encontrar es que esta una soluci贸n nativa, es decir unicamente tenemos que instalar y ejecutar el launcher para comenzar a ejecutar comandos de linux, adicionalmente a esto si tu eres usuario de vscode puedes instalar el plugin Remote - WSL para poder integar la terminal dentro del editor.

Como desventaja podemos decir que es una soluci贸n un poco lenta, personalmente he notado esto al tratar de correr proyectos con grandes cantidades de archivos, como ejemplo puedo mencionar que al trabajar en el desarrollo de la plataforma de C贸digoFacilito al ejecutar el servidor este tarda aproximadamente entre 40 segundos y 1 minuto en estar listo, algo que en una versi贸n de linux nativa tomar铆a aproximadamente 5 segundos.

Otra desventaja es que wsl viene con ciertas limitaciones es decir, nosotros no podemos ejecutar docker, esto es debido a ciertas caracteristicas de linux que nos est谩n implementadas.

Vagrant

Como 煤ltima soluci贸n nos encontramos con vagrant, vagrant es una herramientas para el manejo del ciclo de vida de maquinas virtuales para el desarrollo, con vagrant podremos crear, eliminar y aprovisonar maquinas virtuales, en C贸digoFacilito acabamos de lanzar un curso de introducci贸n de esta herramienta totalmente gratuito 馃憠 curso vagrant .

Dentro de la ventajas nos encontramos con.

  • Portabilidad
  • Cross-Platform

Una de las ventajas de usar vagrant es que es multiplataforma y portable nosotros podemos ejecutar vagrant en los 3 sistemas operativos m谩s populares linux, windows y mac, esto nos da mucha ventajas ya que podemos trabajar en sistemas operativos diferentes pero con un entornos de desarrollo identicos, con esto nos evitamos decir la frase "En mi maquina si funciona" 馃槄.

Otra cosa interesante de trabajar en entornos virtuales es que nos acerca m谩s a un ambiente de producci贸n ya que dentro de nuestra maquina podemos replicar la misma configuraci贸n que en nuestro servidor de producci贸n, de hecho muchas empresas usan vagrant para definir entornos de desarrollo y staging.

Como comentario adicional si tu eres un usuario de vscode, ahora podemos integrar vscode para el desarrollo en entornos remotos 馃槺 en C贸digoFacilito tenemos un video de como hacer la integraci贸n con este pluging, puedes ver el video aqu铆 馃憠 video.

Ganador

Y entonces quien es el ganador?, esto como en casi todo depende de que con herramientas te sientas [email protected], hace ya un par de a帽os que he usado las 3 herramientas y personalmente, creo que el ganador es sin duda trabajar usando una maquina virtual con virtualbox usando vagrant, esto debido a muchos factores como la velocidad de ejecuci贸n, y cierta compatiblidad de aplicaciones como, poder ejecutar docker.

Aunque creo que el ganador al final del d铆a ser谩 wsl en su versi贸n 2 que saldr谩 en la pr贸xima actualizaci贸n de windows en mayo 2020, en la cual veremos muchas mejoras a la versi贸n 1, asi como la compatibilidad de poder ejecutar docker, esto es debido a que esta nueva versi贸n tendr谩 una versi贸n del kernel de linux 馃槺.

Y para ti cu谩l es la mejor alternativa para desarrollar en windows ?

Otros art铆culos del blog

Comunidad