Después de mucho, mucho, mucho, mucho, mucho tiempo esperando, por fin está aquí la funcionalidad de desarrollo local de Dynamics 365 F&O… en preview pública. Es un poco diferente desde la primera vez que oímos hablar de esto en el MBAS de 2019… pero abre un nuevo escenario para los desarrolladores.

No voy a entrar en muchos detalles sobre la nueva experiencia unificada para desarrolladores, que así se llama ahora, pero si quieres saber qué necesitas para usarla y cómo configurarla, puedes leer esta entrada del blog de Aurélien Clere: Dynamics 365 FinOps Unified developer experience.

Hoy explicaré qué es Microsoft Dev Box y cómo podemos utilizarlo con las herramientas de desarrollo local de Dynamics 365 F&O. También conoceremos el coste, y en qué escenarios podríamos beneficiarnos de Microsoft Dev Box como nuestro entorno de desarrollo. Ya sabéis, lo mejor de los dos mundos, o lo peor… 🤣.

Mezlando la nube y herramientas locales...
Mezlando la nube y herramientas locales…

Pero antes…

¿Qué es Microsoft Dev Box?

Microsoft Dev Box es un servicio de Azure que podemos utilizar para desplegar máquinas virtuales listas para usar para desarrollo. ¿Para desarrollo en X++? No, está orientado a… bueno a cualquier cosa que Visual Studio tenga out-of-the-box como .NET, Azure, Python, etc. ¡Pero eso no significa que no podamos usarlo para desarrollo en X++! Lo veremos más adelante.

¿Qué podemos hacer con Microsoft Dev Box?

  • Instalación y configuración sin problemas: Microsoft Dev Box permite a los equipos configurar rápidamente entornos de desarrollo preconfigurados con las herramientas, bibliotecas y configuraciones necesarias. Esto reduce el tiempo dedicado a la configuración del entorno y la solución de problemas, lo que permite a los desarrolladores centrarse más en la codificación.
  • Colaboración y coherencia: Dado que las Microsoft Dev Boxes están basadas en la nube, los equipos de distintas ubicaciones pueden trabajar en un entorno coherente. Esto garantiza que todos trabajen con el mismo conjunto de herramientas y configuraciones, reduciendo el problema de «funciona en mi máquina».
  • Recursos potentes y escalables: Microsoft Dev Box proporciona acceso a recursos escalables en la nube, lo que significa que los desarrolladores pueden aprovechar la potencia informática de alto rendimiento según sea necesario. Esto resulta especialmente útil para tareas que requieren muchos recursos, como la compilación de grandes bases de código, la ejecución de pruebas o el uso de algoritmos de aprendizaje automático.
  • Mayor seguridad: Al ser una solución basada en la nube, Dev Box se beneficia de los sólidos protocolos de seguridad de Microsoft. Esto significa que su código y entorno de desarrollo están protegidos con medidas de seguridad líderes en la industria.
  • Integración con herramientas existentes: Dev Box se integra perfectamente con otros servicios de Microsoft y muchas herramientas de terceros, ofreciendo una experiencia de desarrollo integral. Tanto si utiliza GitHub, Azure u otras herramientas de CI/CD, Dev Box se adapta a su flujo de trabajo actual.
  • Flexibilidad y personalización: Los equipos pueden personalizar sus Dev Boxes para que se adapten a las necesidades específicas de sus proyectos. Si está desarrollando una aplicación móvil, un servicio web o un modelo de aprendizaje automático, puede adaptar su entorno en consecuencia.
  • Gestión eficiente de recursos: Con Dev Box, las organizaciones pueden gestionar los recursos de manera más eficiente. Los entornos de desarrollo se pueden ampliar o reducir según sea necesario, lo que garantiza que solo se paga por lo que se utiliza.

Y hablando de costes… ¿cuánto cuesta Microsoft Dev Box? Como todo en Azure depende del SKU de los recursos utilizados. Podemos elegir entre tres configuraciones de CPU y RAM:

  • 8 vCPU y 32 GB RAM
  • 16 vCPU y 64 GB RAM
  • 32 vCPU y 128 GB RAM

Y podemos desplegar cada uno de estos tamaños con 256, 512, 1024 o 2048 GB de almacenamiento.

Así, por ejemplo, un 8 vCPU con 32 GB de RAM y 256 GB de almacenamiento SSD cuesta, desplegado en Europa Occidental:

  • Almacenamiento: 18,69€/20,52$ al mes
  • Computación: 1,47€/1,61$ por hora
  • Precio mensual máximo: 135,93€/149,26$ al mes

Fuente: Precios de Microsoft Dev Box.

