Después de hablar sobre cómo lanzar una plataforma como un producto y qué características debería tener, en este post te dejamos una guía práctica para entender los Golden Paths. Para clarificar el concepto de Golden Paths, vamos a explorar un ejemplo de cómo construir un Golden Paths para introducir bases de datos relacionales como una nueva capacidad en la plataforma.

Entendiendo el escenario

Una pesadilla en la adopción de microservicios

Tu organización ha emprendido una iniciativa de modernización con el objetivo de mejorar dos dimensiones críticas: la velocidad de entrega y la escalabilidad. El CTO ha identificado la arquitectura de microservicios como el motor principal para alcanzar estos objetivos de negocio.

Como parte de esta iniciativa, los equipos de desarrollo han recibido plena responsabilidad sobre su stack técnico, empoderados por un enfoque DevOps y uno de los principios fundamentales de los microservicios: la capacidad de seleccionar la mejor tecnología para su caso de uso específico.

Inicialmente, este enfoque parecía ideal. Los equipos de desarrollo comenzaron a liberar funcionalidades usando diferentes lenguajes de programación y seleccionando varios datastores para sus microservicios.

Mientras que muchos equipos confiaban en Postgres para casos de uso relacional y Redis como key-value store, otros equipos comenzaron a adoptar tecnologías como DuckDB, MySQL, MongoDB y ElasticSearch.

Microservices architecture: client, microservice, database.

El camino aparentemente correcto para la arquitectura de microservicios

Las consecuencias no deseadas

Sin embargo, lo que inicialmente parecía el camino correcto, rápidamente llevó a un descontrol tecnológico que se convirtió en la raíz de varios problemas críticos:

Resultados negativos

En lugar de lograr los objetivos previstos de mayor velocidad de entrega y escalabilidad, la organización enfrentó varios contratiempos:

Platform Engineering al rescate

Frente a estos desafíos, la organización reconoció la necesidad de estandarizar y reducir la dispersión tecnológica. Respecto a los datastores, se tomó la decisión de que cualquier servicio operativo que requiriese un datastore relacional debía usar Postgres.

Inicialmente, se planteó crear un equipo cross para centralizar la configuración y el despliegue de estos servicios comunes.

Sin embargo, el CTO se dio cuenta de que el problema no consistía únicamente en gestionar componentes técnicos individuales, sino en comprender el rol de una base de datos relacional dentro de la arquitectura organizacional. Entender qué implicaba configurar y desplegar una instancia de Postgres para su organización (estandarización de configuraciones, convención de nombres, cumplimiento de buenas prácticas y políticas, etc.), así como para su sector industrial.

Principales aprendizajes del CTO:

Platform Engineering debe abarcar toda la cadena de valor de extremo a extremo para entregar productos y aplicaciones a los usuarios finales de manera efectiva. Una capacidad de base de datos relacional en tu plataforma no se trata solo de ofrecer Database as a Service (DBaaS); se trata de comprender el papel de la base de datos relacional dentro de tu arquitectura y el valor de negocio que proporciona.

Reconociendo estos insights, el CTO lanzó una iniciativa de Platform Engineering para enfrentar estos desafíos.

Como parte de esta iniciativa, el equipo de plataforma asumió la responsabilidad de hacer que la capacidad de "relational datastore" esté disponible como parte de la Internal Developer Platform (IDP).

El objetivo es proporcionar a los equipos de desarrollo un Golden Path que les permita aprovechar eficientemente esta capacidad, reduciendo la complejidad y fomentando la estandarización en toda la organización.

Pensar en bases de datos relacionales como un Golden Path

Bases de datos en servicios operacionales

Un principio clave de la arquitectura de microservicios es que cada servicio gestiona sus propios datos. Los servicios no deben compartir un datastore para evitar acoplamientos no intencionales, lo cual podría resultar en dependencias que dificulten despliegues independientes y la escalabilidad.

The Shared Database Anti-pattern

Esta práctica requiere que los equipos de desarrollo puedan implementar bases de datos de manera rápida y sencilla, asegurando al mismo tiempo el cumplimiento con requisitos de seguridad y despliegue.

Sin embargo, desplegar una base de datos Postgres “ready for production” es una tarea compleja que involucra decisiones relacionadas con seguridad, despliegue, disponibilidad, backups, secrets, entre otros.

El Golden Path para bases de datos relacionales no debe exponer todos estos elementos a los equipos de desarrollo, pues esto incrementaría su carga cognitiva. En cambio, debe encargarse de estas necesidades para garantizar que sea el camino pavimentado hacia producción.

