Optimizando tus arquitecturas usando el Diseño de Sistema del Framework de Arquitectura

Javier Huerta
google-cloud-hispanoamerica
7 min readMar 11, 2023

--

En nuestra entrada anterior, te explicamos acerca de cómo nuestros valores han dado lugar a la creación de una metodología creada para facilitar la adopción de tus cargas de trabajo, con 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 estándares de la industria — el Architecture Framework, o Framework de Arquitectura.

En el artículo de hoy, te hablaremos del pilar base de nuestra metodología, el Diseño de Sistema, o System Design. La importancia de esta práctica radica en que permite crear sistemas que sean escalables, fiables y que puedan ser utilizados por una gran cantidad de usuarios. El diseño del sistema siempre debe tener en cuenta los requisitos de los usuarios, los recursos disponibles, y los posibles problemas que pudieran surgir.

El Framework de Arquitectura proporciona una estructura para el diseño del sistema que permite la creación de sistemas que sean compatibles con diferentes dispositivos y que puedan ser utilizados por una gran cantidad de usuarios.

¿Qué es el Diseño de Sistema dentro del Framework de Arquitectura?

Como principio fundamental de diseño, nuestras arquitecturas en la nube necesitan una base adecuada a los requisitos de negocio al momento de ser construidas.

El Pilar de Diseño de Sistema (o System Design Pillar) es el pilar fundamental del Framework de Arquitectura, que incluye los productos, las características y los principios de diseño de Google Cloud para ayudarte a definir la arquitectura, los componentes y los datos que necesitas para satisfacer los requisitos de tu necesidad arquitectónica.

Vamos aún más allá — los conceptos y recomendaciones del Diseño de Sistemas se pueden aplicar en los otros cinco pilares del Framework de Arquitectura: Excelencia operativa, Seguridad, Privacidad y Cumplimiento, Confiabilidad, Optimización de costos y Optimización del rendimiento.

Principios básicos del Diseño de Sistema.

En nuestro blog post anterior estudiamos los principios básicos del diseño de sistemas

. Los repasaremos ahora, desde la perspectiva de nuestro pilar.

Recuerda: un diseño de sistema sólido es seguro, confiable, escalable e independiente, lo que le permite aplicar cambios de manera atómica, minimizar los riesgos potenciales y mejorar la eficiencia operativa.

  1. Aplica los principios fundamentales del diseño de sistemas.

Estos principios los hemos revisado en un mensaje anterior, ¡pero te mostramos la imagen para que los recuerdes!

Figura 1. Principios Fundamentales de Diseño de Sistemas

  1. Selecciona las regiones geográficas correctas para soportar tus aplicaciones de negocio.

El seleccionar una región, o múltiples regiones para aplicaciones de negocio debe incluir criterios como disponibilidad de servicios, latencia, costo y requisitos regulatorios y de sustentabilidad. El balance de estos requerimientos nos hará identificar los mejores trade-offs. Por ejemplo, la región con el cumplimiento normativo más alto puede no ser la más eficiente en costo o la región más ecológicamente sustentable.

2. Gestiona tus recursos de red.

Organizar tus recursos de red en organizaciones, carpetas y proyectos te permite gestionar aspectos de tus recursos como control de accesos, configuraciones y políticas. Elementos como tags, etiquetas, estructuras jerárquicas en carpetas, políticas organizacionales para nombres de proyectos, auditorías recurrentes y controles de costos te ayudarán en la gobernanza de tu estructura de nube.

3. Escoge y gestiona correctamente el cómputo.

Elegir correctamente recursos de cómputo es una de las mejores prácticas que podemos tomar, pues esta definición afecta la plataforma de cómputo, la estrategia de migración, las cargas de trabajo, y las operaciones diarias. El cómputo es el núcleo del procesamiento. Es crítica la selección correcta de instancias virtuales, contenedores en clusters, funciones y acercamientos a tecnología serverless.

4. Diseña tu infraestructura de red.

Al elegir servicios de red es importante evaluar las necesidades de tu aplicación, y cómo cada componente se comunica con otros. En Google Cloud utilizamos redes definidas por software, y tecnologías distribuidas para entregar tus servicios alrededor del mundo. Nuestro elemento nuclear es la VPC Global, en la cual usamos una red de alta velocidad para conectar tus aplicaciones a través de regiones geográficas distintas. Usamos inteligencia para disminuir al mínimo los cuellos de botella, pero un diseño inteligente de red hará la diferencia en tu arquitectura. Diseña tu arquitectura de VPCs, añade conectividad inter-VPC y diseña conectividad en redes híbridas.

5. Implementa una estrategia de almacenamiento.

Elegir un almacenamiento correcto nos permitirá gestionarlo, dar accesos y permitir el uso en nuestras cargas de trabajo de manera adecuada. Las opciones que tenemos nos permiten establecer combinaciones de IOPS, latencia, frecuencia de consulta, capacidad, formato (bloque, archivo y objeto) para dar solución al requerimiento de negocio específico.

6. Optimiza tus bases de datos.

Establece una estrategia para diseñar, migrar, escalar, encriptar y gestionar bases de datos a través del uso de servicios administrados (como Cloud SQL, BigTable, Spanner, Memorystore, Filestore, y Firebase Realtime Database).

7. Analiza tus datos.

