Construyendo una aplicación escalable en Azure | Original, traducido por IA

Home 2023.07.07

Este blog fue escrito con la asistencia de ChatGPT-4o.


Tabla de Contenidos

Introducción

En el mundo de la computación en la nube, Microsoft Azure destaca como una plataforma robusta para construir, desplegar y administrar aplicaciones. En nuestro proyecto reciente, aprovechamos varios servicios de Azure, incluyendo Azure Subscription, Azure Kubernetes Service (AKS), Application Insights, Máquinas Virtuales (VMs), Event Hubs, API Management Services y Bases de Datos SQL para crear una infraestructura de aplicaciones escalable y monitoreada. Este blog describe nuestro enfoque, herramientas utilizadas, mejores prácticas y pasos detallados para administrar clústeres, obtener registros y consultar registros.

Comenzar con la Suscripción de Azure

Una Suscripción de Azure es tu puerta de entrada para acceder a los servicios de Azure. Actúa como un contenedor que alberga todos tus recursos, como máquinas virtuales, bases de datos y clústeres de Kubernetes.

  1. Configurar la Suscripción de Azure:
    • Registro: Si no tienes una cuenta de Azure, comienza registrándote en el portal de Azure.
    • Crear una Suscripción: Navega a la sección “Suscripciones” y crea una nueva suscripción. Esta será tu contenedor de facturación y administración.
  2. Organización de Recursos:
    • Grupos de Recursos: Organiza tus recursos en grupos de recursos según su ciclo de vida y criterios de administración.
    • Etiquetas: Usa etiquetas para metadatos adicionales y una gestión y facturación más fáciles de los recursos.

Desplegar Aplicaciones con Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) es un servicio de Kubernetes administrado que simplifica el despliegue, la administración y la escalabilidad de aplicaciones contenedorizadas.

Crear y Administrar un Clúster de AKS

  1. Crear un Clúster de AKS en el Portal de Azure:
    • Configuración: En el portal de Azure, busca AKS y crea un nuevo clúster de Kubernetes.
    • Configuración: Elige el tamaño de tu clúster, configura los grupos de nodos y establece la red.
    • Autenticación: Usa Azure Active Directory (AAD) para el control de acceso seguro.
    • Monitoreo: Activa el monitoreo y los registros durante el proceso de configuración.
  2. Crear un Clúster de AKS con Azure CLI:
    az aks create \
      --resource-group myResourceGroup \
      --name myAKSCluster \
      --node-count 3 \
      --enable-addons monitoring \
      --generate-ssh-keys
    
  3. Administrar tu Clúster de AKS:
    • Escalar el Clúster:
      az aks scale \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 5
      
    • Actualizar el Clúster:
      az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version 1.21.2
      

Desplegar Aplicaciones

  1. Usar Manifestos de Kubernetes: Escribe archivos YAML para tus despliegues, servicios y otros objetos de Kubernetes.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: myapp
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: myapp
      template:
        metadata:
          labels:
            app: myapp
        spec:
          containers:
          - name: myapp
            image: myregistry.azurecr.io/myapp:latest
            ports:
            - containerPort: 80
    
  2. Desplegar con kubectl:
    kubectl apply -f myapp-deployment.yaml
    
  3. Helm Charts: Usa Helm para administrar aplicaciones de Kubernetes y control de versiones.
    helm install myapp ./mychart
    

Obtener Registros de Pods

  1. Conectarse a un Pod y Obtener Registros:
    kubectl logs <pod-name>
    
    • Para transmitir registros:
      kubectl logs <pod-name> -f
      
  2. Usar un Sidecar para Registros:
    • Crea un contenedor sidecar de registros en la especificación de tu pod para enviar registros a un servicio de registros centralizado.
    spec:
      containers:
      - name: myapp
        image: myregistry.azurecr.io/myapp:latest
        ...
      - name: log-shipper
        image: log-shipper:latest
        ...
    

Monitoreo y Diagnósticos con Azure Application Insights