El Golden Path de la base de datos relacional debe encapsular todas las decisiones operacionales que se tomen en tu empresa para transformar un Postgres "out of the box" en un conjunto específico de configuraciones y decisiones que permitan operar una base de datos relacional en tu organización.

¿Qué necesitan realmente los equipos de desarrollo de la plataforma?

Los equipos de desarrollo no necesitan gestionar toda la complejidad de configurar y mantener bases de datos relacionales. Solo deben configurar los elementos que influyen directamente en el proceso de desarrollo, tales como:

La plataforma, a su vez, proporciona una cadena de conexión a la base de datos, permitiendo que el servicio opere sin problemas dentro del framework de compliance de la organización. Esta configuración abstrae la complejidad de los equipos de desarrollo, permitiéndoles enfocarse en construir funcionalidades en lugar de gestionar infraestructura.

Simplificación de la configuración con atributos de alto nivel

Dado que los elementos que los equipos de desarrollo necesitan configurar son limitados, existe la oportunidad de simplificar aún más el proceso. El equipo de plataforma puede diseñar atributos de alto nivel para la capacidad que luego se traduzcan en las configuraciones de bajo nivel necesarias.

Por ejemplo, el equipo de plataforma podría tomar tres atributos:

Y encapsularlos en un solo atributo de alto nivel llamado SIZE.

Este atributo podría usar valores como SMALL, MEDIUM, LARGE, EXTRA-LARGE, que el Golden Path traducirá a las configuraciones apropiadas para potencia de cómputo, capacidad de almacenamiento y número de instancias.

Beneficios de este enfoque

Los Golden Paths proporcionan un medio para reducir la carga cognitiva de diversas formas, preservando la capacidad de tomar decisiones de bajo nivel cuando sea necesario mientras se optimiza el proceso de configuración en general.

Al ofrecer estas abstracciones de alto nivel, la plataforma permite que los equipos de desarrollo se concentren en lo que mejor saben hacer: entregar valor de negocio.

¿Cuál es el rol real de la base de datos relacional en tu arquitectura?

El equipo de plataforma necesita comprender el uso previsto y los resultados esperados de esa base de datos dentro del contexto arquitectónico más amplio. Por ejemplo:

Al comprender el propósito específico y la misión de estos requerimientos técnicos, el equipo de plataforma puede crear Golden Paths más útiles. Este enfoque permite al equipo encapsular mejor la carga cognitiva para los equipos de desarrollo, incrementando el valor de la plataforma y mejorando su misión.

Alinear las capacidades de la base de datos relacional con los objetivos comerciales más amplios asegura que la plataforma no solo cumpla con los requisitos técnicos sino que también ofrezca resultados comerciales medibles. Este alineamiento estratégico es crucial para demostrar el valor de Platform Engineering a toda la organización.

Un nuevo modelo de colaboración convergiendo en el equipo de plataforma

Los Golden Paths pueden beneficiar a múltiples personas dentro de tu organización y deben diseñarse considerando no solo el feedback de diferentes equipos, sino también sus necesidades reales.

Introducir nuevas capacidades en la plataforma, como bases de datos relacionales, requiere un nuevo modelo de colaboración:

Los Golden Paths son el centro de esta relación, como se muestra en el siguiente diagrama con un enfoque de ejemplo para un Golden Path de base de datos relacional:

sample approach for a relational database golden path

El feedback continuo de los equipos de desarrollo, operaciones y arquitectura son fundamentales para asegurar que las capacidades de bases de datos relacionales evolucionen en respuesta a las necesidades comerciales cambiantes y los avances tecnológicos. Este diálogo continuo ayuda a mantener la relevancia y efectividad de la plataforma.

Golden Paths y niveles de abstracción

Las plataformas deben ser componibles, ofreciendo diferentes niveles de abstracción para maximizar la flexibilidad y la reutilización:

my complex service: azure event hub, azure postgres, azure cache redis, azure datalake storage, kubernetes deployment

Esta componibilidad maximiza la adopción de la plataforma al permitir que los equipos elijan el nivel de abstracción adecuado sin desviarse de los estándares establecidos y el camino pavimentado de la plataforma.

A medida que la tecnología evoluciona, la plataforma debe ser lo suficientemente flexible como para acomodar futuros cambios arquitectónicos o la adopción de nuevas tecnologías de bases de datos. Esta flexibilidad asegura que la plataforma siga siendo un activo valioso para la organización con el tiempo.

Si te interesa Platform Engineering y quieres seguir profundizando en este tema, aquí tienes contenido que puede resultarte interesante:

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete