Creditos de la imagen: Microsoft + Jose María Flores

El marco de buenas practicas para Azure, es también extensible para otras nubes. En ellos vemos una guía de principios que ayudan a mejorar la calidad de un Workload en Azure. El marco actual consta de 5 pilares fundamentales, que he tratado ampliamente en este documento:

Pero tras un tiempo veo que otro jugador ha entrado en el terreno de juego: Sostenibilidad.

¿Por qué?

En la anterior imagen puedes ver los 5 primeros y los que he tratado en el documento (que actualizaré a su debido tiempo).

Pero es que en sí mismo la sostenibilidad debe entrar como un pilar independiente ya que posee unas características y prácticas que lo hacen merecedor de esta área. Nos centraremos dentro de la sostenibilidad (que es muy amplia) en la sostenibilidad medioambiental y la tenemos que dirigir a los roles: CTO, arquitectos, desarrolladores y operaciones.

En este breve artículo pretende dar una serie de recomendaciones y estrategias que debes utilizar al diseñar arquitecturas cloud teniendo en cuenta la sostenibilidad. La intención es que si adoptar este 6º pilar, podremos crear arquitecturas que maximicen la eficiencia y reduzcan la contaminación (en cierto modo está relacionado con mis anteriores artículos de Green Software).

La Comisión Mundial sobre el Medio Ambiente y el Desarrollo de las Naciones Unidas define el desarrollo sostenible como «el desarrollo que satisface las necesidades del presente sin comprometer la capacidad de las generaciones futuras para satisfacer sus propias necesidades». Si tu empresa u organización impacta en el medioambiente de forma negativa como puede ser la huella de C02, generación de residuos (todo el hardware obsoleto) o similares, está claro que estamos incumpliendo dicha premisa.

Al crear cargas de trabajo en la nube, la práctica de la sostenibilidad consiste en comprender los impactos de los servicios utilizados, cuantificar los impactos a lo largo del ciclo de vida de la carga de trabajo y aplicar principios de diseño y mejores prácticas para reducir estos impactos.

Las variables que podemos controlar son: en el consumo de energía y la eficiencia. Argumentos suficientes para que los arquitectos podemos realizar acciones directas para reducir el uso de recursos.

Las dos anteriores variables están relacionadas con una definición proveniente del Protocolo de Gases de Efecto Invernadero, los llamados scopes (alcances en español, ir directamente a la página 2 del documento). Y como no lo voy a explicar mejor, os dejo el siguiente enlace.

Y aquí es donde entramos en qué parte me corresponde a mi y que parte le corresponde al proveedor del cloud, es decir: el modelo de responsabilidad compartida.

Lo que viene a decir, que usando un proveedor cloud son más eficientes con la energía que lo que seríamos nosotros con nuestras instalaciones. Y lo que nos queda de la pirámide del modelo de responsabilidad compartida es:

  • El diseño y uso de los datos.
  • Diseño de la aplicación.
  • Almacenamiento de datos.
  • Eficiencia del código.

Microsoft esta apostando muy fuerte al respecto (leer documento) para llegar a una bajada de emisiones importante. Es decir, que están trabajando para ti y parte de ser sostenible ya lo tenemos.

Os sonará de mi anterior articulo y lo que viene a contarnos la Green Software Foundation (GFS), por eso, tras la investigación de GFS concluyo que se trata de ese 6º Pilar que nos faltaba.

Por tanto, tenemos 2 vertientes:

  • Sostenibilidad con el cloud.
  • Sostenibilidad a través del cloud.
Principios de diseño

El objetivo es maximizar la sostenibilidad y minimizar el impacto.

Por tanto, debemos tener en cuenta estas áreas:

  • Entender el impacto.
  • Establecer objetivos de sostenibilidad.
  • Maximizar el uso.
  • Anticipar y adoptar nuevas medidas: es cíclico en WAF y se logra a base de medir, medir y medir.
  • Uso de PaaS y SaaS.
Mejora continua

Es el mismo proceso arquitectónico que nos propone WAF. Una mejora continua, cuantificar, aplicar y repetir el ciclo.

¿Qué objetivos de mejora podemos aplicar?

  • Ahorros energéticos. No tener VM encendidas 24h si no se usan en ciertas franjas horarias.
  • Maximizar el valor de los recursos. No dimensionar a lo grande y usar solo el 40%, mejor algo más contenido y llegar a un uso de 80%. Es decir, realizar el mismo trabajo con los mínimos recursos posibles.

