En el artículo anterior de esta serie se mostró qué era la tecnología Serverless. En éste nos vamos a centrar en Azure Funtions.
Azure Functions, en su modo básico, es un servicio Serverless ofrecido por Microsoft con las siguientes características:
Es el plan que más se ajusta al concepto Serverless. El cliente paga exclusivamente por los recursos que consume, no se dispone de ningún recurso de computación reservado ni total ni parcialmente y los recursos son escalados de forma automática en momentos de alta demanda. Como desventaja tenemos el problema de los cold-start ya explicado anteriormente.
Cuanto más rápido termine la función, menor es el coste. Por tanto, este plan encaja muy bien en entornos en que las funciones son pequeñas, de único propósito y se ejecutan muy rápido.
Por último, algún dato importante a tener en cuenta:
Este plan, también conocido como elastic premium plan, implica la reserva de recursos de computación o instancias por adelantado con objeto de evitar los cold-start. Para ello proporciona dos tipos de instancias, always ready (siempre disponibles) y pre-warmed (precargadas para hacer su disponibilidad más rápida). El cliente puede configurar el número y tipo de instancias iniciales. A mayor número de instancias, más rápida será la respuesta a picos de demanda, pero mayor coste. Las instancias configuradas de forma inicial se facturan de forma fija. En todo caso, este plan mantiene el resto de las características de Serverless.
Algún dato adicional a tener en cuenta:
Plan dedicado que permite utilizar las funcionalidades de Azure Functions con los planes de Azure App Services. Por tanto, implica reserva de recursos. Los costes del servicio dependen del plan contratado, lo cual difiere completamente de los modelos anteriores.
En cuanto al escalado, el cliente debe hacerlo de forma manual provisionando más máquinas virtuales o bien configurando un plan de automatización. Dicho escalado no resulta tan rápido como en los planes anteriores. Entonces, ¿qué ventajas tiene este plan?
Microsoft incluye este plan en su portfolio como Serverless ya que al menos, el mantenimiento, seguridad o patching de la infraestructura de computación no depende del cliente final. En mi opinión, este plan se acerca más al concepto de PaaS (Platform as a Service) que a Serverless, ya que implica reserva de recursos con sus costes fijos asociados y los procesos de escalado no son lo suficientemente rápidos ni transparentes, pero ¿y tú qué opinas? Mientras lo piensas dejaré aquí la siguiente cita leída en una red social que me resultó muy clarificadora:
“Si tu PaaS puede iniciar y escalar instancias de forma eficiente en milisegundos y ejecutarlas en menos de un segundo, entonces no lo llames PaaS, llámalo Serverless”
Para seleccionar el plan que mejor encaja para nuestra aplicación ten en cuenta los siguientes puntos:
Autor del artículo
José Antonio Muro