Monday, January 13, 2025

Week #5: Computación

Azure Virtual Machines (VM)

  • Azure Virtual Machines (VM) es una de las ofertas más populares de Azure
  • VM = Virtual Machine = Infraestructura como servicio (IaaS)
  • En un centro de datos empresarial, las aplicaciones se implementan en servidores físicos
  • ¿Dónde se implementan las aplicaciones en el Cloud?
    • Alquiler de máquinas virtuales (VM)
  • Conocer las VM es fundamental para entender el funcionamiento del Cloud

Características de Azure Virtual Machines (VM)

  • Balanceo de carga y autoescalado para varias máquinas virtuales.
  • Automatización del aprovisionamiento para tus máquinas virtuales
  • Administra la conexión y la configuración de la red de tus instancias de máquina virtual (VM)
  • Caso de uso de las VM:
    • Procesamiento de datos y análisis
    • Configuración de instancias VM para actuar como servidores HTTP (Web)
    • Aplicaciones con alto performance

Creación de VM

  • Vamos a lanzar nuestro primer servidor virtual utilizando el portal de Azure
  • Tendremos una primera aproximación de alto nivel a los distintos parámetros
  • Veremos que nuestro servidor web se lanza utilizando los datos de usuario de VM
  • Aprenderemos a iniciar / parar / terminar nuestra instancia.

Comandos útiles para Instancias con Ubuntu


  • sudo su: Cambia el usuario root
  • apt-get -y update: Actualiza la lista de paquetes disponibles de los repositorios de software
  • apt-get -y install nginx: Instala el servidor web Nginx
  • Crea un archivo index.html en el directorio raíz del servidor web con un
  • saludo que incluye el nombre completo del host de la máquina
https://learn.microsoft.com/es-es/azure/virtual-machines/user-data

Opciones de compra

  • Instancias de pago por uso (Pay-As-You-Go): Para cargas de trabajo de corta duración con precios predecibles, facturación por segundos de uso.
  • Planes de ahorro (1 y 3 años): Para usuarios que pueden comprometerse con un volumen de uso específico a largo plazo, ideal para cargas de trabajo continuas y predecibles.
  • Instancias reservadas (1 y 3 años): Ofrecen un descuento significativo con respecto al precio de pago por  uso, a cambio de un compromiso de 1 ó 3 años. Ideales para cargas de trabajo que se ejecutarán de manera continua.
  • Instancias spot: Para cargas de trabajo esporádicas y flexibles con costos reducidos. Estas instancias pueden ser interrumpidas, por lo que son menos fiables para cargas de trabajo críticas.
  • Hosts dedicados de Azure (Azure Dedicated Hosts): Proporciona servidores físicos dedicados para alojar máquinas virtuales, permitiendo control sobre la ubicación y el hardware dedicado.
  • Instancias aisladas: Ofrecen aislamiento a nivel de harware, asegurando que ningún otro cliente comparta el hardware utilizado.
  • Reservas de capacidad a petición: La reserva de capacidad a petición permite reservar capacidad de proceso en una región de Azure o una zona de disponibilidad durante cualquier periodo de tiempo.

Instancias de pago por uso (Pay-As-You-Go)

  • Paga por lo que usas
  • Tiene el coste más elevado, pero no hay que pagar por adelantado
  • Sin compromiso a largo plazo
  • Recomendado para cargas de trabajo a corto plazo y sin interrupciones, cuando se puede predecir el comportamiento de la aplicación.

Planes de ahorro (1 ó 3 años)

  • Obtén un descuento basado en el uso a largo plazo (hasta el 65%)
  • X USD cada hora durante 1 ó 3 años
  • Las compras del plan de ahorro no se pueden cancelar ni reembolsar.
  • Puedes pagar un plan de ahorro por adelantado o mensualmente.
    • El costo total del plan de ahorro por adelantado y mensual es el mismo.
  • Al finalizar el plazo del plan de ahorro, el descuento en la facturación caduca y los recursos se facturan al precio de pago por uso.
  • Los planes de ahorro son ideales para cargas de trabajo predecibles y estables que requerirán recursos de Azure de manera continua durante el periodo de compromiso.

Instancias reservadas

  • Hasta un 72% de descuento en comparación con el servicio de pago por uso.
  • Reserva de atributos de instancia específicos (tipo de instancia, región, periodo, frecuencia de facturación, RAM, vCPU, grupo de instancias).
  • Puedes cancelar el plan en cualquier momento. Tendrás que pagar una comisión.
  • Periodo de reserva:
    • 1 año (+descuento)
    • 3 años (+++descuento)
  • Opciones de pago: Por adelantado o  mensualmente.
  • El costo total de las reservas por adelantado y mensuales es el mismo.
  • Recomendado para aplicaciones de uso constante (piensa en una base de datos)

