BLOG

Desempaquetar sin servidor en Azure

Table of contents

Primeros pasos con Azure sin servidor.

El despliegue sin servidor se ha convertido en una opción popular en muchos entornos de nube. Cada proveedor de la nube tiene varios servicios que encapsulan sus ofertas sin servidor, y Microsoft Azure no es diferente.

Este blog cubre varios de los principales servicios sin servidor, como Azure Functions, Azure Logic Apps, Azure Event Grid, Azure Event Hubs, Azure Container Apps y Azure Cosmos DB.

Además, analiza varios marcos arquitectónicos y casos de uso, como el procesamiento de pedidos y las soluciones basadas en eventos.

El blog también destacará las mejores prácticas para desplegar aplicaciones sin servidor de Azure, así como las herramientas que facilitan el despliegue, incluidas las técnicas de optimización de costes para cada servicio.

Empecemos a desembalar.


Introducción a la computación sin servidor de Azure

¿Qué es la arquitectura sin servidor?

El término "sin servidor" no implica la eliminación completa de los servidores, sino que se refiere a un modelo que permite a los desarrolladores centrarse principalmente en la codificación, en lugar de gestionar la infraestructura subyacente necesaria para la ejecución del código. En este marco de aplicaciones sin servidor, el proveedor de servicios en la nube asume la responsabilidad del aprovisionamiento, escalado y gestión automáticos de la infraestructura necesaria para garantizar la ejecución eficaz del código.

El término "sin servidor" engloba dos significados distintos: Backend como Servicio (BaaS) y Funciones como Servicio (FaaS). Sin embargo, ambos conceptos comparten el principio subyacente de que los desarrolladores y los ingenieros de DevOps no tienen que desplegar, configurar ni gestionar servidores.

  • BaaS se refiere a los servicios en la nube que proporcionan funcionalidades de backend, como bases de datos y almacenamiento. Estos servicios proporcionan API que permiten a las aplicaciones fuente conectarse directamente a ellos.
  • FaaS es un modelo en el que una función es un fragmento de código que se ejecuta en el entorno de alojamiento del proveedor de la nube. Este modelo abstrae el código subyacente y los servidores que ejecutan la Función.

El siguiente diagrama ilustra la arquitectura de Azure de una aplicación diseñada para servir contenido estático utilizando Azure Blob Storage, al tiempo que integra una API a través de Azure Functions. Esta API recupera datos de Azure Cosmos DB y devuelve los resultados a la aplicación web.

Este ejemplo demuestra los dos significados de BaaS y FaaS dentro de Azure. En concreto, se refiere a FaaS a través de Azure Functions, mientras que Azure Blob Storage sirve como ejemplo de BaaS.

https://learn.microsoft.com/en-us/azure/architecture/web-apps/serverless/architectures/web-app

https://learn.microsoft.com/en-us/azure/architecture/web-apps/serverless/architectures/web-app

Hay características dentro de serverless que tienen ventajas y desventajas. Las ventajas incluyen:

  • Coste - Paga sólo por los recursos que utilices, evitando cargos por recursos ociosos como servidores web o middleware, y reduce el derroche durante las horas valle. Si conoces tus patrones de acceso, puedes ahorrar aún más adquiriendo capacidad reservada.
  • Menos mantenimiento - Dado que el proveedor de la nube gestiona las complejidades subyacentes de la administración del servidor, los desarrolladores tienen libertad para centrarse en crear la aplicación y sus funciones.
  • Escalable - Los componentes sin servidor pueden escalarse automáticamente para gestionar patrones de tráfico impredecibles o con altibajos.
  • Soporte - Existe una gran comunidad de soporte, y la mayoría de los proveedores de la nube ofrecen servicios que se integran o utilizan componentes sin servidor.