Esto es un ciclo y en etapas tempranas será más sencillo que en posteriores refinamientos, aquí esta el gran desafío, pero sin obsesionarse.

Por ejemplo, una primera etapa es eliminar gastos superfluos e innecesarios y luego nos vamos mas tarde a temas más complejos, como ajustar y afinar para un trabajo específico.

Medir, medir y medir, es decir, supervisar a lo largo del tiempo, identificar donde tenemos mejoras significativas y extrapolarlo a los demás recursos.

Supervise los cambios en el consumo de recursos a lo largo del tiempo. Identifique dónde los cambios acumulados dan lugar a aumentos ineficientes o significativos en el consumo de recursos. Determine la necesidad de mejoras para abordar los cambios en el consumo e implemente las mejoras que priorice.

Identificar y evaluar: al final se trata de lo mismo, ver si las mejores prácticas de sostenibilidad que os contaré más tarde funcionan, mejor dicho, las evaluamos y vemos si hemos mejorado.

Priorizar y planificar: lo que más sencillo sea, lo primero y lo que más impacte, aquí veremos que efectivamente merece la pena y podemos venderlo a otras esferas empresariales para que continúen con la inversión.

Algo que lógicamente ya estas aplicando, es de sentido común.

¿La sostenibilidad es un requisito no funcional?

Para mi sí, da lugar a soluciones más rentables y no solo económico (mejoras el gasto en la nube), sino que también mejoras la marca, el posicionamiento ESG y tiene un gran ROI. Estas métricas no son las tradicionales y por tanto son más complejas a la hora de vender. Cuando digo vender es que nos las admitan el cliente.

Mejores prácticas

Esto solo son unas pinceladas, ya que lo desarrollaré más adelante en el documento que tengo de WAF y he puesto al principio del artículo.

Esto se trata de optimizar. Optimizar workload, optimizar arquitectura, optimizar software, optimizar datos, optimizar hardware, etc. para aumentar la eficiencia energética. Tenemos muchas áreas donde poder aplicar las mejores prácticas para reducir el impacto.

¿Qué podemos hacer?

  • Selección de regiones, esto muy relacionado el Carbon Aware SDK, que habrás podido ver con en el artículo de Green Software. En resumen es mover el trabajo a regiones donde la energía sea más limpia.
  • Patrones de uso y comportamiento de usuarios, con el ejemplo anterior de la VM, si es de desarrollo y los fines de semana no se trabaja, no se conecta nadie (previo estudio), pues apaguemos esta VM, lo mismo pasa con App Service, podemos escalar y desescalar.
  • A través de patrones para minimizar la sobredimensión de recursos. No necesito una cola muy potente, cuando solo se usa de forma esporádica, piensa donde debe ir, que cueste menos, que gaste menos, etc. Al final es minimizar recursos desplegados, pero basado en un estudio temporal, para reducir esta infrautilización.
  • Datos, la gestión de dato no lleva a pensar en reducción de almacenamiento (borrados de datos históricos o moverlos a un sitio frio), pensar en que base de datos es la adecuada para minimizar el cómputo, etc.
  • Desarrollo e implantación. Nada nuevo, me juego cualquier cosa que ya lo hacen, por qué es intrínseco a DevOps y WAF. Reducción de impacto a través de entornos de desarrollo, test, producción. Es decir, dimensionado de recursos. No creo que nadie tenga exactamente lo mismo en prod que en dev.
Conclusión

No es que sea algo que lo realices por que te apetece, es imperativo, en 2050 debemos haber eliminado la huella de carbono, lo dicen los estamentos gubernamentales. Si empezamos ya, pues eso que tenemos adelantado.

Yo lo veo desde el punto de vista de la responsabilidad de CTOs, Arquitectos, Desarrolladores y Operaciones:

Nos hemos olvidado de optimizar, aun recuerdos tiempos de UNIX y MS-DOS donde 1Kb era el éxito y tenías que andar optimizando. Esto se perdió durante muchos años y la nueve a puesto en su sitio a mucha gente, otra vez debes optimizar y si nunca fue tu cultura, lo vas a llevar mal… te obliga pensar bien las cosas. Es el problema de la época del “meno más hierro y solucionado”, esto se terminó.

Se que habrá gente que pivotará su opinión entre el tema económico y la conciencia social, sea cual sea tu motivación, el resultado es el mismo: mejora del impacto medioambiental.

Por tanto, creo que este 6º Pilar debe estar añadido en cada WAF de cada cloud que se precie, sé que alguna hace menos de 1 mes que lo está incluyendo y por eso os la traslado a las personas que trabajamos con Microsoft.