Compartir a través de


Prácticas sostenibles de ingeniería de software en Azure Kubernetes Service (AKS)

Los principios de ingeniería de software sostenible son un conjunto de competencias que le ayudarán a definir, crear y ejecutar aplicaciones sostenibles. El objetivo general es reducir la huella de carbono de cada aspecto de la aplicación. La guía de Azure Well-Architected Framework para la sostenibilidad se alinea con los Principios de ingeniería de software sostenible de la Green Software Foundation y proporciona información general sobre los principios de ingeniería de software sostenible.

La ingeniería de software sostenible supone un cambio de prioridades y de enfoque. En muchos casos, la forma en que se diseña y ejecuta la mayoría del software prioriza un rendimiento rápido y una latencia baja. La ingeniería de software sostenible se centra en reducir las emisiones de carbono tanto como sea posible.

  • La aplicación de principios de ingeniería de software sostenible puede proporcionar un rendimiento más rápido o una menor latencia, por ejemplo, al reducir el recorrido total de la red.
  • Reducir las emisiones de carbono puede ralentizar el rendimiento o aumentar la latencia, como el retraso de las cargas de trabajo de prioridad baja.

La siguiente guía se centra en los servicios que va a compilar u operar en Azure con Azure Kubernetes Service (AKS). En este artículo se incluyen listas de comprobación de diseño y configuración, prácticas de diseño recomendadas y opciones de configuración. Antes de aplicar principios de ingeniería de software sostenible a una aplicación, revise las prioridades, las necesidades y las ventajas e inconvenientes de su aplicación.

Requisitos previos

  • Reconocimiento de la guía de sostenibilidad de Well-Architected Framework puede ayudarle a generar una arquitectura de nube de alta calidad, estable y eficaz. Le recomendamos que empiece por leer más sobre las cargas de trabajo sostenibles y que revise su carga de trabajo mediante la evaluación Microsoft Azure Well-Architected Review.
  • Tener requisitos empresariales claramente definidos es fundamental al compilar aplicaciones, ya que podrían tener un impacto directo en las arquitecturas y configuraciones de clúster y de carga de trabajo. Al compilar o actualizar aplicaciones existentes, revise las áreas de diseño de sostenibilidad de Well-Architected Framework, junto con el ciclo de vida holístico de la aplicación.

Reconocimiento del modelo de responsabilidad compartida

La sostenibilidad es una responsabilidad compartida entre el proveedor de nube y el cliente o el asociado que diseña e implementa clústeres de AKS en la plataforma. La implementación de AKS no hace que sea sostenible automáticamente, incluso si los centros de datos están optimizados para la sostenibilidad. Las aplicaciones que no están correctamente optimizadas podrían seguir emitiendo más carbono de lo necesario.

Obtenga más información sobre el modelo de responsabilidad compartida para la sostenibilidad.

Principios de diseño

  • Eficiencia de carbono: emitir la menor cantidad de carbono posible.

    Una aplicación en la nube eficiente en carbono es una que está optimizada y el punto de partida es la optimización de costos.

  • Eficiencia energética: usar la menor cantidad de energía posible.

    Una manera de aumentar la eficiencia energética es ejecutar la aplicación en tan pocos servidores como sea posible, con los servidores ejecutándose en la tasa de utilización más alta, aumentando también la eficiencia del hardware.

  • Eficiencia del hardware: usar la menor cantidad posible de carbono incorporado.

    Hay dos enfoques principales para la eficiencia del hardware:

    • En el caso de los dispositivos de usuario final, extiende la vida útil del hardware.
    • En el caso de la informática en la nube, aumenta el uso de recursos.
  • Conciencia del carbono: haga más cuando la electricidad es más limpia y haga menos cuando la electricidad es más sucia.

    Ser consciente del carbono significa responder a los cambios en la intensidad del carbono aumentando o disminuyendo su demanda.

Modelos y prácticas de diseño

Antes de revisar las recomendaciones detalladas en cada una de las áreas de diseño, se recomienda considerar detenidamente los siguientes patrones de diseño para crear cargas de trabajo sostenibles en AKS:

Modelo de diseño Se aplica a la carga de trabajo Se aplica al clúster
Diseño para el escalado independiente de componentes lógicos ✔️
Diseño para el escalado controlado por eventos ✔️
Objetivo de diseño sin estado ✔️
Habilitar las actualizaciones automáticas de clústeres y nodos ✔️
Instalación de complementos y extensiones compatibles ✔️ ✔️
Incluir en contenedores la carga de trabajo cuando corresponda ✔️
Uso de hardware eficiente en energía ✔️
Satisfacer las necesidades de escalabilidad y usar funcionalidades de escalado automático y expansión ✔️
Desactivar cargas de trabajo y grupos de nodos fuera del horario comercial ✔️ ✔️
Eliminar recursos no utilizados ✔️ ✔️
Etiquetado de los recursos ✔️ ✔️
Optimizar el uso del almacenamiento ✔️ ✔️
Elegir una región más cercana a los usuarios ✔️
Reducción del recorrido de red entre nodos ✔️
Evaluación mediante una malla de servicio ✔️
Optimización de la recopilación de registros ✔️ ✔️
Almacenar en caché datos estáticos ✔️ ✔️
Evaluar si se va a usar la terminación TLS ✔️ ✔️
Usar herramientas y controles de seguridad de red nativos de la nube ✔️ ✔️
Análisis de vulnerabilidades ✔️ ✔️