Algunas de las desventajas de la computación sin servidor:

  • Rendimiento - Los problemas de rendimiento pueden surgir en varios aspectos de una arquitectura sin servidor desacoplada, lo que hace difícil determinar con precisión qué API o componente es responsable de la ralentización. Además, si una función no se ha utilizado durante algún tiempo, puede sufrir un arranque en frío. Un arranque en frío se produce porque el proveedor de servicios debe asignar recursos para que la Función se ejecute, lo que puede requerir tiempo extra, provocando lentitud en el rendimiento de la aplicación.
  • Bloqueo del proveedor - Normalmente, los servicios sin servidor son proporcionados por el proveedor, lo que puede hacer que la migración fuera de la plataforma sea difícil y costosa.
  • Control limitado: un cliente puede enfrentarse a limitaciones en sus acciones porque carece de control sobre la infraestructura subyacente. Si la aplicación depende de configuraciones ambientales específicas, puede que no funcione correctamente con serverless. Además, suele haber restricciones sobre la ejecución en tiempo de ejecución, el número máximo de funciones y los lenguajes de programación admitidos.
  • Seguridad - Puesto que el proveedor es responsable del sistema operativo subyacente y de la infraestructura del servicio sin servidor, la seguridad depende en gran medida de las medidas que aplique. Esta situación puede crear potencialmente vulnerabilidades, ya que cada Función puede actuar como un vector de ataque.

¿Por qué elegir Azure para la tecnología sin servidor?

Aunque muchos proveedores de nubes públicas ofrecen marcos de arquitectura sin servidor, Azure destaca por varias razones:

  • Compatibilidad con una gama más amplia de lenguajes: Azure da cabida a un conjunto diverso de lenguajes de programación, lo que permite a los desarrolladores trabajar en sus entornos preferidos.
  • Capacidades de depuración local: Con herramientas como Visual Studio, Azure proporciona funciones que mejoran la productividad de los desarrolladores al facilitar la depuración local.
  • Ecosistema integral: Azure permite crear soluciones completas sin servidor tanto para aplicaciones front-end como back-end, con servicios que funcionan juntos de forma eficaz y eficiente. Azure permite a los desarrolladores crear aplicaciones innovadoras que integran fácilmente código para servicios de aprendizaje automático e IA.

Estas ventajas hacen de Azure una opción convincente para la arquitectura sin servidor.


Servicios populares sin servidor de Azure

Funciones Azure
Funciones Azure

Funciones Azure

Las Funciones Azure sirven como lógica backend en aplicaciones sin servidor, constituyendo la base de la Función como Servicio (FaaS). Ofrecen escalabilidad y admiten una arquitectura basada en eventos. Además, las funciones pueden llamar a servicios externos, como procesadores de pagos de terceros, para completar transacciones.

Incluyen una amplia gama de activadores y enlaces basados en eventos que conectan las funciones a otros servicios sin esfuerzo, eliminando la necesidad de código adicional.

A continuación se resumen la finalidad y algunos de los casos de uso de Azure Functions:


https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview

Azure Functions admite una gran variedad de lenguajes, lo que lo convierte en un recurso atractivo para la informática sin servidor. Los lenguajes compatibles son los siguientes:


https://learn.microsoft.com/en-us/azure/azure-functions/supported-languages?tabs=isolated-process%2Cv4&pivots=programming-language-csharp

Azure Durable Functions amplía las capacidades de Azure Functions, permitiéndote crear flujos de trabajo con estado y lógica de coordinación mediante un patrón orquestador. Esta extensión ayuda a desarrollar aplicaciones sin servidor de larga duración, escalables y fiables.

Técnicas de optimización de costes:


Aplicaciones Azure Logic

Aplicaciones Azure Logic

Azure Logic Apps proporciona una sólida solución de orquestación sin servidor diseñada específicamente para desarrollar y gestionar cargas de trabajo complejas. Como plataforma de integración como servicio (iPaaS) de Microsoft basada en la nube, permite automatizar sin problemas los flujos de trabajo que conectan una amplia gama de servicios y aplicaciones.

Esta potente herramienta agiliza el proceso de integración, permitiendo a las organizaciones mejorar la eficacia operativa, reducir las intervenciones manuales y responder más rápidamente a las cambiantes necesidades empresariales.