Instancias spot (Spot Virtual Machines)

  • Puedes obtener un descuento de hasta el 90% en comparación con la demanda.
  • Instancias que puedes "perder" en cualquier momento si su precio máximo es inferior al precio spot actual.
  • Las intancias MAS rentables de Microsoft Azure.
  • Útil para las cargas de trabajo que son resistentes a los fallos.
    • Trabajos por lotes (Batch Jobs)
    • Análisis de datos
    • Procesamiento de imágenes
    • Cualquier carga de trabajo distribuida.
    • Cargas de trabajo con una hora de inicio y finalización flexible
  • No es adecuado para trabajos críticos o bases de datos

Hosts dedicados (Azure Dedicated Host)

  • Proporciona servidores físicos (capaces de hospedar una o varias instancias de Azure Virtual Machines) dedicados a una organización y sus cargas de trabajo.
  • La capacidad del servidor no se comparte con otros clientes.
  • Opciones de compra:
    • Pago por uso: paga la capacidad de proceso por segundo, sin compromisos a largo plazo ni pagos por adelantado.
    • Plan de ahorro: comprometido a gastar una cantidad fija por hora durante uno o tres años.
    • Reservas: contrato de uno o tres años para usar una instancia específica de un servicio
  • La opción más cara.
  • Útil para empresas que tienen fuertes necesidades de regulación o cumplimiento.

Instancias aisladas

  • Usar un tamaño aislado se garantiza que tu máquina virtual es la única que se ejecuta en un servidor físico específico.
  • Azure Compute ofrece tamaños de máquinas virtuales que están aislados para un tipo concreto de hardware y dedicados a un solo cliente.
  • Casos de uso:
    • Necesario para cumplir los requisitos normativos y de cumplimiento
    • Aplicaciones criticas que requieren un ambiente controlado y aislado

Reservas de capacidad a petición

  • Reserva la capacidad de las instancias a petición en una región o AZ específica durante cualquier periodo de tiempo.
  • Se puede implementar y eliminar en cualquier momento sin compromiso de permanencia.
  • Se puede combinar automáticamente con instancias reservadas para usar descuentos por compromiso a término.
  • Adecuado para cargas de trabajo ininterrumpidas a corto plazo que necesitan estar en una AZ específica.

Conjuntos de escalado (Scale Sets)




  • Un grupo lógico de máquinas virtuales en Azure que puede configurarse y gestionarse como una sola unidad.
  • Capaz de añadir más máquinas a medida que crece la demanda (autoescalado)
  • Capaz de reducir máquinas a medida que se ralentiza la demanda
    • Puede gestionar hasta 100 máquinas virtuales en un único conjunto de escalado
    • Puede configurarse para aumentar esa cifra hasta 1000 máquinas virtuales en un único conjunto de escalado.
  • Opcionalmente puedes:
    • Añadir un balanceador de carga (Load Balancer)
    • Distribuir instancias VM a través de múltiples AZs (si están disponibles).
  • Admite escalado manual y autoescalado.

Recomendaciones - Examen de certificación

Los conjuntos de escalado (Scale Sets) están llevando las máquinas virtuales
al siguiente nivel.
  • Los conjuntos de escalado son máquinas virtuales idénticas. Pueden activarse o desactivarse según sea necesario.
  • Una VM base es lo que se copia para formar las máquinas virtuales del conjunto de escalado.
  • A medida que aumenta el uso de recursos, se activan más máquinas virtuales para soportar la carga.
  • Sólo pagas por la máquina virtual, el almacenamiento y los recursos de red que utilizas. No pagas nada adicional por los conjuntos de escalado.

Escalabilidad y alta disponibilidad

  • La escalabilidad significa que una aplicación/sistema puede manejar mayores cargas adaptándose.
  • Hay dos tipos de escalabilidad:
    • Escalabilidad vertical
    • Escalabilidad horizontal (= elasticidad)
  • La escalabilidad está vinculada pero es diferente a la alta disponibilidad

Escalado Vertical

  • Desplegar la aplicación/base de datos en una instancia mayor:
    • Un disco duro más grande
    • Una CPU más rápida
    • Más RAM, CPU, E/S o capacidades de red
  • En Azure: Podemos aumentar el tamaño de la VM
  • Hay límites al escalado vertical

Escalado horizontal

  • Despliegue de múltiples instancias de aplicación/base de datos
  • (Normalmente, pero no siempre) Se prefiere el escalado horizontal al escalado vertical:
    • El escalado vertical tiene límites
    • El escalado vertical puede ser caro
    • El escalado horizontal aumenta la disponibilidad
  • El escalado horizontal necesita infraestructura adicional:
    • Conjuntos de escalado, balanceadores de carga, etc.



