Diseño de aplicaciones de cargas de trabajo sostenibles en Azure

Al crear aplicaciones nuevas o actualizar existentes, es fundamental tener en cuenta cómo afectará la solución al clima y si hay maneras de mejorar y optimizar. Obtenga información sobre las consideraciones y recomendaciones para optimizar el código y las aplicaciones para un diseño de aplicaciones más sostenible.

Importante

Este artículo forma parte de la serie de cargas de trabajo sostenibles de Azure Well-Architected . Si no está familiarizado con esta serie, se recomienda empezar con lo que es una carga de trabajo sostenible?

Eficiencia del código

Las demandas de las aplicaciones pueden variar y es esencial considerar formas de estabilizar el uso para evitar que se supere o infrautilizar los recursos, lo que puede provocar derrames de energía innecesarios.

Evaluación de la migración de monolitos a una arquitectura de microservicios

Normalmente, las aplicaciones monolíticas se escalan como una unidad, dejando poco espacio para escalar solo los componentes individuales que pueden necesitarlo.

Alineación de Green Software Foundation: Eficiencia energética, Eficiencia del hardware

Recomendación:

  • Evalúe la guía de arquitectura de microservicios .
  • Una arquitectura de microservicios permite escalar solo los componentes necesarios durante la carga máxima; asegurarse de que los componentes inactivos se reducen o se reducen verticalmente. Además, puede reducir la sobrecarga y los recursos necesarios para implementar aplicaciones monolíticas.
  • Considere este equilibrio: al reducir los recursos de proceso necesarios, puede aumentar la cantidad de tráfico en la red y la complejidad de la aplicación puede aumentar significativamente.
  • Tenga en cuenta este otro equilibrio: el traslado a microservicios puede dar lugar a una sobrecarga de implementación adicional con numerosas similitudes en las canalizaciones de implementación. Tenga en cuenta cuidadosamente los recursos de implementación necesarios para arquitecturas monolíticas frente a microservicios.
  • Además, lea sobre la contenedorización de aplicaciones monolíticas.

Mejora de la eficacia de la API

Muchas aplicaciones en la nube modernas están diseñadas para realizar transacciones de muchos mensajes entre servicios y componentes de forma asincrónica. Tenga en cuenta el formato que se usa para codificar los datos de carga. ¿Cuánta información necesita la aplicación para comunicarse y hay espacio para reducir la chattiidad?

Alineación de Green Software Foundation: Eficiencia energética

Recomendación:

Garantizar la compatibilidad con software con versiones anteriores para asegurarse de que funciona en hardware heredado

Tenga en cuenta cómo las aplicaciones representan información. ¿La aplicación necesita servir de forma crítica todo en la máxima calidad, lo que da lugar a un mayor ancho de banda y procesamiento? ¿Hay espacio para reducir la calidad de los componentes en la interfaz de usuario para satisfacer mejor los objetivos de sostenibilidad?

Alineación de Green Software Foundation: Eficiencia de hardware

Recomendación:

  • Admite más dispositivos de consumidor de usuarios finales, como exploradores y sistemas operativos más antiguos. Esta compatibilidad con versiones anteriores mejora la eficiencia del hardware mediante la reutilización del hardware existente en lugar de requerir una actualización de hardware para que la solución funcione.
  • Considere este inconveniente: si las actualizaciones de software más recientes tienen mejoras de rendimiento significativas, es posible que el uso de versiones de software anteriores no sea más eficaz.

Aprovechamiento de patrones de diseño nativos en la nube

El aprendizaje sobre los patrones de diseño nativos de la nube es útil para compilar aplicaciones, tanto si se hospedan en Azure como si se ejecutan en otro lugar. La optimización del rendimiento y el costo de la aplicación en la nube también reducirá su uso de recursos, por lo que sus emisiones de carbono.

Alineación de Green Software Foundation: Eficiencia energética, Eficiencia del hardware

Recomendación:

Considere la posibilidad de usar patrones de disyuntor

Considere la posibilidad de evaluar y evitar que las aplicaciones realicen operaciones que probablemente produzcan errores. Los errores repetidos pueden provocar sobrecarga y procesamiento innecesario que puede evitar con patrones de diseño adecuados.

Alineación de Green Software Foundation: Eficiencia energética

Recomendación:

  • Un disyuntor puede actuar como un proxy para las operaciones que podrían producir errores y debe supervisar el número de errores recientes que se han producido y usar esa información para decidir si continuar.
  • Estudie el patrón Circuit Breaker y, a continuación, tenga en cuenta cómo puede implementar los patrones de Circuit Breaker en las aplicaciones.
  • Considere la posibilidad de usar Azure Monitor para supervisar errores y configurar alertas.

Optimización del código para un uso eficaz de recursos

Las aplicaciones implementadas con código ineficaz pueden dar lugar a un impacto inherente en la sostenibilidad.

