La nube de Microsoft Azure ofrece una gran cantidad de servicios para casi todos los escenarios que puedas necesitar. Puede clasificar estos servicios en tipos de computación en la nube como IaaS, PaaS y SaaS para determinar la cantidad de control y responsabilidad que tiene frente al tiempo que puede dedicar a la construcción de cosas importantes.
Déjeme explicar estos tipos un poco más:
- IaaS (Infraestructura como servicio)
- PaaS (Platform-as-a-Service)
- SaaS (Software-as-a-Service)
- Los principales servicios PaaS de Azure
- Web Apps
- Aplicaciones móviles
- Logic Apps
- Azure Functions
- Azure WebJobs
- ¿Qué usar cuando
- Características compartidas de los App Services
- Despliegue de servicios
- Azure Event Grid
- Azure Service Bus
- Azure Storage
- Almacenamiento de blobs
- Table Storage
- Queue Storage
- File Storage
- Almacenamiento en Disco
- Azure Cosmos DB
- Azure Cognitive Services
- Azure CDN
- Azure Redis Cache
- Azure API Management
- Conclusión
IaaS (Infraestructura como servicio)
Los servicios IaaS típicos son el servicio de contenedores y las máquinas virtuales. Estos le permiten tener un gran control sobre la forma de ejecutarlos, pero también requieren que usted sea responsable de cosas como el sistema operativo, el antivirus y el equilibrio de carga. Debido a esto, usted y su equipo pueden dedicar menos tiempo a trabajar en añadir valor al negocio.
PaaS (Platform-as-a-Service)
Ejemplos de servicios PaaS son App Services, Azure Search y Azure CDN. No tienes que preocuparte por el sistema operativo ni por el servidor, simplemente puedes ejecutar tu aplicación. Usted es responsable de alguna configuración del servidor, como el escalado, aunque para algunos servicios, como Azure Functions, eso sucede automáticamente.
SaaS (Software-as-a-Service)
Ejemplos de servicios SaaS son cosas como Azure IoT Suite y Office 365. SaaS es el nivel de abstracción más alto y te permite simplemente usar la aplicación, ni siquiera tienes que construirla. Sólo hay que configurarla. No hay que preocuparse por el sistema operativo ni por el escalado de la aplicación. Esto le permite trabajar en el valor del negocio, pero le ofrece poco control sobre su aplicación.
Para los desarrolladores de software, PaaS es un gran tipo de computación en la nube para usar. Tienes suficiente control para trabajar en tu aplicación y ajustarla para que esté bien y no tienes que preocuparte por todas las cosas de las operaciones. Las cosas simplemente se ejecutan sin preocuparse por los parches del sistema operativo o el equilibrio de carga.
Azure tiene una oferta PaaS muy fuerte, que es muy atractiva para los desarrolladores. Este artículo hablará de los principales servicios PaaS de Azure para desarrolladores que pueden mejorar su aplicación.
Los principales servicios PaaS de Azure
Uno de los principales servicios PaaS de Azure es Azure App Services. Azure App Services proporciona múltiples tipos de servicio, cada uno orientado a alojar su aplicación o lógica de negocio para un caso de uso específico. Además, los tipos de App Service comparten capacidades comunes como el autoescalado, la autenticación y la autorización y los dominios personalizados y SSL.
Vamos a repasar los tipos de App Service:
Web Apps
Azure App Service Web Apps son esenciales si quieres alojar una aplicación web ASP.NET estándar. Las Web Apps son una abstracción de un servidor web como IIS o Tomcat y pueden ejecutar aplicaciones que están escritas en .NET, PHP, Python, Node.js, Java y más. Son muy fáciles de configurar y le proporcionan muchas ventajas desde el principio, como el hecho de que, por defecto, están disponibles el 99,95% del tiempo. No hay que preocuparse por el tiempo de inactividad. Los App Services ya están disponibles para Windows y Linux.
Aplicaciones móviles
Azure también puede ayudarle a crear aplicaciones móviles. Puede alojar un backend para su aplicación móvil en Azure App Services Mobile Apps. Puede conectarse fácilmente a este backend utilizando los SDK para Azure Mobile Apps que están disponibles para IOS, Android, Windows, Xamarin.IOS, Xamarin.Android y Xamarin.Forms.
El backend móvil le proporciona algunas ventajas únicas. Una de ellas es la capacidad de realizar una sincronización sin conexión. Esto permite a un usuario seguir trabajando con la aplicación si está desconectado y sincronizar los datos de nuevo con el backend cuando vuelva a conectarse. Otra capacidad es la de las notificaciones push. Esto le permite enviar notificaciones sobre su aplicación al dispositivo del usuario. Además, las Mobile Apps tienen las mismas capacidades que las Web Apps, como el autoescalado y la alta disponibilidad.
Logic Apps
Azure App Service Las Logic Apps se diferencian de las Web Apps y las Mobile Apps en que no se aloja una aplicación en ellas, sino que se orquesta la lógica empresarial con ellas. Piense en las Logic Apps como una forma de automatizar un proceso de negocio con sólo configurarlo.
Una Logic App es iniciada por un Trigger. Este puede ser un tiempo (cada 15 minutos) o una fuente externa, como un nuevo mensaje en una cola. El Trigger pasa valores al flujo de trabajo (como el contenido del mensaje de la cola), que pueden ser utilizados en toda la Logic App. El resto del flujo de la Logic App consiste en llamar a Conectores, que son APIs a servicios de terceros, como Office365 o Twitter o sus propias APIs.
Logic Apps escalan automáticamente y sólo se paga por ellas cuando se ejecutan. Esto se denomina a veces «sin servidor» porque significa que puedes centrarte completamente en tu aplicación o lógica y no en la infraestructura subyacente.
Azure Functions
Azure App Services Function Apps pueden alojar una o varias Azure Functions. Se utilizan las Azure Functions para alojar pequeñas aplicaciones, como trabajos en segundo plano o un microservicio que sólo se ejecuta durante un breve período de tiempo.
Las Azure Functions pueden ser activadas por temporizadores configurables, como en una programación (cada 15 minutos) o por un servicio externo, como cuando se añade un nuevo Blob a Azure Blob Storage. Cuando se activan, el código de la función de Azure puede utilizar el valor del activador, como el Blob que se ha añadido. También puedes añadir enlaces de salida a una función de Azure para dar salida a un valor a un servicio externo, sin tener que escribir ningún tipo de plomería. Esto podría ser, por ejemplo, una salida de Blob Storage en la que simplemente se devuelve un Blob sin tener que escribir código para conectarse a Azure Storage.
Al igual que las Logic Apps, las Azure Functions son «sin servidor», porque se escalan automáticamente y sólo se paga por ellas cuando se ejecutan.
Azure WebJobs
Otra forma de ejecutar tareas en segundo plano es ejecutándolas en Azure WebJobs. Los WebJobs forman parte de los App Services y se ejecutan dentro de un App Service como una Web App o una Mobile App. Puede escribir y alojar código en WebJobs que se inicie mediante un activador, como un temporizador (cada 15 minutos) o un servicio externo, como un nuevo mensaje en una cola.
Los WebJobs funcionan de forma similar a las Funciones de Azure en el sentido de que ejecutan pequeños fragmentos de código que pueden ser activados por fuentes externas que no requieren ningún código de fontanería para su configuración.
Se diferencian de las Funciones de Azure en que es necesario escalarlas manualmente. Pagas por el App Service que aloja tu Web Job, que es una cuota mensual, independientemente de si el WebJob se ejecuta o no.
Lee más: Compara Azure Functions vs Azure WebJobs
¿Qué usar cuando
Entonces qué App Service deberías usar cuando? Esta tabla puede ayudar:
Aplicaciones web | Aplicaciones móviles | Aplicaciones lógicas | Funciones | WebJobs | |
Hospedar aplicaciones web y APIs | X | ||||
Alojamiento de backend para aplicaciones móviles | X | ||||
Alojamiento de flujos de trabajo de lógica empresarial | X | ||||
Albergue de tareas en segundo plano | X | X | |||
Escala automáticamente y sólo paga cuando se ejecuta | X | X | |||
Controlar el escalado y pagar una cuota mensual | X | X | X |
Características compartidas de los App Services
Los App Services de Azure comparten algunas características impresionantes, que hacen que su uso sea muy atractivo. Aquí están algunas de ellas:
- Fácil autenticación y autorización
- Entrega continua
- Dominios personalizados
- Conexiones híbridas
- Permite conectarse a recursos locales, como servicios web o bases de datos
- Escalado (automático) y equilibrio de carga
- Ranuras de despliegue
- Le permiten probar la nueva versión de su aplicación y desplegarla en producción sin tiempo de inactividad. Incluso le permiten dirigir parte de su tráfico de producción a la nueva versión de su aplicación, para ver si funciona como se espera.
- Aprenda más sobre las ranuras de despliegue aquí
Despliegue de servicios
Crear una nueva Web App o Logic App es sencillo a través del Portal de Azure, pero realmente debería automatizar sus despliegues para poder repetirlos en diferentes entornos y ejecutar exactamente la misma configuración. Puedes hacerlo creando plantillas de Azure Resource Manager (ARM) que despliegas desde Visual Studio o en un pipeline de entrega continua usando un servicio como Visual Studio Team Services.
Las plantillas ARM describen tus recursos como Web Apps, Azure SQL Databases y grupos de recursos en documentos JSON. Puedes crearlas utilizando la plantilla de proyecto de Azure Resource Group en Visual Studio e inspirarte haciendo clic en el botón Automation Script de cualquier recurso en el Azure Portal.
Azure Event Grid
Un servicio relativamente nuevo, Azure Event Grid, actúa como el pegamento entre servicios. Azure Event Grid puede enrutar eventos desde cualquier origen a cualquier destino.
Casi todos los servicios de Azure pueden publicar eventos que Azure Event Grid puede recibir y utilizar para activar su aplicación. También puede hacer que sus propias aplicaciones y servicios publiquen eventos que Azure Event Grid puede utilizar para enrutar a otros servicios.
Azure Event Grid se escala automáticamente y usted sólo paga por el número de operaciones que utiliza.
Azure Event Grid elimina la necesidad de sondeo. Sus aplicaciones pueden escuchar y reaccionar a los eventos de cualquier servicio que publique eventos a Azure Event Grid.
Puede, por ejemplo, hacer que Azure Event Grid escuche los cambios en su lista de correo y active una Azure Logic App cuando algo cambie.
Azure Service Bus
Uno de los servicios más antiguos y más utilizados y fiables de Azure es el Azure Service Bus. Se compone de múltiples servicios, sobre todo Azure Service Bus Queues y Azure Service Bus Topics.
Una aplicación puede poner mensajes en una Azure Service Bus Queue. Cada mensaje es leído desde la cola y procesado por una aplicación. Las colas de Azure Service Bus tienen algunas capacidades avanzadas que se obtienen de forma inmediata, como la detección de duplicados y una subcola de mensajes muertos a la que se mueven los mensajes que no se pueden procesar.
Los temas de Azure Service Bus son un poco diferentes. Las aplicaciones pueden poner mensajes en un Azure Service Bus Topic y varias aplicaciones pueden leer y procesar el mensaje. Reciben los mensajes que tienen atributos que les interesan. Se suscriben a los «temas» de la cola. Los temas de Azure Service Bus tienen las mismas capacidades avanzadas que las colas.
Ambos servicios permiten desacoplar la aplicación que pone los mensajes en la cola de la aplicación que procesa los mensajes. Este patrón permite a la aplicación que procesa las tareas a su propio ritmo sin hacer esperar al usuario. Esto es útil cuando el procesamiento puede llevar un tiempo y no quieres que el usuario tenga que esperar en ello, por ejemplo cuando estás procesando una solicitud de pedido que puede tardar 5 minutos.
Azure Storage
Un bloque de construcción básico en cualquier aplicación es el almacenamiento de datos. Azure Storage proporciona múltiples opciones para almacenar datos, como archivos o filas de datos. Ofrece varios servicios diferentes que son todos relativamente baratos, escalan casi infinitamente y a través de regiones geográficas y ofrecen características como el cifrado y la autenticación. Todo esto se obtiene de forma inmediata, simplemente creando una cuenta de almacenamiento de Azure. Vamos a hablar de los distintos tipos de Azure Storage:
Almacenamiento de blobs
Almacenas archivos grandes, o «blobs» en Azure Blob Storage. Pueden ser cosas como archivos VHD o archivos de audio o vídeo o copias de seguridad de bases de datos.
Puedes elegir un nivel de almacenamiento Blob que determina tu rendimiento y tus costes. Existe el nivel Hot, para los Blobs a los que se accede con frecuencia. También está el nivel Cool, que se utiliza para los Blobs a los que no se accede tan a menudo, tal vez una vez al mes. Y luego está el nivel Archive, para los Blobs que no utilizas casi nunca. Cuando solicitas un Blob de la capa Archive, pueden pasar horas antes de que puedas acceder a él.
Table Storage
Puedes almacenar datos semirelacionales en filas y columnas utilizando Azure Table Storage. Esto es perfecto para cosas como el registro de datos. Se almacenan los datos en tablas que son similares a las de SQL Server, pero son menos estrictas en el sentido de que no tienen relaciones entre ellas. Azure Table Storage es rápido y relativamente barato, al igual que los otros tipos de Azure Storage.
Queue Storage
Puedes almacenar pequeños mensajes que pueden ser recogidos y procesados más tarde en Azure Storage Queues, al igual que las Azure Service Bus Queues. Esta es una oferta un poco extraña porque se solapa con las colas de Azure Service Bus. Se diferencian en que las colas del bus de servicios tienen detección de duplicados y las colas de almacenamiento no. Además, los mensajes de Service Bus Queue permanecen disponibles después de 7 días, mientras que los mensajes de Storage Queue sólo pueden almacenarse durante 7 días.
File Storage
Puedes utilizar Azure File Storage como un disco duro adicional que montas en tu ordenador o en una VM. Es un gran servicio para iniciarse en la nube migrando tus archivos a ella. Puedes hacer que las aplicaciones lo utilicen simplemente apuntando a Azure File Storage en lugar de a su propio disco duro. Esto te permite empezar a moverte a la nube.
Almacenamiento en Disco
El Almacenamiento en Disco de Azure es una característica premium y es de alto rendimiento y útil para cuando necesites realizar trabajo intensivo de E/S, como en un disco duro primario de una VM. Actúa como un disco escalable de alto rendimiento que puede montar en una VM.
Azure Cosmos DB
La nueva versión y nombre de Azure DocumentDB es Azure Cosmos DB. Azure Cosmos DB es una oferta de base de datos que se adapta perfectamente a la nube. Como servicio PaaS, sólo tienes que girar un Cosmos DB y estás listo para ir. Si estabas usando Azure DocumentDB, ahora estás usando automáticamente Azure Cosmos DB. Su código no tiene que ser cambiado.
Hay un par de cosas que hacen que Cosmos DB sea extraordinario:
- Puede programar contra él usando diferentes ‘APIs’, como SQL, JavaScript, MongoDB, Gremlin y Table Storage. Ya no tienes que elegir un tipo de base de datos, sólo tienes que elegir la forma en que quieres hablar con ella, Cosmos DB se encarga del resto
- Ya no es necesario crear índices, Cosmos DB lo hace automáticamente por ti
- Cosmos DB tiene un alto rendimiento. Incluso garantiza una baja latencia en su SLA
- Obtienes escalabilidad geográfica out-of-the-box. Sólo tienes que indicar en qué parte del mundo quieres que estén tus datos y se replican en tiempo real. De esta manera, puedes asegurarte de que tus datos están cerca de tus usuarios
Aprende cómo empezar con Azure Cosmos DB en estos tutoriales de 5 minutos.
Cosmos DB es más adecuado para datos no relacionales o semirelacionales.
Azure Cognitive Services
Añadir inteligencia a tus aplicaciones nunca ha sido tan fácil como con los Azure Cognitive Services. Se trata de un conjunto de APIs que proporcionan habilidades casi mágicas, potenciadas por la IA y el Machine Learning. Hay cerca de 30 Servicios Cognitivos y hay más en camino. Estos son algunos ejemplos:
- Emotion API, que analiza rostros en fotos y vídeos para detectar emociones como la felicidad, la tristeza, el asco, etc
- Language Understanding Intelligent Service (o LUIS), que realmente puede entender el contexto lingüístico en más de 12 idiomas. Puedes utilizarlo para crear un bot inteligente que realmente entienda lo que le estás diciendo
- API de reconocimiento de hablantes, que identifica a los hablantes basándose en el habla. Puedes usarlo para autenticar usando la voz o para identificar a las personas en base a su voz
- API de Visión por Computador, que puede detectar información sobre el contenido visual que se encuentra en las imágenes, como que el fondo es agua y cielo o que la chaqueta que lleva la persona es negra
Los Servicios Cognitivos son muy fáciles de usar, ya que sólo los utilizas desde la nube y no necesitas gestionar ninguna infraestructura o configuración.
Puedes usar tus propios datos para entrenar los servicios y mejorar tus resultados. Haciendo esto, la API de Cara podría, por ejemplo, devolver los nombres y edades de tus compañeros de trabajo. Además, los servicios cognitivos aprenden sobre la marcha, gracias a los datos que les proporcionas. Esto los hace más inteligentes y precisos.
Para utilizar un Servicio Cognitivo, sólo tienes que llamar al punto final de la API, como https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect con una clave de suscripción que obtienes cuando te registras y alimentarlo con los parámetros que necesita, como un Byte Array de una imagen, en el caso de la Face API. Esto devuelve una respuesta JSON como esta (se omiten algunas líneas para ahorrar espacio):
Resultado de la detección facial:
}, "smile": 0.826, "headPose": { "pitch": 0.0, "roll": -16.9, "yaw": 21.3 }, "gender": "female", "age": 23.8, "facialHair": { "moustache": 0.0, "beard": 0.0, "sideburns": 0.0 }, "glasses": "ReadingGlasses", "makeup": { "eyeMakeup": true, "lipMakeup": true }, "emotion": { "anger": 0.103, "contempt": 0.003, "disgust": 0.038, "fear": 0.003, "happiness": 0.826, "neutral": 0.006, "sadness": 0.001, "surprise": 0.02 }, … }]
Puedes ver en la salida que este servicio en particular devuelve un montón de datos. Incluso detecta dónde se encuentran los rasgos faciales en la imagen y si la persona lleva maquillaje. Creo que es realmente sorprendente.
Azure CDN
Puedes acelerar tus aplicaciones descargando el tráfico a Azure CDN. Azure CDN (Content Delivery Network) actúa como un punto final para su contenido estático como archivos de vídeo, imagen, JavaScript y CSS. Al hacer que Azure CDN sirva estos archivos, su aplicación no tiene que hacerlo y tiene más recursos para manejar más solicitudes. Además, Azure CDN replica el contenido estático en puntos de presencia (PoPs) de todo el mundo, colocando así el contenido estático cerca de donde están sus usuarios y limitando la latencia, lo que es bueno para el rendimiento.
Puede utilizar Azure CDN creando un punto final de Azure CDN, acoplándolo a una fuente, como Azure Storage y subiendo los archivos a Azure Storage. Azure CDN replica automáticamente los archivos a los PoPs de todo el mundo y usted puede enlazar a los archivos a través de una URL como https://custom.azureedge.net/cd/myimag.png. También puede utilizar un nombre de dominio personalizado para la URL.
Azure Redis Cache
Otra forma de acelerar sus aplicaciones es almacenando datos en caché utilizando Azure Redis Cache. Cuando obtienes datos de una caché en lugar de otro almacén de datos, como una base de datos, aceleras tu aplicación.
Esto se debe a que una caché como Azure Redis Cache mantiene los datos en memoria y almacena los datos en un formato simple de clave/valor. Debido a esto, los datos se pueden servir más rápidamente ya que no tienen que ser recuperados del disco y no tienen que ser recuperados mediante la ejecución de una consulta compleja.
Azure Redis Cache proporciona una caché como servicio y proporciona capacidades avanzadas, como la agrupación y la geo-replicación. Se basa en el popular código abierto Redis Cache y ahora está respaldado por los acuerdos de nivel de servicio de Microsoft y el soporte empresarial. Azure Redis Cache es la opción de almacenamiento en caché para aplicaciones en Azure.
Azure API Management
Puede utilizar Azure API Management para mejorar sus API o las de terceros que utilice. Azure API Management actúa como una puerta de enlace entre su API y el mundo exterior. Esto le permite mejorar su API.
Con API Management, puede crear un portal donde los usuarios de su API puedan ir a gestionar su(s) suscripción(es) y a probar la aplicación. Un ejemplo de este portal para desarrolladores es el sitio web de uno de los Servicios Cognitivos, que también utiliza la Gestión de la API:
Puedes controlar el uso de la API estableciendo límites por usuario o tipo de suscripción. Esta es una buena forma de monetizar tu API ofreciendo, por ejemplo, un nivel de uso gratuito de hasta 10 peticiones al día, y si se necesita más, se empieza a pagar. Si los usuarios intentan utilizar más, sin la suscripción adecuada, sus peticiones se verán estranguladas.
Además, puedes mejorar las APIs haciéndolas más performantes. Puede almacenar en caché las respuestas de la API para que no tengan que obtener las respuestas haciendo cálculos o componiendo datos desde una fuente de datos.
Y puede proteger sus APIs con claves, contraseñas, certificados y filtrado de IP. Además, puedes transformar la entrada y la salida de tus APIs. Puede, por ejemplo, transformar el XML entrante en JSON o hacer lo mismo con las respuestas.
Azure API Management es realmente potente y aumenta el control que tiene sobre sus APIs (y las APIs de terceros que expone a través de API Management). Y te permite hacerlo sin cambiar la API.
Conclusión
Los servicios de este artículo son todos ejemplos de servicios PaaS de Azure. Todos ellos son muy fáciles de poner en marcha y requieren un mantenimiento mínimo. Se mantendrán en funcionamiento, son auto-reparables y básicamente «sólo funcionan».
El valor que estos servicios pueden proporcionar es enorme y fácil de incorporar en sus aplicaciones. Esto realmente se encarga de muchas de las tareas de fontanería y repetitivas que solíamos construir y hacer nosotros mismos.
Azure PaaS nos permite centrarnos en construir cosas que importan. Recuerde que siempre debe centrarse en mejorar sus aplicaciones también mediante el uso de una herramienta de APM de ciclo de vida completo como Stackify Retrace. Obtenga más información.