Utilizando plantillas y conectores predefinidos, los usuarios pueden establecer rápidamente sofisticados flujos de trabajo que integran sistemas dispares, fomentando la innovación e impulsando la productividad general.

He aquí algunas características clave de Azure Logic Apps que hacen que merezca la pena tenerlas en cuenta para la orquestación de flujos de trabajo:

  • Diseñador visual para crear procesos empresariales automatizados o flujos de trabajo
  • Más de 1.400 conectores preconstruidos con activadores y acciones
  • Enfoque Low-Code/No-Code
  • Alojados en Microsoft Azure, que se encarga de alojar, escalar, gestionar, supervisar y mantener las soluciones creadas con estos servicios.

Mezclar y combinar servicios es bastante habitual en la informática sin servidor. Por ejemplo, puedes llamar a funciones desde flujos de trabajo de Logic Apps y llamar a flujos de trabajo de Logic Apps desde funciones. La siguiente tabla enumera algunas diferencias clave entre Azure Functions y Azure Logic Apps.


https://learn.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-webjobs

Técnicas de optimización de costes:


Rejilla de Eventos Azure

Rejilla de Eventos Azure

Azure Event Grid es un servicio diseñado para agilizar el desarrollo de aplicaciones basadas en eventos mediante el enrutamiento de eventos desde varios servicios de Azure y fuentes personalizadas a suscriptores, como Azure Functions, Logic Apps, webhooks o cualquier punto final HTTP.

Este servicio, caracterizado por su escalabilidad y gestión integral, funciona bajo el modelo de publicación/suscripción (Pub/Sub) y es compatible con los protocolos MQTT v3.1.1 y v5.0, así como con HTTP, lo que facilita la creación de canalizaciones de datos, integraciones de aplicaciones y arquitecturas sin servidor basadas en eventos. Además, posee la capacidad de publicar y suscribirse a mensajes para soluciones del Internet de las Cosas (IoT), dando cabida a métodos de entrega de eventos tanto push como pull.

Además, Event Grid cumple la especificación CloudEvents 1.0, mejorando así la interoperabilidad entre varios sistemas.

A continuación se muestra un diagrama general de la Rejilla de Eventos Azure.


https://learn.microsoft.com/en-us/azure/event-grid/overview

Las dos características principales de Azure Event Grid son:

  • La mensajería M QTT permite a los dispositivos y aplicaciones IoT comunicarse entre sí a través de MQTT. Event Grid puede aprovechar MQTT para dirigir mensajes a servicios Azure o a puntos finales personalizados para análisis, visualización o almacenamiento adicionales.
Mensajería MQTT https://learn.microsoft.com/en-us/azure/event-grid/overview
  • Datos distribuidos utilizando modos de entrega push y pull - En cualquier punto del canal de datos, las aplicaciones HTTP pueden consumir mensajes utilizando API push o pull
Mensajería de eventos https://learn.microsoft.com/en-us/azure/event-grid/overview

Técnicas de optimización de costes:


Centros de eventos Azure

Centros de eventos Azure

Azure Event Hubs es un servicio de ingestión de datos en tiempo real totalmente gestionado que ofrece simplicidad, seguridad y escalabilidad. Es compatible con protocolos populares como AMQP, HTTPS y Apache Kafka. El servicio puede ingerir millones de eventos por segundo.

La capacidad de ingerir millones de eventos por segundo y analizar los datos en tiempo real es especialmente beneficiosa para las aplicaciones que requieren conocimientos inmediatos y capacidad de respuesta a patrones de datos cambiantes, lo que la convierte en un componente esencial de las arquitecturas modernas basadas en la nube.

La integración en otros servicios de Azure se produce sin problemas, y puedes obtener información valiosa sobre los datos, y también microbatching en el mismo flujo.

Azure Event Hubs permite crear una completa solución de streaming sin servidor que se integra a la perfección con Stream Analytics.

Algunos de los casos de uso que ofrece la documentación de Azure son:

Arquitectura del centro de eventos https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about

Técnicas de optimización de costes:


Aplicaciones Azure Container