No es tan caro, si utilizamos una dev VM durante 8 horas cada día, y 20 días al mes, eso son 2081,47 + 18,69, que son 253,89€ al mes. ¿Es así? No, no lo es. Puede ver que tenemos un precio máximo mensual, y cuando el uso de una instancia supera ese precio máximo, ¡eso es todo lo que pagará ese mes! El coste de computación está limitado a 80 horas.

Licencias y más licencias

Antes de continuar, permítanme decirles algo sobre las licencias. Porque siempre se trata de licencias. Y permítanme citar a Microsoft al respecto:

To use Microsoft Dev Box, each user must be licensed for Windows 11 Enterprise or Windows 10 Enterprise, Microsoft Endpoint Manager, and Azure Active Directory P1.
In addition to being available independently, these licenses are included in Microsoft 365 F3, Microsoft 365 E3, Microsoft 365 E5, Microsoft 365 A3, Microsoft 365 A5, Microsoft 365 Business Premium, and Microsoft 365 Education Student Use Benefit subscriptions.

https://azure.microsoft.com/en-us/pricing/details/dev-box/

No es para tanto, ¿verdad? La mayoría de los que trabajamos en partners, o clientes que implementan Dynamics 365, tenemos asignada una licencia Microsoft E3 o E5, que cumpliría con los requisitos base. Simplemente tenlo en cuenta.

Basta de licencias, ¡ahora volvamos a los dev boxes y los precios!

Tener un precio máximo mensual significa que si utilizas un Dev Box de Microsoft sólo durante algunas horas al mes, pagarás su precio por hora, pero si lo utilizas mucho, cuando superes el precio máximo, ¡pasará al precio máximo mensual automáticamente!

Eso en lo que respecta a la computación, que sólo cuenta mientras el Dev Box está en funcionamiento (no apagado o hibernado). ¿Pero qué pasa con el almacenamiento? Bueno, como muchos otros servicios de Azure, pagas por el almacenamiento mientras exista el recurso de almacenamiento, así que si mantuvieras un Dev Box de Microsoft apagado durante todo un mes sólo pagarías sus costes de almacenamiento.

Esto me parece más barato que una VM de entorno alojado en Cloud… claro que no podemos comparar ambas cosas porque si necesitamos habilitar la integración con Power Platform y tener un entorno Dataverse vinculado a tu instancia dev de F&O tenemos que desplegarlo como un CHE. ¿Es así?

Bueno, ¡aquí es donde la nueva experiencia de desarrollo unificada toma protagonismo!

One Dynamics One Platform

Como sabrás, estamos en un viaje para tener una experiencia unificada de administrador y desarrollador para Dynamics 365 F&O y Dataverse.

La nueva experiencia del desarrollador comienza cuando desplegamos un entorno sandbox en el centro de administración de Power Platform en lugar de LCS. Y esto significa que ya no tenemos que configurar manualmente la integración de Power Platform, estará activa por defecto.

Así que realmente no necesitamos un CHE si queremos construir cosas que utilicen tanto F&O como Dataverse. Dejadme mostraros algo, así es como se ve un entorno de desarrollo unificado en PPAC.

Entorno unificado en PPAC
Entorno unificado en PPAC

¿Véis algo distinto? Tiene una URL de entorno Dataverse y… ¡también una URL de Finance and Operations! Esto no es algo nuevo y exclusivo de la experiencia de desarrollo unificada, en realidad la hemos tenido desde hace algún tiempo, pero era un poco diferente. Me explico.

Cuando configuramos la integración de Power Platform desde LCS, se desplegó un entorno Dataverse que también mostraba la URL de F&O. Pero en este caso estamos desplegando un entorno Dataverse desde PPAC con F&O instalado como una aplicación de Dynamics 365.

Si esto te parece un poco confuso, te recomiendo que te familiarices con PPAC y la nueva experiencia de administración unificada en PPAC.

Y esta es la razón por la que creo que en algunos escenarios podemos reemplazar nuestro CHE por una Microsoft Dev Box con las herramientas de desarrollo local.

Experiencia de desarollo unificada y Microsoft Dev Box

Antes de nada dejadme dejar algo claro: esto no es un patrón, una solución que valga para todos. Dependiendo del equipo, procesos, los requisitos de los clientes y otros factores, es posible que te resulte beneficioso utilizar entornos alojados en la nube. Depende de ti averiguarlo.

Puede que estés pensando: «¿pero las herramientas de desarrollo locales no estaban pensadas para usarse localmente?». Sí, puedes instalarlas en tu portátil y empezar a trabajar.

Pero, ¿y si tu portátil actual no cumple los requisitos? ¿Y si, debido a las políticas de la empresa, no puedes instalar todos los componentes necesarios? ¿Y si simplemente no quieres instalar nada en tu portátil? ¿Y si…?

Sea cual sea tu razón, ¡te mostraré una alternativa para usar las herramientas de desarrollo locales!

