Presentando el Architecture Framework de Google Cloud

Javier Huerta
google-cloud-hispanoamerica
6 min readJan 24, 2023

“Organizar la información del mundo y hacer que sea útil y accesible para todos.”

Nuestra misión no es algo convencional, y no tenemos otra opción más que empatar nuestra ambición con un sentido de responsabilidad equivalente para lograrlo.

En este sentido, contamos con un conjunto de valores, los cuales son una muestra de la responsabilidad que aceptamos, y la confianza que sabemos está depositada en nosotros: el Respeto al Usuario (el devolver la confianza de nuestros clientes haciendo lo correcto); el Respeto a la Oportunidad (el que nuestras acciones tengan importancia para la sociedad), y el Respeto hacia los demás (considerando que los demás somos todos).

Estos valores, aplicados al mundo de la nube, dan lugar a una metodología creada para facilitar la adopción de tus cargas de trabajo, en la cual puedas contar con una guía de diseño para la construcción de arquitecturas seguras, confiables y eficientes, y con la que puedas hacer un Gap Analysis, comparando tus desarrollos con los mejores de la industria.

Te presentamos nuestro Architecture Framework.

¿Qué es el Architecture Framework?

Al momento de crear una carga de trabajo, uno de nuestros primeros objetivos es minimizar el riesgo, y optimizar el desempeño y el costo. ¿Cómo se relacionan estos elementos?

Podemos hacer un símil con un proyecto de construcción. En este sentido, si pensamos en una bóveda de banco, y una tienda de campaña, podríamos considerar que aunque los 2 cumplen con un objetivo — el brindar protección de los elementos — existen diferenciadores fundamentales entre ellos. El banco, por ejemplo, requerirá elementos de seguridad específicos (Security, Privacy and Compliance), así como un esquema de monitoreo robusto (Operational Excellence) y un diseño arquitectónico (System Design) enfocado en una robustez extrema, con una vigilancia en costos (Cost Optimization), pero una aceptación del incremento de los mismos por las características antes mencionadas. Si extendemos la analogía a una tienda de campaña, veremos que es probable que el enfoque será en levantarla y recogerla en el menor tiempo posible (Performance Optimization) con un fuerte enfoque en el costo (Cost Optimization). ¿Alguno de los diseños es malo? No, pero persiguen objetivos distintos, y por lo tanto, sus estrategias de optimización son diferentes.

Este es el balance que buscamos al momento de desarrollar una carga de trabajo en la nube. Pensemos que estamos desarrollando un blog personal. Los elementos de seguridad (Security, Privacy and Compliance) no serán equivalentes al de una aplicación bancaria; ni la confiabilidad (Reliability), ni el monitoreo (Operational Excellence).

Sin embargo, el hecho de que el blog no tenga los mismos elementos de seguridad de la aplicación transaccional no implica que su diseño sea inferior — simplemente lo hemos adaptado a las necesidades específicas del cliente, la carga de trabajo, y el entorno. El secreto está en aprender a balancear distintos componentes de nuestra arquitectura…

  1. El despliegue, monitoreo y gestión de nuestras cargas (Operational Excellence)
  2. La seguridad, privacidad, y alineación con requerimientos normativos (Security, Privacy and Compliance)
  3. La resiliencia y disponibilidad de las cargas de trabajo (Reliability)
  4. La maximización del Retorno Sobre la Inversión (Cost Optimization)
  5. La maximización del desempeño para el caso de uso en particular (Performance Optimization).
  6. El diseño integral de todos estos componentes, para satisfacer las necesidades específicas del negocio (System Design).

¡Felicidades! Acabas de entender el concepto del Architecture Framework.

¿Cuáles son los principios del Architecture Framework?

Existe un conjunto de características que debemos seguir para diseñar una arquitectura robusta, de acuerdo a Architecture Framework. Estos son:

  1. Documenta todo

Tus arquitecturas pueden ser construidas utilizando infraestructura como código. Documenta por completo tus arquitecturas, provee contexto de tus decisiones, y asegúrate de medir el desempeño de forma correcta.

Una arquitectura documentada adecuadamente ayuda a establecer un lenguaje y estándares en común, permitiendo a equipos de toda tu organización comunicarse y colaborar efectivamente, así como el definir decisiones futuras con base en la información provista.

Con el tiempo, tus arquitecturas cambiarán, y la documentación te ayudará a mantener un historial sobre las decisiones tomadas, sus razones, y los retos encontrados.

En esta liga podrás encontrar más información.

  1. Simplifica tu diseño

En el contexto de arquitecturas en la nube, el agregar servicios, infraestructura y otros componentes añadirán complejidad y riesgo por el incremento en actividades de monitoreo (Operational Excellence).