Establece una estrategia para definir el servicio adecuado para analítica de datos en Google Cloud, y la forma en la cual debes crear tus pipelines de datos (usando servicios administrados) para ejecutar extracciones, transformaciones y cargas de datos, procesándolos a través de analítica en batch o servicios analíticos en tiempo real.

8. Implementa Machine Learning.

Considera el nivel más alto de abstracción que haga sentido para tu caso de uso; a mayor nivel de abstracción, menor detalle al usuario final. Utiliza servicios administrados de Google Cloud (?) para minimizar tu carga operacional, y procesa tus datos de forma tal que tu información corresponda a tus requerimientos de negocio.

9. Diseña pensando en la sustentabilidad ambiental.

Utiliza nuestras herramientas para entender el uso de carbón de tu infraestructura de todos tus proyectos, elige zonas sustentables y alcanza tus objetivos ambientales.

¿Cómo se aplican los principios de diseño a otros pilares?

Ahora, ¿cómo entendemos el diseño de sistema con respecto al resto de los pilares del Framework de Arquitectura?

Los principios básicos del diseño del sistema se pueden aplicar en los otros cinco pilares del marco de la arquitectura, que incluyen la excelencia operativa, la seguridad, la confiabilidad, el costo y la optimización del rendimiento. Aquí hay algunos ejemplos de cómo se ve esto en la práctica.

En cuanto a Excelencia Operativa: Utiliza herramientas operativas totalmente administradas y de alta disponibilidad para implementar y monitorear tus cargas de trabajo, de modo que puedas minimizar la sobrecarga operativa de mantenerlas y optimizarlas. (Simplifica tu diseño)

En cuanto a Seguridad: Aplica controles de seguridad a nivel de componente. Al desacoplar y aislar los componentes, puedes aplicar controles de gobierno detallados para administrar el cumplimiento de manera efectiva, y minimizar el radio de explosión de posibles vulnerabilidades de seguridad. (Desacopla tu arquitectura)

En cuanto a Confiabilidad: Diseño para alta disponibilidad y escalabilidad. Una arquitectura desacoplada le permite definir y controlar objetivos de confiabilidad granular, para que pueda maximizar la durabilidad, la escalabilidad y la disponibilidad de sus servicios críticos, mientras optimiza los componentes no críticos sobre la marcha. (Desacopla tu arquitectura)

En cuanto a Optimización de Costos: Definir presupuestos y diseñar para la eficiencia de costes. El costo generalmente se convierte en un factor importante a medida que define los objetivos de confiabilidad, por lo que es importante considerar varias métricas de costos desde el principio cuando diseña sus aplicaciones. Una arquitectura desacoplada te ayudará a aplicar presupuestos y controles de costos granulares, mejorando así la eficiencia operativa y la optimización de costos. (Documenta todo y Utiliza Statelessness).

En cuanto a Desempeño: Optimiza su diseño para obtener velocidad y rendimiento. Al diseñar la disponibilidad de tu servicio dentro de su presupuesto de costos, asegúrate de considerar también las métricas de rendimiento. Varias herramientas operativas proporcionarán información para ver los cuellos de botella del rendimiento y destacar las oportunidades para mejorar tu eficiencia. (Simplifica tu diseño).

Estos son solo algunos ejemplos, pero puede ver cómo los principios de diseño del sistema se pueden expandir a otros casos de uso en los otros cinco pilares del marco de arquitectura.

Siguientes pasos

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

  1. El sitio de Google Cloud Framework de Arquitectura. En este recurso encontrarás la documentación de Google de nuestras mejores prácticas.
  2. Nuestra comunidad de Framework de Arquitectura. Aquí puedes hacer preguntas, encontrar recomendaciones de expertos, y platicar acerca de temas de interés con otros arquitectos.
  3. El Pilar de Diseño de Sistemas, donde podrás encontrar la versión más reciente del Framework de Arquitectura.
  4. Histórico de versiones https://cloud.google.com/architecture/framework/whats-new

Conclusión

El pilar de Diseño de Sistemas es importante en el marco de arquitectura, porque ayuda a crear diseños arquitectónicos que se caracterizan por:

  • Funcionamiento óptimo: El pilar de diseño de sistemas ayuda a crear una arquitectura de sistemas que funcione de forma óptima. Esto significa que la arquitectura será capaz de satisfacer las necesidades de negocio de la organización.
  • Seguridad: El pilar de diseño de sistemas ayuda a crear una arquitectura segura. Esto significa que la arquitectura será capaz de proteger los datos de la organización de los atacantes externos.
  • Fiabilidad: El pilar de diseño de sistemas ayuda a crear una arquitectura fiable. Esto significa que la arquitectura será capaz de funcionar de forma consistente y no fallar.
  • Eficiencia de rendimiento: El pilar de diseño de sistemas ayuda a crear una arquitectura de sistemas eficiente en términos de rendimiento. Esto significa que la arquitectura de sistemas entregará los servicios de sistemas de una manera rápida y eficiente.

En la siguiente entrega, hablaremos de cómo monitorear correctamente tus aplicaciones usando el pilar de Excelencia Operacional.

¡Hasta la próxima!

Revisores:

Alvaro Huanca, Developer Relations Engineer

Yury Niño Roa, Cloud Infrastructure Engineer

Gracias especiales a Google Bard

--

--