Alineación de Green Software Foundation: Eficiencia energética, Eficiencia del hardware

Recomendación:

  • Reduzca los ciclos de CPU y el número de recursos que necesita para la aplicación.
  • Use algoritmos y patrones de diseño optimizados y eficaces.
  • Tenga en cuenta el principio Don't repeat yourself (DRY).

Optimización de patrones de acceso asincrónico

Las demandas de las aplicaciones pueden variar y es esencial considerar formas de estabilizar el uso para evitar que se supere o infrautilizar los recursos, lo que puede provocar derrames de energía innecesarios.

Alineación de Green Software Foundation: Eficiencia energética

Recomendación:

  • Las solicitudes de cola y búfer que no requieren procesamiento inmediato y, a continuación, procesan por lotes. El diseño de las aplicaciones de esta manera ayuda a lograr un uso estable y ayuda a aplanar el consumo para evitar solicitudes espigadas.
  • Obtenga información sobre cómo optimizar los patrones de acceso asincrónico.

Evaluación de la representación del lado servidor frente a la representación del lado cliente

Determine si se va a representar en el lado servidor o en el lado cliente al compilar aplicaciones con una interfaz de usuario.

Alineación de Green Software Foundation: Eficiencia energética, Eficiencia del hardware

Recomendación:

  • Tenga en cuenta estas ventajas de la representación del lado servidor:

    • Cuando la energía del servidor proviene de alternativas menos contaminantes que la configuración regional del cliente.
    • Cuando el hardware del servidor tiene mejores relaciones de energía de procesamiento.
    • Puede usar el almacenamiento en caché centralizado para reducir varias representaciones innecesarias.
    • Reducir el número de recorridos de ida y vuelta del explorador al servidor puede ser especialmente importante cuando el dispositivo del cliente tiene un vínculo perdido.
    • Cuando los dispositivos cliente son más antiguos y tienen CPU más lentas. Los usuarios no necesitan actualizar sus dispositivos para admitir un explorador moderno.
  • Tenga en cuenta estas ventajas de la representación del lado cliente:

    • Cuando los dispositivos del usuario final son más adecuados, insertando la responsabilidad de la representación en los clientes.
    • Es más eficaz solo representar lo que se necesita y según lo solicitado, en lugar de representar todo al menos una vez.
    • No es necesario un servidor, ya que puede confiar en el almacenamiento estático.
    • El almacenamiento en caché del explorador se usa en los clientes.

Tenga en cuenta el diseño de la experiencia de usuario para la sostenibilidad

Tenga en cuenta cómo el diseño de la experiencia de usuario de una carga de trabajo afecta a la sostenibilidad y determine qué opciones existen para mejorar la eficiencia energética y reducir la carga de red innecesaria, el procesamiento de datos y los recursos de proceso.

Alineación de Green Software Foundation: Eficiencia energética

Recomendación:

  • Considere la posibilidad de reducir el número de componentes que se van a cargar y representar en las páginas.
  • Determine si la aplicación puede representar imágenes y vídeos de resolución inferior.
    • No represente imágenes de tamaño completo como miniaturas en las que el explorador realiza el cambio de tamaño.
    • El uso de imágenes de tamaño completo como miniaturas o imágenes con cambio de tamaño transferirá más datos, tráfico de red innecesario y uso adicional de CPU del lado cliente debido al cambio de tamaño y la representación previa de imágenes.
  • Asegurarse de que no haya páginas sin usar ayudará a minimizar el diseño de la experiencia de usuario.
  • Considere la posibilidad de buscar y encontrar. Facilitar a los usuarios encontrar lo que buscan ayuda a reducir la cantidad de datos almacenados y recuperados.
  • Considere la posibilidad de proporcionar una interfaz de usuario más ligera, el uso de menos recursos y un menor impacto en la sostenibilidad y proporcionar a los usuarios una opción informada.
  • Ahorra energía ofreciendo tus aplicaciones y sitios web en modo oscuro, con fondos oscuros.
  • Opte por usar fuentes del sistema siempre que sea posible para evitar forzar a los clientes a descargar fuentes adicionales, lo que provoca más carga de red.

Actualización del código heredado

Considere la posibilidad de actualizar o dejar de usar código heredado si no se ejecuta en la infraestructura de nube moderna o con las actualizaciones más recientes.

Alineación de Green Software Foundation: Eficiencia de hardware

Recomendación:

  • Identificar código heredado ineficaz adecuado para la modernización.
  • Revise si hay opciones para pasar a sin servidor o a cualquiera de las opciones de PaaS optimizadas.
  • Tenga en cuenta este equilibrio: la actualización del código antiguo que podría acabar en desuso puede consumir tiempo valioso.

Paso siguiente

Revise las consideraciones de diseño de la plataforma de aplicaciones.