Application Insights proporciona capacidades poderosas de monitoreo y diagnóstico para tus aplicaciones.

  1. Configurar Application Insights:
    • Integración: Añade el SDK de Application Insights a tu código de aplicación.
    • Clave de Instrumentación: Configura tu aplicación con la clave de instrumentación de tu recurso de Application Insights.
  2. Rastrear el Rendimiento:
    • Métricas: Monitorea los tiempos de respuesta, tasas de fallos y dependencias de la aplicación.
    • Flujo de Métricas en Vivo: Visualiza métricas de rendimiento en tiempo real para obtener información inmediata.
  3. Diagnósticos y Solución de Problemas:
    • Mapa de Aplicación: Visualiza dependencias e identifica cuellos de botella de rendimiento.
    • Diagnósticos de Transacciones: Usa trazado distribuido para rastrear solicitudes a través de servicios.

Utilizar Máquinas Virtuales de Azure (VMs)

Las VMs de Azure ofrecen la flexibilidad de ejecutar aplicaciones y servicios personalizados que no están contenedorizados.

  1. Provisión de Máquinas Virtuales:
    • Crear VMs: En el portal de Azure, crea nuevas máquinas virtuales y elige el tamaño y sistema operativo adecuados.
    • Configuración de Red: Configura redes virtuales, subredes y grupos de seguridad para controlar el tráfico.
  2. Configurar VMs:
    • Instalación de Software: Instala el software y dependencias requeridos.
    • Seguridad: Aplica parches y actualizaciones regularmente, configura firewalls y usa Grupos de Seguridad de Red (NSGs).
  3. Administrar VMs:
    • Copia de Seguridad y Restauración: Usa Azure Backup para copias de seguridad de VMs.
    • Monitoreo: Monitorea el rendimiento de las VMs usando Azure Monitor.

Ingestión de Datos en Tiempo Real con Azure Event Hubs

Azure Event Hubs es una plataforma de transmisión de big data y un servicio de ingestión de eventos capaz de recibir y procesar millones de eventos por segundo.

  1. Configurar Event Hubs:
    • Crear un Espacio de Nombres de Event Hub: En el portal de Azure, crea un espacio de nombres de Event Hub para alojar tus Event Hubs.
    • Crear Event Hubs: Dentro del espacio de nombres, crea uno o más Event Hubs para capturar tus flujos de datos.
  2. Ingestar Datos:
    • Productores: Configura tu aplicación o servicios para enviar eventos a Event Hubs usando SDKs disponibles para múltiples lenguajes (por ejemplo, .NET, Java, Python).
    • Particiones: Usa particiones para escalar el procesamiento de eventos, asegurando un alto rendimiento y paralelismo.
  3. Procesar Eventos:
    • Consumidores: Usa grupos de consumidores para leer y procesar eventos. Azure proporciona varias opciones para el procesamiento, incluyendo Azure Stream Analytics, Azure Functions y procesamiento personalizado usando el SDK de Event Hubs.
  4. Monitorear Event Hubs:
    • Métricas: Monitorea el rendimiento, latencia y métricas de procesamiento de eventos a través del portal de Azure.
    • Alertas: Configura alertas para notificarte de cualquier problema, como alta latencia o mensajes perdidos.

Administrar APIs con Azure API Management Services

Azure API Management Services proporciona una manera de crear pasarelas de API consistentes y modernas para servicios back-end existentes.

  1. Configurar API Management:
    • Crear un Servicio de API Management: En el portal de Azure, busca API Management y crea un nuevo servicio.
    • Configurar APIs: Define e importa APIs desde especificaciones OpenAPI, Azure Functions u otros backends.
  2. Proteger APIs:
    • Autenticación y Autorización: Usa OAuth2, validación de JWT y otros mecanismos para proteger tus APIs.
    • Limitación de Tasa y Ajuste de Velocidad: Implementa políticas para proteger tus APIs de abusos.
  3. Monitoreo y Analítica:
    • Insights de API: Rastrear el uso, monitorear el rendimiento y analizar registros.
    • Portal para Desarrolladores: Proporcionar un portal para que los desarrolladores descubran y usen tus APIs.
  4. Administrar Ciclo de Vida:
    • Versionado y Revisiones: Administrar diferentes versiones y revisiones de tus APIs sin problemas.
    • Gestión de Políticas: Aplicar políticas para la transformación, validación y enrutamiento de solicitudes y respuestas.

