Visual Studio Codespaces
Este nuevo servicio cloud facilita un entorno de desarrollo y permite desarrollar de forma remota, disponiendo de un entorno en cualquier momento y desde cualquier sitio. Además, se puede conectar a él desde Visual Studio Code, Visual Studio 2019 Private Preview o simplemente desde un navegador.
Características
Las principales características son las siguientes:
- Desarrollo remoto. Permite que los usuarios puedan disponer de entornos preparados para determinadas tecnologías, con un bajo coste de administración de máquina, y pudiendo acceder a ellas desde cualquier sitio.
- Environments. Es cada uno de los entornos necesarios para cada proyecto o desarrollo. Codespaces configura el runtime, compilador, depurador, editor y cualquier configuración requerida para el proyecto. Son fáciles y rápidos de crear, desechables y no hay que preocuparse por su mantenimiento. Su coste depende de la máquina que se seleccione, y tiene opciones de suspensión automática lo cual facilita que no se disparen los costes. También permite disponer de un entorno con una capacidad de trabajo mucho mayor que la de nuestro portátil.
- Editores e IDEs. Actualmente, Visual Studio Codespaces soporta estos tres editores:
- Visual Studio Code
- Visual Studio 2019 (Private Preview)
- Visual Studio 2019 versión navegador
- Configuración personal y custom. Se pueden establecer configuraciones a nivel superior, que se pueden cargar desde ficheros
.gitconfig
por ejemplo. También se sincroniza la identidad, temas y configuraciones de Git para que el entorno esté listo con las personalizaciones hemos realizado. Por otro lado, existe una configuración a nivel de entorno del proyecto, en el que se establecen los requisitos del proyecto, de esta forma un environment está adaptado a las necesidades únicas de ese desarrollo, y no afecta o genera incompatibilidades con otros desarrollos.
Nota: Actualmente la configuración de entornos Windows no es posible. En preview hay disponible algunas configuraciones soportadas para VS Code y el editor Web.
Precio
El coste de esta herramienta depende en gran medida del uso y la selección del tipo de instancia, evidentemente a medida que se le agrega potencia el coste se incrementa, pero sigue siendo rentable respecto a otras fórmulas como disponer de una máquina en IaaS para estos menesteres. Fórmula que yo, personalmente, veo muy a menudo en compañeros de trabajo.
Existen estos tres tipos de instancias actualmente, todas ellas con un disco de estado sólido de 64GB.
Tipo | Coste / hora | Coste / mes |
---|---|---|
Basic (2 cores, 4GB RAM) | 0,093€ | 14,88€ |
Standard (4 cores, 8GB RAM) | 0,186€ | 29,76€ |
Premium (8 cores, 16GB RAM) | 0,371€ | 59,36€ |
Para el cálculo de coste mes, asumimos un escenario en el que el mes tiene 160 horas lectivas, que no hay ningún tipo de reunión y se trabaja el 100% del tiempo en Codespaces.
Estos precios son menores comparados con máquinas en IaaS equivalentes. Con Codespaces, una de las bondades que trae de caja, es que se auto-suspenden de forma automática por inactividad en cuatro lapsos de tiempo seleccionables (5, 30, 60 y 120 minutos), lo cual evita tener que preocuparse por la configuración del autoapagado que sí hay que hacer en las Máquinas Virtuales, y que además se realizan en momentos concretos del día. Otra ventaja fundamental es que no es necesario instalar el entorno y se provisionan infinitamente más rápido que las VM.
Let's try
El primer requisito fundamental para poder trabajar con Codespaces, es disponer de una suscripción de Azure. Si aún no tienes una, aquí se puede crear una cuenta con 170€ de crédito y 12 meses de servicios gratuitos.
Después en https://online.visualstudio.com/, iniciamos sesión y accedemos al dashboard de Visual Studio Codespaces.
Para poder empezar a crear un Codespaces, se necesita establecer un plan, para ello seleccionamos en la parte superior el plan en el que queremos trabajar, si no hay disponible ninguno, podemos crear uno.
En la configuración avanzada, se puede determinar qué grupo de recursos de la suscripción vamos a utilizar, el nombre del plan y el tipo de instancia predeterminada que utilizará este Plan.
Una vez creado o seleccionado el plan, podemos crear el Codespace, pulsando en el botón "Create Codespace". En este panel podemos seleccionar el nombre del Codespace, qué repositorio git se va a utilizar, el tipo de instancia y el tiempo de inactividad para que se autosuspenda la máquina.
Pulsamos en crear, y la instancia se provisiona en a penas un minuto aproximadamente y ya conectado al repositorio que le hemos indicado.
El entorno es muy similar a Visual Studio Code nativo, cambian algunos de los botones laterales, pero sobre todo destaca el menú hamburguesa, que es el que da acceso a la clásica barra de menús de la aplicación en el sistema operativo.
Por otro lado, en Visual Studio Code debemos autenticarnos en CodeSpaces, para ello necesitamos tener instalada la extensión de Visual Studio Codespaces.
Al completar la instalación, accedemos a la extensión para conectar a Codespaces, esto nos solicitará hacer login, para seleccionar el plan en Azure y tras seleccionar uno, podremos conectar con el Codespace que hemos creado antes.
En este ejemplo estamos conectando a un repositorio de GitHub, para poder disponer de la posibilidad de hacer Pull Request, necesitaremos hacer login con nuestra cuenta de GitHub.
Una vez está preparado el entorno, podemos trabajar indistintamente en VS Code o en el navegador, si conectamos en el navegador al Codespace, accedemos al menú hamburguesa y abrimos un nuevo terminal, en él, escribimos dotnet new reactredux
para crear un nuevo proyecto con la plantilla de una SPA React+Redux con backend de servicios de .NET Core. Al finalizar la creación de la plantilla, escribimos dotnet run
en el terminal.
Tras ejecutarse ambos comandos, si navegamos a http://localhost:5000 o https://localhost:5001, podemos previsualizar la nueva aplicación spa que hemos creado.
A modo de ejemplo, al estar conectado al Codespace con el cliente Web y con el cliente pesado, si realizamos cambios en uno u otro, se puede visualizar cómo se sincronizan entre ambos en tiempo real.
Conclusiones
Esta nueva solución nos permite trabajar de forma colaborativa y con un hardware más potente que el que quizás tengamos en nuestra máquina física, además de esto, nos permite tener configuraciones independientes ad-hoc para el proyecto en el que estamos trabajando en ese momento, lo cual es muy útil porque a lo largo del tiempo vamos dejando de utilizar ciertos elementos que han sido necesarios para otros desarrollos y nunca encontramos un momento para "limpiar" el IDE.