Deplegando un dev center

Lo primero que tenemos que hacer es crear un Dev center en nuestra suscripción de Azure:

Crear un dev center en Azure
Crear un dev center en Azure

Seleccionamos la región más cercana a nosotros o a al equipo de desarrollo, en mi caso elijo Europa Occidental. Si tienes un equipo de desarrolladores distribuido, puedes crear varios centros de desarrollo para las diferentes regiones de tu equipo.

A continuación tenemos que crear un proyecto dentro del dev center:

Crear un proyecto en el dev center
Crear un proyecto en el dev center

Sólo tenemos que seleccionar el centro de desarrollo y dar un nombre al proyecto:

New project in dev center
Nuevo proyecto en el dev center

Ahora volveremos al dev center y crearemos una definición de dev box:

Create a dev box definition
Creando una definición de dev box

Rellenamos los campos obligatorios con los tamaños de VM y almacenamiento seleccionados:

Definición de dev box
Definición de dev box

Recomiendo darle un nombre significativo, que dé pistas sobre el tamaño de la máquina virtual, el almacenamiento y las versiones de Visual Studio y Windows.

Ahora vamos al proyecto que creamos anteriormente, y creamos un nuevo dev box pool:

Nuevo dev box pool
Nuevo dev box pool

Y ahora completaremos todos los campos:

Detalles del dev box pool
Detalles del dev box pool

Recomiendo usar el mismo nombre que en la definición, por comodidad. Rellenamos todos los demás campos según nuestras necesidades y seleccionamos la casilla de verificación de licencias.

Finalmente, en el proyecto, necesitamos asignar el rol DevCenter Dev Box User a los usuarios que crearán y utilizarán los dev boxes. ¡Tienes que hacer esto incluso si eres el propietario de los recursos Azure!

Hemos terminado con el dev center, ahora es el momento de acceder a los dev boxes….

Accedniendo a la Microsoft dev box

Para crear y acceder a estos dev boxes, tenemos que ir al portal de desarrolladores de Microsoft en https://devportal.microsoft.com/.

Si aparece esta pantalla:

El Dev portal no está listo!
El Dev portal no está listo!

Esto significa que los recursos de Azure aún no se han desplegado o que falta asignar el rol DevCenter Dev Box User. Una vez solucionado esto, deberíamos ver lo siguiente:

El Dev portal está listo!
El Dev portal está listo!

Hacemos clic en el botón «New dev box»:

Creación de una nueva Dev box
Creación de una nueva Dev box

En caso de que tengas varios pools de dev boxes, por ejemplo para diferentes versiones de Visual Studio, aparecerá un menú desplegable en el campo «Dev box pool», y podrás seleccionar en qué grupo estás desplegando la dev box.

Por último, haz clic en el botón Create y espera unos 25 minutos.

Dev box creándose
Dev box creándose

Configurando la dev box para F&O

Una vez que el dev box de Microsoft esté listo, recibirás un correo electrónico y podrás conectarte a él utilizando el cliente RDP o tu navegador, como hace Bastion.

La Microsoft dev box está lista
La Microsoft dev box está lista

Elije tu método preferido e inicia sesión en el Dev Box utilizando tus credenciales de Azure AD Microsoft Entra ID.

La VM tiene todo lo necesario para trabajar con las herramientas de desarrollo local de F&O, incluyendo LocalDB.

Una vez hayas entrado básicamente tienes que seguir el post de Aurelién enlazado al principio. Lo configuraré todo rápidamente sin entrar en mucho detalle y me centraré en los problemas que he encontrado.

El primer paso es ejecutar Visual Studio e iniciar sesión con tu cuenta. Después instalaremos la extensión Power Platform tools.

Instalando las Power Platform Tools
Instalando las Power Platform Tools

Cierra Visual Studio y la extensión se instalará. Una vez hecho esto abre Visual Studio de nuevo y conéctate a tu entorno de desarrollo de F&O en Dataverse. Lo hacemos en el menú Tools:

Conectar a Dataverse
Conectar a Dataverse

Ponemos nuestras credenciales, y seleccionamos el entorno en la lista y luego la solución. Aparecerá un diálogo preguntando si queremos descargar los archivos de F&O:

Descarga de archivos de F&O
Descarga de archivos de F&O

Esto descargará varias cosas en la carpeta C:\Users\tu_nombre_de_usuario\AppData\Local\Microsoft\Dynamics365\10.0.1627.73:

  • Extensión de Visual Studio para F&O
  • BAK de la base de datos xRef
  • Archivo ZIP PackagesLocalDirectory.