Aplicaciones Azure Container

Azure ofrece dos servicios clave para trabajar con contenedores: Azure Container Apps (ACA) y Azure Kubernetes Service (AKS). Aunque nos centraremos principalmente en Azure Container Apps, es esencial comprender las distinciones y saber cuándo elegir cada opción.

ACA proporciona una solución única "centrada en la aplicación", por lo que es ideal para los desarrolladores que quieren centrarse en crear aplicaciones en lugar de lidiar con las complejidades de la orquestación de contenedores. Su impresionante arquitectura basada en eventos, junto con la capacidad de escalar aplicaciones hasta cero, la convierte en una opción excepcionalmente rentable.

Por otro lado, Azure Kubernetes Service suele considerarse una opción "centrada en el clúster", que ofrece más control y flexibilidad. Está pensada para aplicaciones complejas que pueden requerir personalizaciones específicas, especialmente para equipos muy versados en Kubernetes.

Si necesitas más orientación para simplificar tu despliegue con AKS, no dudes en ponerte en contacto con DoiT.

Azure Container Apps destaca como una avanzada plataforma sin servidor diseñada para facilitar el funcionamiento fluido y eficiente de las aplicaciones en contenedores. Al eliminar los obstáculos de la gestión de servidores, este servicio permite a los desarrolladores centrarse en crear y desplegar sus aplicaciones sin preocuparse de los retos de infraestructura.

La plataforma agiliza la orquestación y despliegue de contenedores, permitiendo a los usuarios gestionar configuraciones, escalar operaciones y asignar recursos con facilidad. Con funciones como el escalado automático en función de la demanda, capacidades de red integradas y herramientas de supervisión incorporadas, Azure Container Apps proporciona a las empresas la flexibilidad que necesitan para adaptarse rápidamente a las cambiantes condiciones del mercado.

Además, aprovechar esta plataforma permite a las organizaciones acelerar sus ciclos de innovación, manteniendo al mismo tiempo una alta eficiencia operativa en un entorno dinámico de nube. Esto posiciona a las empresas para aprovechar rápidamente nuevas oportunidades, optimizar la utilización de recursos y mejorar el rendimiento general de las aplicaciones.

Algunos de los casos de uso cotidiano de Azure Container Apps:

  • Despliegue de los puntos finales de la API
  • Alojar trabajos de proceso de fondo
  • Tener un procesamiento basado en eventos
  • Ejecutar microservicios

Una ventaja de crear aplicaciones en Azure Container Apps es la posibilidad de escalar en función de los siguientes criterios:

Ejemplos de Azure Container Apps: https://learn.microsoft.com/en-us/azure/container-apps/overview

Técnicas de optimización de costes:


Azure Cosmos DB

Azure Cosmos DB

Azure Cosmos DB es un servicio de base de datos avanzado y totalmente gestionado que admite varios modelos de datos, incluidas bases de datos NoSQL, relacionales y vectoriales. Esta plataforma flexible está diseñada para ofrecer tiempos de respuesta excepcionales, normalmente en milisegundos de un solo dígito, garantizando una experiencia de alto rendimiento para los usuarios. Su arquitectura permite una fácil escalabilidad manteniendo un rendimiento fiable, independientemente del tamaño o la demanda del sistema.

Además, Azure Cosmos DB garantiza una sólida continuidad empresarial con un Acuerdo de Nivel de Servicio (SLA ) que promete tiempo de actividad e incluye amplias medidas de seguridad de nivel empresarial para proteger los datos sensibles y cumplir los requisitos normativos.

Azure Cosmos DB es un servicio totalmente gestionado que automatiza diversas tareas, como la gestión, las actualizaciones y la aplicación de parches. Ofrece opciones rentables sin servidor para gestionar la capacidad, con funciones de escalado automático que se ajustan a las necesidades de la aplicación, garantizando que la capacidad se alinea con la demanda.

Con su alta disponibilidad garantizada, impresionante rendimiento, latencia mínima y consistencia ajustable, Azure Cosmos DB es ideal para una gran variedad de aplicaciones, como IA, comercio minorista y marketing, IoT y telemática, juegos y personalización para plataformas sociales.