Diseño de aplicación

Explore esta sección para obtener más información sobre cómo optimizar las aplicaciones para un diseño de aplicaciones más sostenible.

Diseño para el escalado independiente de componentes lógicos

Una arquitectura de microservicios puede reducir los recursos de proceso necesarios, ya que permite el escalado independiente de sus componentes lógicos y garantiza que se escalen según la demanda.

  • Considere la posibilidad de usar Dapr Framework u otros proyectos CNCF para ayudarle a separar la funcionalidad de su aplicación en diferentes microservicios y permitir el escalado independiente de sus componentes lógicos.

Diseño para el escalado controlado por eventos

El escalado de la carga de trabajo basado en métricas empresariales relevantes, como las solicitudes HTTP, la longitud de la cola y los eventos de la nube, puede ayudar a reducir el uso de recursos y, por tanto, sus emisiones de carbono.

  • Use Keda al compilar aplicaciones controladas por eventos para permitir el escalado vertical a cero cuando no haya demanda.

Objetivo de diseño sin estado

Al quitar el estado del diseño, se reducen los datos en memoria o en disco requeridos por la carga de trabajo para funcionar.

  • Considere el diseño sin estado para reducir la carga de red innecesaria, el procesamiento de datos y los recursos de proceso.

Plataforma de aplicaciones

Explore esta sección para aprender a tomar mejores decisiones relacionadas con la plataforma fundamentadas en torno a la sostenibilidad.

Habilitación de actualizaciones automáticas de clústeres y nodos

Un clúster actualizado evita problemas de rendimiento innecesarios y garantiza que se beneficie de las últimas mejoras de rendimiento y optimizaciones de proceso.

Instalación de complementos y extensiones compatibles

Los complementos y extensiones cubiertos por la directiva de soporte técnico de AKS proporcionan funcionalidades adicionales y admitidas al clúster, a la vez que le permiten beneficiarse de las últimas mejoras de rendimiento y optimizaciones energéticas durante todo el ciclo de vida del clúster.

Incluir en contenedores la carga de trabajo cuando corresponda

Los contenedores permiten reducir la asignación innecesaria de recursos y mejorar el uso de los recursos implementados, ya que permiten el empaquetado de contenedores y requieren menos recursos de proceso que las máquinas virtuales.

  • Use Draft para simplificar la contenedorización de aplicaciones mediante la generación de Dockerfiles y manifiestos de Kubernetes.

Uso de hardware eficiente en energía

Los procesadores nativos de la nube de Ampere están diseñados de forma exclusiva para satisfacer las necesidades de alto rendimiento y eficiencia energética de la nube.

Satisfacer las necesidades de escalabilidad y usar funcionalidades de escalado automático y expansión

Un clúster sobredimensionado no maximiza el uso de recursos de proceso y puede dar lugar a un desperdicio de energía. Separe las aplicaciones en diferentes grupos de nodos para permitir el dimensionamiento correcto del clúster y el escalado independiente según los requisitos de la aplicación. A medida que se agote la capacidad del clúster AKS, pase de AKS a ACI para escalar horizontalmente los pods adicionales a los nodos sin servidor y garantizar que su carga de trabajo use todos los recursos asignados de forma eficiente.

Desactivar cargas de trabajo y grupos de nodos fuera del horario comercial

Es posible que las cargas de trabajo no necesiten ejecutarse continuamente y podrían desactivarse para reducir los residuos energéticos y, en consecuencia, las emisiones de carbono. Puede desactivar por completo (detener) sus grupos de nodos en su clúster AKS, lo que le permitirá también ahorrar en costos de proceso.

Procedimientos operativos

Explore esta sección para configurar el entorno para medir y mejorar continuamente el costo de las cargas de trabajo y la eficiencia del carbono.

Eliminar recursos no utilizados

Los recursos no usados, como las imágenes no referenciadas y los recursos de almacenamiento, se deben identificar y eliminar, ya que tienen un impacto directo en el hardware y en la eficiencia energética. Para garantizar la optimización continua de energía, debe tratar la identificación y eliminación de recursos sin usar como un proceso en lugar de una actividad en un momento dado.

  • Use Azure Advisor para buscar los recursos infrautilizados.
  • Use ImageCleaner para limpiar imágenes obsoletas y quitar un área de riesgo del clúster.

Etiquetado de los recursos