Utilizar Bases de Datos SQL de Azure

Azure SQL Database es una base de datos relacional completamente administrada con inteligencia integrada, alta disponibilidad y escalabilidad.

  1. Configurar Azure SQL Database:
    • Crear una Base de Datos SQL: En el portal de Azure, navega a Bases de Datos SQL y crea una nueva base de datos.
    • Configurar Base de Datos: Establece el tamaño de la base de datos, el nivel de rendimiento y configura los ajustes de red.
  2. Conectarse a SQL Database:
    • Cadenas de Conexión: Usa las cadenas de conexión proporcionadas para conectar tu aplicación a la base de datos SQL.
    • Reglas de Firewall: Configura reglas de firewall para permitir el acceso desde tu aplicación o máquina local.
  3. Administrar Base de Datos:
    • Copia de Seguridad y Restauración: Usa copias de seguridad automáticas y restauración en un punto en el tiempo para proteger tus datos.
    • Escalado: Escala la base de datos hacia arriba o hacia abajo según tus necesidades de rendimiento.
  4. Monitoreo y Ajuste de Rendimiento:
    • Insights de Rendimiento de Consultas: Monitorea y optimiza el rendimiento de las consultas.
    • Ajuste Automático: Activa las características de ajuste automático para mejorar el rendimiento.

Consultar Registros con Kusto Query Language (KQL)

Kusto Query Language (KQL) se utiliza para consultar Azure Monitor Logs, proporcionando información poderosa sobre tus datos de registros.

  1. Consulta Básica de KQL:
    // Obtener registros de una tabla específica
    LogTableName
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, Level, Message
    
  2. Filtrar y Agregar Datos:
    LogTableName
    | where TimeGenerated > ago(1h) and Level == "Error"
    | summarize Count=count() by bin(TimeGenerated, 5m)
    
  3. Unir Tablas:
    Table1
    | join kind=inner (Table2) on $left.UserId == $right.UserId
    | project Table1.TimeGenerated, Table1.Message, Table2.AdditionalInfo
    
  4. Crear Alertas Basadas en Consultas:
    • En el portal de Azure, navega al espacio de trabajo de Log Analytics.
    • Haz clic en Logs e ingresa tu consulta KQL.
    • Haz clic en Nueva regla de alerta para crear una alerta basada en los resultados de la consulta.

Configurar Alertas para Monitoreo Proactivo

Las Alertas de Azure te ayudan a mantenerte informado sobre la salud y el rendimiento de tus recursos.

  1. Crear Alertas:
    • Alertas de Métricas: Configura alertas basadas en métricas como el uso de CPU, memoria y tiempos de respuesta.
    • Alertas de Registros: Crea alertas basadas en consultas de búsqueda de registros usando KQL.
  2. Configurar Acciones:
    • Grupos de Acciones: Define grupos de acciones para especificar quién recibe las notificaciones y cómo (correo electrónico, SMS, webhook).
    • Integración: Integra con herramientas ITSM como ServiceNow para la gestión automatizada de incidentes.
  3. Responder a Alertas:
    • Paneles: Configura paneles de Azure para proporcionar una vista centralizada de las alertas.
    • Automatización: Usa Azure Automation para responder automáticamente a ciertas alertas.

Conclusión

Al aprovechar Azure Subscription, AKS, Application Insights, Máquinas Virtuales, Event Hubs, API Management Services y Bases de Datos SQL, construimos una infraestructura de aplicaciones escalable, robusta y monitoreada. La suite completa de herramientas de Azure nos permitió desplegar, administrar y monitorear nuestras aplicaciones de manera eficiente. Esta configuración no solo mejoró el rendimiento de nuestras aplicaciones, sino que también nos proporcionó las ideas necesarias para mantener y optimizar nuestros recursos de manera proactiva.


Back Donate