Alta disponibilidad

  • La alta disponibilidad suele ir de la mano del escalado horizontal
  • Alta disponibilidad significa ejecutar la aplicación / sistema en al menos 2 zonas de disponibilidad
  • El objetivo de la alta disponibilidad es sobrevivir a la pérdida del centro de datos (desastre)

Alta disponibilidad y escalabilidad para VM

  • Escalado vertical: Aumentar el tamaño de la instancia (= escalar hacia arriba / abajo)
    • Desde: 0.5G de RAM, 1 vCPU
    • Hasta: 11.4 TB de RAM, 416 vCPUs
  • Escalado horizontal: Aumentar el número de instancias (= escalado hacia fuera / hacia dentro)
    • Conjuntos de escalado (VM Scale Sets)
    • Balanceador de carga (Azure Load Balancer)
  • Alta disponibilidad: Ejecutar instancias para la misma aplicación a través de múltiples AZ
    • Conjuntos de escalado (VM Scale Sets) Multi AZ
    • Balanceador de carga Multi AZ

Escalabilidad vs Elasticidad (vs Agilidad)

  • Escalabilidad: capacidad de acomodar una mayor carga reforzando el hardware (scale up / hacia arriba), o añadiendo nodos (scale out / hacia afuera)
  • Elasticidad: una vez que un sistema es escalable, la elasticidad significa que habrá cierto "autoescalado" para que el sistema pueda escalar en función de la carga.
  • Agilidad: (no relacionado con la escalabilidad) los nuevos recursos de IT están a un clic de distancia, lo que significa que se reduce el tiempo para poner esos recursos a disposición de los desarrolladores de semanas a sólo minutos

Arquitectura típica: Web App de 3 niveles



Problemas de los desarrolladores en Azure

  • Gestión de la infraestructura.
  • Desplegar el código.
  • Configurar todas las bases de datos, load balancers, etc.
  • Problemas de escalado.
  • La mayoría de las aplicaciones web tienen la misma arquitectura (Load Balancer + Grupo de escalado + Almacenamiento).
  • Lo único que quieren los desarrolladores es que su código se ejecute.
  • La solución es buscar una forma rápida de lanzar nuestro código en la nube. Para ello podemos usar el servicio de App Service que nos permite desplegar aplicaciones de forma consistente en diferentes aplicaciones y entornos. Esta opción no requiere muchos conocimientos de Cloud Computing.

App Service

  • App Service ofrece una solución robusta para desplegar, administrar y escalar aplicaciones web de manera eficiente y segura.
  • App Service (Azure) = Elastic BeanStalk (AWS).
  • Utiliza muchos de los componentes familiares de Azure: VMs, grupos de escalado, Azure Load Balancer, Azure SQL Database y otros servicios de bases de datos, etc.
  • Todo esto se presenta en una sola vista que es intuitiva y fácil de comprender.
  • El único deber del desarrollador es el código de la aplicación.
  • App Service = Plataforma como Servicio (PaaS).
  • Utilizar App Service es gratuito, pero se paga por los recursos subyacentes que se consumen.

  • Servicio gestionado:
    • La configuración de la instancia/el sistema operativo es gestionada por App Service
    • Aprovisionamiento automático de capacidad.
    • Balanceo de carga y autoescalado incorporados.
    • Monitoreo del estado de la aplicación y capacidad de respuesta.
  • App Service se usa especialmente en los siguientes casos de uso:
    • Web Apps: alojar sitios web dinámicos, blogs, tiendas en línea y más, con facilidad de escala automática y administración simplificada.
    • Web App para contenedores: ejecutar aplicaciones en contenedores Docker, lo que facilita la implementación y escalabilidad de aplicaciones empaquetadas en contenedores de forma rápida y sencilla.
    • API Apps: permite exponer y gestionar servicios web de manera eficiente, con opciones de autenticación, escalabilidad y monitoreo integradas.

Azure Container Instances (ACI)

¿Qué es Docker?

  • Docker es una plataforma de desarrollo de software para desplegar aplicaciones.
  • Las aplicaciones se empaquetan en contenedores que pueden ejecutarse en cualquier sistema operativo.
  • Las aplicaciones se ejecutan igual, independientemente de dónde se ejecuten
    • Cualquier máquina
    • No hay problemas de compatibilidad
    • Comportamiento predecible
    • Menos trabajo
    • Más fácil de mantener y desplegar
    • Funciona con cualquier lenguaje, cualquier sistema operativo y cualquier tecnología
  • Amplía y reduce los contenedores muy rápidamente (en segundos).

Docker en un sistema operativo

  • Los contenedores de Docker se ejecutan igual en cualquier infraestructura:
    • Máquina local
    • Centro de datos corporativo
    • Cloud
  • Son ligeros
    • En comparación con las máquinas virtuales
  • Docker proporciona aislamiento para los contenedores