Lo primero que haremos será descomprimir el archivo ZIP. La documentación sugiere usar 7-Zip para hacerlo, y yo también lo hago porque usando la herramienta de extracción de Windows tardé más de una hora en descomprimir el archivo, mientras que usando 7-Zip tardé menos de 10 minutos. Puedes descomprimir los objetos AOT donde quieras. Por ejemplo, yo lo hago en C:\AOSService\PackagesLocalDirectory porque… Estoy acostumbrado a eso.

Mientras el archivo ZIP está descomprimido instala la extensión VS para F&O. Y una cosa: ¡no muevas el fichero BAK de ahí! Cuando configuramos el entorno, espera que el archivo BAK esté ahí, si lo borramos, lo cortamos en otro sitio o lo que sea, ¡no podremos configurar las herramientas de desarrollo locales!

Cuando el archivo ZIP haya terminado de extraerse y la extensión esté instalada podemos continuar.

Abrimos Visual Studio de nuevo, vamos a Extensiones, pasamos el ratón por encima del elemento de menú Dynamics 365 y… ¡aparecerá un cuadro de diálogo!

Configuración local XPP
Configuración local XPP

Necesitamos completar todos los campos. Dale un nombre y una descripción a tu gusto, como el servidor de base de datos xRef usamos (localdb)\., y un nombre para la DB de xRef que será restaurado utilizando el archivo BAK.

IMPORTANTE: haz clic en el número de versión. Me volví loco hasta que me di cuenta de que tenía que hacer clic y seleccionarlo, ¡no se selecciona automáticamente!

Por último, cambia las rutas a tus carpetas de AOSService y haz clic en Guardar. Fallará, porque tenemos que seleccionar la configuración como activa marcando la casilla «Current» junto al nombre de la configuración en la lista. Ahora hacemos clic en Guardar y se iniciará la restauración de la base de datos xRef, veremos un mensaje en el cuadro de diálogo.

Si se produce un error en el servidor de base de datos, es posible que tengas que iniciar la instancia localdb. Puedes hacerlo abriendo un símbolo del sistema y ejecutando este comando:

sqllocaldb start mssqllocaldb

Ahora creamos una clase ejecutable con un hola mundo, desplegamos el modelo en el entorno, lo ejecutamos y…

Clase ejecutable en la nube!
Clase ejecutable en la nube!

It works!

Once you’re done for the day, you can head back to the developer portal and choose several options:

Funciona!

Una vez que hayas terminado por el día, puedes regresar al portal de desarrolladores y elegir varias opciones:

Dev center shut down
Dev center shut down

Puedes hibernar o apagar la dev box, lo que detendrá los costos de computación (pero no los de almacenamiento). También podemos reiniciarla o retrasar el apagado programado si está configurado. Y, por supuesto, también podemos borrarla.

¿Y el rendimiento qué tal?

Probablemente el rendimiento es una de las cosas en las que todos pensamos cuando se lanzó la experiencia de desarrollo local.

¿Y cómo es el rendimiento de las herramientas locales en una dev box en la nube? Bueno, es igual que en mi portátil. Creo que el cuello de botella para el rendimiento aquí son las propias herramientas de desarrollo de F&O y no el hardware, ya sea local o en la nube.

Todavía experimentarás algunas congelaciones de VS y las advertencias de la extensión, pero definitivamente no es peor que trabajar en tu propio PC.

¿Y Visual Studio 2022?

Si quieres usar una Microsoft dev box con Visual Studio 2022 o Windows 11, ¡adelante! Desde la versión 10.0.36, la extensión de Visual Studio para las herramientas de F&O se incluyen en los paquetes desplegables utilizados para las actualizaciones de versión.

Y para acabar…

Esto es una pequeña prueba de concepto, y aunque creo que la mayoría de la gente usará las herramientas de desarrollo local en su PC local, hay algunos casos en los que podríamos beneficiarnos de Microsoft Dev Box.

Desde una perspectiva de costos, vemos que Microsoft Dev Box puede costar mucho menos que una máquina virtual clásica desplegada en LCS.

No usaría esto si quisiera desplegar y borrar la dev box a diario, porque configurar las herramientas de desarrollo todos los días sería una gran pérdida de tiempo. Sin embargo, es posible usar imágenes personalizadas para crear cajas de desarrollo. Algo que no he probado pero que quizás podría explorarse para tener una imagen preconfigurada.

Finalmente, esto es algo que puede funcionar para mí, pero no para otros, y como siempre, necesitamos evaluar cuál es la mejor solución para nosotros: el VHD local, los entornos alojados en la nube o el desarrollo local.

Pero eh, ¡disfruté probando esto!

Lecturas adicionales

¡Suscríbete!

Recibe un correo cuando se publique un nuevo post
Author

Microsoft Dynamics 365 Finance & Operations technical architect and developer. Business Applications MVP since 2020.

Write A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ariste.info