Por otro lado, si tus arquitecturas son demasiado complicadas de entender, tus desarrolladores y operadores encontrarán problemas en su trabajo día a día. Recomendamos el uso de servicios administrados para minimizar el riesgo de gestionar y mantener tus operaciones base. Una buena manera de asegurar que no estás añadiendo complejidad innecesaria es trabajar con casos de uso, iterándolos, y mejorándolos continuamente.

Define tus parámetros operativos, de confiabilidad y de seguridad, y diseña arquitecturas ligeras.

  1. Desacopla tu arquitectura

El desacoplamiento es una técnica que se utiliza para separar tus aplicaciones y tus componentes de servicios (sobre todo en arquitecturas monolíticas) en componentes más pequeños que pueden operar independientemente. Una arquitectura desacoplada puede ejecutar sus funciones de manera independiente, sin importar las dependencias existentes.

Una arquitectura desacoplada permite aplicar actualizaciones, establecer parámetros de seguridad, confiabilidad, generar chequeos de salud y de desempeño de manera independiente entre componentes. Es común encontrar en la industria arquitecturas funcionales, generadas desde migraciones lift and shift, las cuales no pueden aprovechar todos los beneficios de la nube (por ejemplo, la escalabilidad y la alta disponibilidad) por no estar desacopladas.

  1. Utiliza statelessness

Para operar la mayoría de las aplicaciones, en algunas ocasiones se usa cacheo de datos local (o en discos duros) por lo que se requieren mecanismos adicionales para soportar reinicios o fallas. A estas se les conoce como aplicaciones “stateful”.

Es preferible usar aplicaciones tipo “stateless”, las cuales ejecutan sus tareas sin dependencias locales, utilizando servicios compartidos de cacheo o de almacenamiento. Esto permite a tus aplicaciones escalar con dependencias mínimas, soportar reinicios y maximizando su desempeño.

¿Cómo funciona el Architecture Framework?

Sabemos que construir aplicaciones modernas en la nube puede ser difícil, y complejo; la cantidad de herramientas y servicios en Google Cloud nos da un alto grado de flexibilidad, pero también hace que sea necesario contar con una guía, que nos permita entender las mejores prácticas actuales, y las áreas más importantes para enfocarnos en el diseño de soluciones en la nube.

A través de Architecture Framework, podemos entender los principios de diseño más importantes, e identificar áreas de oportunidad en tus cargas de trabajo, para posteriormente adaptar aquellas que nos hagan sentido, dependiendo del objetivo final que persigamos (¿recuerdan el ejemplo del blog vs la bóveda bancaria?).

Este ejercicio debe realizarse lo antes posible, incluso al momento de estar definiendo la arquitectura de la carga de trabajo, para maximizar el valor de la carga de trabajo en la nube.

La forma de usar el Architecture Framework es sumamente sencilla: dentro del sitio Cloud Architecture Center, podrás encontrar los seis pilares de Architecture Framework.

En cada uno de los apartados, podrás encontrar la siguiente información:

  • La definición de lo que cada dominio persigue.
  • Los principios fundamentales que rigen al dominio
  • Las mejores prácticas aplicables al dominio.

También podrás encontrar las novedades dentro de Google Cloud, con lo que podrás ver los cambios que se han aplicado a la metodología, y la fecha en la cual se hicieron los cambios, con lo que podrás saber si las mejores prácticas que conoces siguen aplicando de la misma forma.

Siguientes pasos

Revisa los siguientes recursos para aprender más de nuestra metodología.

  1. El sitio de Google Cloud Architecture Framework. En este recurso encontrarás la documentación de Google de nuestras mejores prácticas.
  2. Nuestra comunidad de Architecture Framework. Aquí puedes hacer preguntas, encontrar recomendaciones de expertos, y platicar acerca de temas de interés con otros arquitectos.

Conclusión

Si estás pensando construir una carga de trabajo en Google Cloud, te invitamos a usar nuestro Architecture Framework. Entendemos que estás buscando construir en nuestra nube usando patrones repetitivos, los cuales te ayuden a mitigar riesgos, al tiempo que optimices el desempeño y costos. A través de esta metodología, te ayudaremos a entender nuestras mejores prácticas, con el menor esfuerzo posible, y con información relevante y actualizada.

En nuestros próximos artículos platicaremos acerca del pilar que soporta al resto — System Design (Diseño de sistemas).

¡Hasta la próxima!

Revisores:

Roberto García Labastida / Customer Engineer / México

Miriam Alonso / Cloud Customer Onboarding Manager / México

Alvaro Huanca / Developer Relations Engineer / Brasil

--

--