Microsoft anuncia Azure Functions 2.0.12115 – Consideraciones a tener en cuenta
El pasado 24 de Septiembre de 2018 durante el Microsoft Ignite 2018 que se ha llevado a cabo estos días en Orlando (USA), Microsoft anunció la GA o Global Availability (disponibilidad general) de Azure Functions 2.0.
Azure Functions es un entorno Serverless muy sólido con un 99,95% de SLA.
El anuncio de esta nueva versión de Azure Functions tiene sin embargo algunos aspectos escritos en letra pequeña que conviene conocer. Pero que nadie se asuste en exceso.
Microsoft recomienda desde ya que todos los nuevos desarrollos se realicen en Azure Functions 2.0, al mismo tiempo que anima a que las aplicaciones de Azure Functions 1.0 sean migradas a 2.0 para obtener todos los beneficios que ofrece esta nueva versión de Azure Functions.
Si tienes dudas respecto a la migración de Azure Functions, Microsoft ha elaborado un documento de migración que podrás consultar en este enlace. No es muy completo bajo mi personal punto de vista, pero da muchas pistas de lo que debemos tener en cuenta.
En cuanto a rendimiento, Azure Functions 2.0 mejora la actual versión y tiene la capacidad de ejecutar código desde un paquete (Run your Azure Functions from a package file).
Ten en cuenta también que desde ya, cuando creamos una nueva Azure Function desde el Portal de Azure, ésta será creada en v2.x por defecto.
Si queremos cambiar de 2.x a 1.x deberemos ir a la sección de Function Settings para cambiar manualmente su versión a 1.x.
Considera que si ya tienes Azure Functions desplegadas en tu Azure Function App, esta opción aparecerá deshabilitada, por lo que debemos hacer esto antes de desplegar o crear ninguna Azure Function.
Ten en cuenta también, que cambiar la versión implica reiniciar tu Azure Functions App.
Pero quizás la novedad más importante (al menos para mí) está en el Runtime.
El Runtime de 2.x se ejecuta en .NET Core 2.
El hecho de que se ejecute en .NET Core implica que pueda ejecutarse en múltiples plataformas incluyendo de forma local: macOS, Linux o Windows.
Podemos utilizar Visual Studio, Visual Studio for Mac o Visual Studio Code para el desarrollo y despliegue de nuestras Azure Functions y probarlas en el mismo entorno en el que lo estamos desarrollando.
Una cosa importante a tener en cuenta es que una Azure Function App en Azure Functions 2.x estará por motivos de rendimiento limitada fundamentalmente a utilizar un único lenguaje.
Azure Functions 2.x soporta los lenguajes: C#, F#, JavaScript y Java aunque vendrán más en un futuro cercano.
En el caso de Java, está como Preview con Java 8, mientras que en el caso de los otros tres están como GA.
Para C# (.NET Core 2), para F# (.NET Core 2), y para JavaScript (Node 8 y 10).
Los lenguajes de programación experimentales utilizados en Azure Functions 1.x no han sido actualizados para Azure Functions 2.x de forma directa, aunque se está trabajando en algunos de ellos como comentaré más adelante.
En el momento de escribir esta entrada, tenemos como versión final .NET Core 2.1.4, con lo que podremos desarrollar nuestras Azure Functions en esta versión.
Desarrollar en .NET Core 2.1 conlleva mejoras importantes en cuanto a rendimiento, y podremos utilizar éstas en diferentes entornos, pudiendo incluso desplegarlas sobre Linux en el caso de un Consumption Plan (mirar el final de esta entrada en lo relativo al roadmap previsto).
Otro aspecto a tener en cuenta en cuanto a los lenguajes a utilizar es que el uso de JavaScript con el soporte de Node 8 y Node 10 supone mejoras de rendimiento también en términos generales.
Lo más destacable de todo lo que he dicho hasta ahora es que aunque Microsoft recomienda migrar nuestras Azure Functions a 2.x, éstas deben ser compatibles con el runtime utilizado, así que en el caso de que por ejemplo nuestras Azure Functions estén desarrolladas con .NET Framework en Azure Functions 1.x y deseemos utilizar Azure Functions 2.x, no nos quedará otra que migrar nuestras funciones a .NET Core 2 también.
Otro aspecto a destacar de nuestras Azure Functions es todo lo relativo a los cambios en el uso de los triggers, bindings y otras características adicionales.
Te recomiendo leer la información adicional sobre los cambios de triggers y bindings en Azure Functions 2.x.
Encontrarás algo de material en este enlace.
Microsoft por otra parte, también ha adaptado, cambiado y modificado, eliminado y añadido nuevas características en Azure Funtions 2.x.
Encontrarás toda esta información en este enlace.
Desde el punto de vista de DevOps, Azure Functions 2.0 trae mejoras en este sentido.
Se ha creado un nuevo Deployment Center (Centro de Despliegues) que permite crear y desplegar con múltiples opciones muy útiles para DevOps.
Para acceder al Deployment Center, deberemos hacer clic en «Platform features» (si nuestro portal de Azure está en inglés) dentro de nuestra Azure Function App.
De cara al futuro (probablemente dentro de muy poco tiempo) y según el roadmap compartido por el equipo de Azure Functions:
Lo he adelantado anteriormente. Microsoft está apostando también por la posibilidad de tener alojadas nuestras Azure Functions en Linux OS y es de esperar que esté cubierto por completo en breve.
Se está trabajando en dar soporte para otro lenguaje de programación que estaba en fase experimental en Azure Functions 1.x. Estoy hablando de Python 3.6. Si quieres probarlo, accede a este enlace.
Por otro lado, una cosa que sorprende es la ausencia directa a PowerShell.
Sin embargo, Microsoft tiene planeada la posibilidad de incorporarlo a Azure Functions 2.0, aunque no está claro si en un corto periodo de tiempo o más amplio.
Ahora mismo está en fase de desarrollo y no recomiendan su uso en producción.
Seguramente su soporte se limite a PowerShell Core que está basado en .NET Core 2.1.
La actual versión de PowerShell Core es la 6.1.
Para más información al respecto, visita este enlace.
Ahora bien, la pregunta del millón sea quizás ¿qué va a pasar con nuestras Azure Functions en 1.x?. ¿Van a seguir siendo soportadas por Microsoft?. La pregunta es sí,… de momento. Ese «momento» no está definido aún porque está indeterminado. Se habla de 1 año, pero podría ser más. El problema es que no ha sido anunciado oficialmente aún y hay muchas empresas que tienen sus Azure Functions desplegadas en 1.x y otras que tienen desarrollos en curso.
Todas las notas de cambios aplicados en Azure Functions 2.0.12115 puede ser consultada en este enlace.
Podrás consultar la noticia oficial de Azure Functions 2.x en este enlace.
Happy Coding!