Las aplicaciones enumeradas a continuación demuestran una excelente compatibilidad con Azure Cosmos DB, destacando su capacidad para integrar y utilizar eficazmente las capacidades avanzadas de esta potente plataforma de base de datos, lo que se traduce en un mayor rendimiento y escalabilidad en diversos escenarios.

  • Esquema flexible para el desarrollo iterativo. A menudo, las aplicaciones buscan implantar prácticas DevOps flexibles y modernas para acelerar los plazos de despliegue de las funciones.
  • Cargas de trabajo sensibles a la latencia. Las cargas de trabajo sensibles a la latencia se refieren a cargas de trabajo como la gestión del estado de los dispositivos IoT y la telemetría, que requieren el manejo eficiente de grandes volúmenes de datos.
  • Cargas de trabajo altamente elásticas. Un ejemplo de ello es una plataforma de reservas de conciertos, que debe adaptarse a la fluctuación de la demanda.
  • Cargas de trabajo de alto rendimiento. Las cargas de trabajo de alto rendimiento se refieren a cargas de trabajo como la gestión del estado de los dispositivos IoT y la telemetría, que requieren el manejo eficiente de grandes volúmenes de datos.
  • Cargas de trabajo de misión crítica de alta disponibilidad. Las aplicaciones web orientadas al cliente son un ejemplo clave, ya que deben mantener la disponibilidad y la fiabilidad para prestar un servicio eficaz a los usuarios.

Las siguientes aplicaciones no se consideran apropiadas para su uso con Azure Cosmos DB:

  • Las cargas de trabajo analíticas (OLAP ) incluyen análisis interactivos, de flujo y por lotes, que satisfacen las necesidades de los Científicos de Datos y los Analistas de Datos. Microsoft Fabric puede ser una alternativa que merezca la pena.
  • Merece la pena considerar las aplicaciones altamente relacionales, como las soluciones CRM de marca blanca. En su lugar, considera Azure SQL, Azure Database para MySQL o Azure Database para PostgreSQL.

Técnicas de optimización de costes:

También están disponibles las siguientes opciones gratuitas:


Conclusión:

En resumen, el modelo de computación sin servidor de Azure ofrece una solución sólida para los desarrolladores que buscan simplificar el desarrollo de aplicaciones y mitigar los retos de gestión de la infraestructura. Utilizando servicios como Azure Functions, Azure Logic Apps y Azure Cosmos DB, las organizaciones pueden crear aplicaciones escalables y basadas en eventos que se adaptan rápidamente a las necesidades cambiantes de los usuarios.

Aunque Azure ofrece ventajas como el ahorro de costes, la reducción del mantenimiento, la escalabilidad y una sólida comunidad de soporte, es esencial reconocer los posibles retos, como los problemas de rendimiento, la dependencia del proveedor, el control limitado y los riesgos de seguridad.

En última instancia, la amplia gama de soluciones sin servidor de Azure permite a los desarrolladores centrarse en la innovación y el desarrollo de funciones, en lugar de gestionar la infraestructura, lo que convierte a Azure en una opción atractiva para las empresas que buscan aprovechar la computación en nube. A medida que más organizaciones adoptan la transformación digital, Azure sin servidor proporciona un enfoque con visión de futuro para crear aplicaciones resistentes y eficientes que puedan adaptarse fácilmente a las necesidades futuras.


Libera todo el potencial de tu plataforma Azure: programa hoy mismo una demostración y una llamada con nuestro equipo especializado para descubrir cómo la Inteligencia en la Nube de DoiT puede elevar tu experiencia e impulsar los resultados.

Schedule a call with our team

You will receive a calendar invite to the email address provided below for a 15-minute call with one of our team members to discuss your needs.

You will be presented with date and time options on the next step

Schedule a call with our team

You will receive a calendar invite to the email address provided below for a 15-minute call with one of our team members to discuss your needs.

You will be presented with date and time options on the next step