Es importante obtener la información y los conocimientos adecuados en el momento oportuno para elaborar informes sobre el rendimiento y el uso de los recursos.

Storage

Explore esta sección para aprender a diseñar una arquitectura de almacenamiento de datos más sostenible y a optimizar las implementaciones existentes.

Optimización del uso del almacenamiento

Las operaciones de recuperación de datos y almacenamiento de datos pueden tener un impacto significativo en la eficiencia energética y de hardware. El diseño de soluciones con el patrón de acceso a datos correcto puede reducir el consumo de energía y el carbono incorporado.

Red y conectividad

Explore esta sección para aprender a mejorar y optimizar la eficiencia de la red para reducir las emisiones de carbono innecesarias.

Elegir una región más cercana a los usuarios

La distancia desde un centro de datos a los usuarios tiene un impacto significativo en el consumo de energía y las emisiones de carbono. Acortar la distancia a la que viaja un paquete de red mejora tanto la energía como la eficiencia del carbono.

  • Revise los requisitos de la aplicación y las zonas geográficas de Azure para elegir la región más cercana a donde se envían la mayoría de los paquetes de red.

Reducción del recorrido de red entre nodos

La colocación de nodos en una sola región o en una sola zona de disponibilidad reduce la distancia física entre las instancias. Sin embargo, en el caso de las cargas de trabajo críticas para la empresa, debe asegurarse de que el clúster esté repartido en varias zonas de disponibilidad, lo que puede dar lugar a un mayor cruce de redes y a un aumento de la huella de carbono.

Evaluación mediante una malla de servicio

Una malla de servicio implementa contenedores adicionales para la comunicación, normalmente en un patrón sidecar, para proporcionar funcionalidades más operativas que conducen a un aumento del uso de CPU y del tráfico de red. Sin embargo, le permite desacoplar la aplicación de estas funcionalidades a medida que las mueve del nivel de aplicación y hacia abajo hasta el nivel de infraestructura.

  • Considere cuidadosamente el aumento del uso de la CPU y del tráfico que generan los componentes de comunicación de la malla de servicios antes de tomar la decisión de usar uno.

Optimización de la recopilación de registros

Enviar y almacenar todos los registros de todos los orígenes posibles (cargas de trabajo, servicios, diagnósticos y actividad de la plataforma) puede aumentar considerablemente el tráfico de red y el almacenamiento, lo que repercutiría en mayores costos y emisiones de carbono.

Almacenar en caché datos estáticos

El uso de Content Delivery Network (CDN) es un enfoque sostenible para optimizar el tráfico porque reduce el movimiento de datos a través de una red. Minimiza la latencia mediante el almacenamiento de datos estáticos de lectura frecuente más cerca de los usuarios y ayuda a reducir el tráfico de red y la carga del servidor.

Seguridad

Explore esta sección para más información sobre las recomendaciones que conducen a una posición de seguridad sostenible y de tamaño adecuado.

Evaluar si se va a usar la terminación TLS

La seguridad de la capa de transporte (TLS) garantiza que todos los datos que se transmiten entre el servidor web y los navegadores permanecen privados y cifrados. Sin embargo, la terminación y el nuevo establecimiento de TLS aumentan el uso de la CPU y pueden ser innecesarios en determinadas arquitecturas. Un nivel de seguridad equilibrado puede ofrecer una carga de trabajo más sostenible y energéticamente eficiente, mientras que un mayor nivel de seguridad puede aumentar los requisitos de recursos de proceso.

  • Revise la información sobre la terminación TLS al usar Application Gateway o Azure Front Door. Determine si puede finalizar TLS en la puerta de enlace de borde y continuar con un almacenamiento distinto de TLS para el equilibrador de carga de trabajo y la carga de trabajo.

Usar herramientas y controles de seguridad de red nativos de la nube

Azure Font Door y Application Gateway ayudan a administrar el tráfico de las aplicaciones web, mientras que Azure Web Application Firewall proporciona protección frente a los 10 ataques principales de OWASP y la carga de bots incorrectos en el perímetro de red. El uso de estas capacidades ayuda a eliminar la transmisión innecesaria de datos y reduce la carga de la infraestructura de la nube, con un menor ancho de banda y menos requisitos de infraestructura.

Análisis de vulnerabilidades

Muchos ataques en la infraestructura en la nube buscan mal los recursos implementados para la ganancia directa del atacante, lo que conduce a un aumento innecesario del uso y el costo. Las herramientas de examen de vulnerabilidades ayudan a minimizar la ventana de oportunidad para los atacantes y mitigar cualquier posible uso malintencionado de recursos.

  • Siga las recomendaciones de Microsoft Defender for Cloud.
  • Ejecute herramientas automatizadas de análisis de vulnerabilidades, como Defender para contenedores, y evite el uso innecesario de recursos. Estas herramientas ayudan a identificar vulnerabilidades en las imágenes y a minimizar la ventana de oportunidad para los atacantes.

Pasos siguientes