¿Dónde se almacenan las imágenes Docker?

  • Las imágenes de Docker se almacenan en repositorios de Docker.
  • Públicos: Docker Hub https://hub.docker.com/
    • Encuentra imágenes base para muchas tecnologías o sistemas operativos:
    • Ubuntu
    • MySQL
    • NodeJS, Java...
  • Privado: Azure Container Registry (ACR)

Servicio Azure Container Instances (ACI)

Servicio que permite ejecutar contenedores de docker en el cloud de Microsoft Azure.



Características de ACI

  • Ejecución de cargas de trabajo en contenedores
    • Servicio Azure principal para ejecutar cargas de trabajo de contenedores
    • Una carga de trabajo es un proceso o aplicación
  • Bajo Demanda = Ahorra $$$
    • Utiliza aplicaciones en contenedores para procesar bajo demanda, creando la imagen del contenedor cuando la necesites.
  • Selecciona la herramienta que más te guste para hacer los despliegues
    • Utiliza el portal de Azure, Azure CLI o PowerShell. La que más te guste.

Azure Kubernetes Service (AKS)

Kubernetes


Kubernetes (K8s) es un sistema de orquestación de contenedores de código abierto para automatizar el despliegue, escalado y gestión de aplicaciones.
  • Código abierto: Código base público y participación comunitaria en en el producto.
  • Orquestación. Realiza un seguimiento de muchas partes de un sistema. Se asegura de que contenedores están configurados correctamente para trabajar juntos.
  • Despliegue automático de aplicación. Kubernetes desplegará más imágenes de contenedores según sea necesario.
  • Escalado automático. Monitorización automática de carga de la aplicación para determinar cuándo escalar el número de contenedores utilizados.

Características de Azure Kubernetes Service (AKS)


  • Replicar arquitecturas de contenedores
    • Reutiliza la arquitectura de contenedores gestionándola en Kubernetes. Esto hace que la configuración sea más rápida y aumente la confianza en el sistema.
  • Servicios Azure estándar incluidos
    • No tienes que preocuparte por la infraestructura y el hardware. Obtienes gestión de identidad y acceso, aprovisionamiento elástico y mucho más.
  • Alcance global
    • Utiliza Kubernetes compatibles con las regiones Azure compatibles e instalaciones locales mediante Azure Stack.

Caso prático



Azure Virtual Desktop

  • Solución de virtualización de escritorio y aplicaciones en el Cloud de Microsoft Azure.
  • Conéctate a tus escritorios desde cualquier lugar usando cualquier dispositivo de forma remota.
  • Ofrece una experiencia optimizada para Office 365. 
  • Soporta varios usuarios pueden acceder al mismo Azure Virtual Desktop simultáneamente.
  • Casos de uso:
    • Entorno de trabajo híbrido
    • Desarrollo y testing
    • Recuperación ante desastres


Azure Functions

¿Qué es Serverless?

  • Serverless es un nuevo paradigma en el que los desarrolladores ya no tienen que gestionar servidores...
  • Sólo despliegan código.
  • Sólo despliegan... ¡funciones!
  • Serverless no significa que no haya servidores... significa que simplemente no los gestionas / aprovisionas / ves


Beneficios de Azure Functions

  • Sólo se ejecuta cuando es necesario
    • La función de Azure sólo se ejecuta cuando hay datos que procesar.
  • Ahorra dinero
    • Sin tráfico no se usan recursos.Esto significa que no pagas por la función cuando no está en uso.
  • Resistencia
    • Si la función falla, no afecta a otras instancias de la función.

Resumen - Computación

  • Azure Compute: Ofrece soluciones de cómputo
  • Azure Virtual Machines (VM): Servidores virtuales escalables
  • Opciones de compra: Diferentes planes y precios para ajustarse a necesidades específicas
  • Scale Sets: Facilita la administración de VMs a gran escala para aplicaciones de alto tráfico
  • Alta disponibilidad vs escalabilidad (vertical y horizontal) vs elasticidad vs agilidad
  • App Service: Servicio para construir, hospedar y escalar aplicaciones web
  • Azure Container Instances (ACI): Servicio de ejecución de contenedores
  • Azure Container Registry (ACR): Servicio para almacenar y gestionar imágenes de contenedores
  • Azure Kubernetes Service (AKS): Servicio de orquestación de contenedores para aplicaciones más complejas
  • Azure Virtual Desktop: Escritorios y aplicaciones virtuales con seguridad y escalabilidad
  • Azure Functions: Ejecución de funciones sin servidor, con escalamiento automático y facturación por uso





No comments:

Post a Comment

Cuando el código funciona, pero no tiene tests: ¿y ahora qué?

Seguramente te ha pasado alguna vez. Te dan acceso al repositorio de un nuevo proyecto. Lo abres con curiosidad, esperas encontrar una estru...