Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

Serverless en Azure

El objetivo detrás de una arquitectura Serverless es reducir el coste de las operaciones, la complejidad y el tiempo de entrega de la solución.

Los desarrolladores se pueden centrar en la lógica de negocio a implementar y evitar tareas de ‎aprovisionamiento de servidores, actualizaciones, mantenimiento del sistema operativo, escalado y aprovisionamiento de la capacidad.‎

Ya en 2018 en este mismo blog, definíamos Serverless como:

El uso de servicios de terceros o en código que se ejecuta en supuestos contenedores que nos aíslan de las típicas necesidades tradicionales de dimensionar servidores y nos permiten centrarnos en el contexto de ejecución de nuestra aplicación.

¿Qué servicios serverless tenemos en Azure?

Los servicios de Azure han ido evolucionando y, hoy en día, muchos cumplen con esta definición de Serverless, incluso ofreciendo modalidades de servicios que combinan serverless con el dimensionamiento tradicional.

  • Azure Functions, el servicio que nos permite ejecutar nuestro código basado en eventos, que escala bajo demanda y pagamos sólo por el tiempo que nuestro código se está ejecutando.
  • Azure Logic App, servicio de desarrollo de flujos de integración visual con gran variedad de conectores que nos abstraen de la conexión a diferentes servicios, y, al igual que Azure Functions, con escalado bajo demanda y pago por uso.
  • Azure Event Grid, nos ayuda a simplificar los escenarios de aplicaciones basadas en eventos encargándose de tener la responsabilidad de recibir y entregar a diferentes orígenes externos los mensajes.
  • Azure API Management nos permite publicar, asegurar, transformar y monitorizar nuestras APIs, es el servicio de API Gateway de Azure, totalmente manejado en modo PaaS. Por defecto, tenemos que dimensionar el servicio para atender las peticiones que vamos a realizar, entre las que podemos elegir Consumption, una versión Serverless del servicio con pago por ejecuciones y escalado automático.
  • Azure Services Bus es un servicio de mensajería empresarial para intercambiar mensajes entre aplicaciones que “dimensionamos” en función del tamaño del mensaje, la latencia, y otras características claves de este tipo de servicio.
  • Azure Stream Analytics, el servicio de analítica en tiempo real donde habilitamos un pipeline end-to-end en streaming para recibir nuestros datos.
  • Azure Event Hub, servicio de ingesta de datos en tiempo real, administrado por el equipo de Azure, para recibir millones de eventos por segundo en streaming.
  • Azure IoT Hub que nos permite administrar de forma segura los dispositivos (IoT) y recibir millones de señales por segundo de estos dispositivos.
  • Azure Notification Hub para concentrar el envío de notificaciones push a cualquier plataforma desde cualquier aplicación.
  • Azure Storage es el servicio computación básico en Azure que da soporte a muchos de los servicios de Azure y nuestras aplicaciones. Si nos basamos en la definición de Serverless, es un servicio que la cumple al 100% y donde no solamente podemos poner nuestros ficheros, sino que también tiene un servicio de mensajería o podemos publicar aplicaciones web estáticas.
  • Azure Static Web App es un servicio para publicar sitios web estáticos con soporte de backend basado en Azure Functions.
  • Azure SQL Database es la base de datos administrada de Microsoft SQL Server con un dimensionamiento basado en Serverless que escala en base a las peticiones que recibe de nuestras aplicaciones.
  • Azure Cosmos DB, servicio de base de datos NoSQL que, al igual que SQL, nos permite seleccionar un dimensionamiento Serverless que escala en base a las peticiones sin necesidad de dimensionar el servicio.

Lo que empezó siendo una Function para ejecutar nuestro código, y acaba con muchos servicios que cumplen con las características de una arquitectura Serverless. Seguro que alguno falta en este listado.

Lo relevante de Serverless, es que permite ejecutar nuestro código con un coste reducido y un auto-escalado en base a las peticiones, lo que no quiere decir que no tengamos que hacer pruebas de rendimiento para garantizar que vamos a soportar nuestro caso de uso.

Ya nos ha pasado en diferentes proyectos que la solución Serverless no tiene la capacidad adecuada y no es la arquitectura que necesitamos, sobre todo en un proyecto maduro en el que podemos y sabemos cómo dimensionar la carga de trabajo.

Sin embargo, Serverless ha ayudado a muchos proyectos a arrancar y adaptarse a la carga de trabajo, con una entrega en producción ágil y rápida.

mm

Sobre Alberto Diaz Martin

Alberto Diaz cuenta con más de 15 años de experiencia en la Industria IT, todos ellos trabajando con tecnologías Microsoft. Actualmente, es Chief Technology Innovation Officer en ENCAMINA, liderando el desarrollo de software con tecnología Microsoft, y miembro del equipo de Dirección. Para la comunidad, trabaja como organizador y speaker de las conferencias más relevantes del mundo Microsoft en España, en las cuales es uno de los referentes en SharePoint, Office 365 y Azure. Autor de diversos libros y artículos en revistas profesionales y blogs, en 2013 empezó a formar parte del equipo de Dirección de CompartiMOSS, una revista digital sobre tecnologías Microsoft. Desde 2011 ha sido nombrado Microsoft MVP, reconocimiento que ha renovado por séptimo año consecutivo. Se define como un geek, amante de los smartphones y desarrollador. Fundador de TenerifeDev (www.tenerifedev.com), un grupo de usuarios de .NET en Tenerife, y coordinador de SUGES (Grupo de Usuarios de SharePoint de España, www.suges.es)
Esta entrada ha sido publicada en Azure, Cloud y etiquetada como , , . Enlace permanente .
ENCAMINA, piensa en colores