Be Software Architecture Wise
Be Wise Apps

Read in English · Lire en français · Auf Deutsch lesen

Sección 11.5 de 11.8 · Avanzado · 24 min de lectura

Team Topologies y diseño sociotécnico

Videolección

5 min · narrado en inglés, con subtítulos
Solo escuchar (audio)
Leer la transcripción

Quién se hace cargo de cada parte de un sistema importa tanto como la forma en que se dibujan las partes. En esta lección aprenderás a diseñar a la vez los equipos y el software, con Team Topologies.

Piensa en un grupo de restaurantes. La cocina de cada restaurante atiende a sus propios comensales, de principio a fin. Un proveedor central suministra ingredientes y equipamiento a todas las cocinas a partir de un catálogo sencillo, para que los cocineros no tengan que llevar una granja. Un taller especializado de pastelería elabora el único producto que es demasiado difícil de dominar para todas las cocinas. Y un jefe de cocina visitante pasa unas semanas enseñando a una cocina una técnica nueva y después se va. Team Topologies ofrece a las organizaciones de software los mismos cuatro tipos de equipo.

La ley de Conway dice que un sistema tiende a copiar la forma en que se comunican sus equipos. Así que decidir cómo se forman los equipos, y de qué se hace cargo cada uno, es una decisión arquitectónica. Team Topologies, de Matthew Skelton y Manuel Pais, publicado por primera vez en 2019, busca un flujo rápido: una corriente constante de cambios pequeños, con poca espera entre equipos. Sus equipos son estables y suelen tener de cinco a nueve personas. Para los arquitectos, esto cambia el trabajo. Un límite de servicio solo es bueno si algún equipo puede hacerse cargo de él por completo.

La mayoría de los equipos deberían estar alineados al flujo: alineados con un flujo de cambio, como los pedidos, y a cargo de él de extremo a extremo, hasta su operación en producción. Son el tipo predeterminado. Los otros tres tipos existen para reducir su carga. Un equipo de plataforma proporciona servicios internos, como pipelines, entorno de ejecución y observabilidad, como un producto. Los demás equipos lo consumen mediante autoservicio. Ese es el modo X como servicio. Un equipo facilitador de especialistas ayuda a otro equipo a adquirir una capacidad, aquí la fiabilidad, y después pasa a otra cosa. Ese es el modo de facilitación. Un equipo de subsistema complicado se hace cargo de una parte que requiere conocimientos poco comunes, como el algoritmo de despacho. Aquí trabaja en colaboración con el equipo de reparto, durante un tiempo limitado. La colaboración debe tener un plazo acotado. Y si un equipo que debería usar un servicio sigue necesitando reuniones, probablemente la interfaz o el límite están mal.

La carga cognitiva del equipo es el total que un equipo debe tener en la cabeza para construir, operar y cambiar aquello de lo que se hace cargo. Si la sobrecargas, obtienes entregas lentas, guardias frágiles y conocimiento atrapado en una o dos personas. Así que dimensiona las responsabilidades de forma deliberada. Asigna cada dominio a un solo equipo. Un equipo suele poder llevar dos o tres dominios sencillos, pero un equipo con un dominio complejo no debería hacerse cargo de nada más. Reduce la carga extrínseca, la dificultad que proviene de cómo está organizado el trabajo y no del propio dominio, con plataformas, automatización y buena documentación. Y cuando algo crece demasiado para un solo equipo, divídelo por un plano de fractura. Un contexto delimitado suele ser lo mejor. Dividir solo por tecnología, por ejemplo móvil y backend, suele ser la opción más débil.

Este es el rediseño de la plataforma de reparto de comida. Tiene treinta y ocho ingenieros en cinco equipos, uno por capa técnica. Una idea tarda unas seis semanas en llegar a producción, y todos los equipos coordinan sus lanzamientos cada dos semanas. Primero, mapea los flujos. De las últimas cincuenta funcionalidades, cuarenta y cuatro correspondían principalmente a uno de tres flujos: pedidos de clientes, restaurantes asociados y reparto. Segundo, comprueba los planos de fractura. Ya son contextos delimitados separados, así que el código puede acompañar el cambio. Y la asignación de repartidores usa un solucionador que solo entienden tres ingenieros: un candidato a subsistema complicado. Tercero, dimensiona los equipos: tres equipos alineados al flujo de siete personas, un equipo de despacho de cinco, un equipo de plataforma de nueve y un equipo facilitador de tres. Siguen siendo treinta y ocho personas. Cuarto, elige los modos de interacción, con fechas de fin. Todos usan la plataforma como servicio desde el primer día. Reparto y Despacho colaboran durante un trimestre, y el equipo facilitador ayuda a Pedidos durante ocho semanas. Al cabo de dos trimestres, la mayoría de las funcionalidades deberían entregarse por un solo equipo sin un lanzamiento coordinado. Un trabajo entre equipos persistente señalaría un límite que hay que revisar.

Reorganizar los equipos no reestructura un código fuertemente acoplado. Durante meses, los equipos nuevos lucharán contra la arquitectura antigua, así que planifica los cambios en los equipos y en la arquitectura como un único programa. Un error habitual es renombrar los equipos existentes con estas etiquetas, mientras la propiedad, la financiación y la interacción siguen igual. Otro es un equipo de plataforma que trabaja mediante tickets y aprobaciones, de modo que los demás tienen que esperarlo. Eso es un cuello de botella, no una plataforma.

La sección completa trata las API de equipo, la plataforma viable más delgada y todos los planos de fractura. A continuación, en la Sección once punto seis, veremos la modernización de los sistemas heredados. Nos vemos allí.

Lo que necesitas saber

Diseñar equipos es trabajo de arquitectura

El Capítulo 3 mostró que la ley de Conway no es una curiosidad sino una fuerza: el sistema que construye un grupo de equipos tiende a copiar la forma en que esos equipos se comunican. Si eso es cierto, decidir cómo se forman los equipos, de qué se hace cargo cada uno y cómo interactúan es una decisión arquitectónica, con consecuencias tan duraderas como elegir una base de datos o un estilo de integración. La disciplina de diseñar a la vez la estructura del software y la estructura de los equipos se llama arquitectura sociotécnica.

El marco práctico más influyente para hacerlo es Team Topologies, de Matthew Skelton y Manuel Pais (IT Revolution, 2019; segunda edición 2025). Parte de un objetivo sencillo, el flujo rápido: una corriente constante y sostenible de cambios pequeños desde la idea hasta producción, con poca espera entre equipos. Después ofrece un vocabulario reducido para diseñar organizaciones que lo logren: cuatro tipos de equipo, tres modos de interacción, un límite llamado carga cognitiva del equipo y una técnica para encontrar las junturas por las que pueden dividirse el software y los equipos.

Varias premisas recorren el enfoque. La unidad de entrega es el equipo, no el individuo: el trabajo se asigna a equipos, la propiedad pertenece a los equipos y los equipos son estables, de modo que acumulan conocimiento de su dominio y de su código en lugar de formarse para un proyecto y dispersarse después. Los equipos son pequeños, normalmente de cinco a nueve personas, porque la confianza y la comprensión compartida disminuyen rápidamente por encima de ese tamaño (los autores se basan en la investigación de Robin Dunbar sobre el tamaño de los grupos). Y los límites de los equipos deben diseñarse para el flujo del cambio, no para la comodidad de las líneas jerárquicas ni según la historia de quién construyó qué.

Para los arquitectos, esto cambia el trabajo. Un límite de servicio propuesto solo es bueno si algún equipo puede hacerse cargo de él por completo; un equipo propuesto solo es viable si el código del que se hace cargo le permite trabajar sin pedir permiso a otros tres equipos. El arquitecto que dibuja cajas sin preguntar quién se hará cargo de cada una está diseñando la mitad del sistema.

Los cuatro tipos fundamentales de equipo

Team Topologies sostiene que casi todos los equipos de una organización de software deberían ser de uno de cuatro tipos. El sentido de tener tan pocos tipos es la claridad: cada tipo tiene un propósito distinto, una forma distinta de medir el éxito y una relación distinta con los demás equipos, de modo que conocer el tipo de un equipo indica a todos qué esperar de él.

Un equipo alineado al flujo (stream-aligned) está alineado con un flujo de cambio: un producto, un recorrido del cliente, un grupo de usuarios o una capacidad de negocio. Se hace cargo de su parte de extremo a extremo, desde el descubrimiento y la construcción hasta su operación en producción, y debería poder entregar la mayoría de los cambios sin esperar a nadie. Los equipos alineados al flujo son el tipo predeterminado y deberían ser la gran mayoría; los otros tres tipos existen para reducir su carga.

Un equipo de plataforma proporciona servicios internos (pipelines de despliegue, un entorno de ejecución, observabilidad, infraestructura de datos) como un producto que los equipos alineados al flujo consumen mediante autoservicio. Una buena plataforma se juzga por la velocidad de sus usuarios, no por su propia lista de funcionalidades. Un equipo facilitador está formado por especialistas que ayudan a otros equipos a adquirir una capacidad de la que carecen, como la automatización de pruebas, las prácticas de observabilidad o un framework nuevo, y después pasan a otra cosa; su éxito se mide porque el otro equipo deja de necesitarlo. Un equipo de subsistema complicado se hace cargo de una parte que requiere conocimientos poco comunes, como un motor de precios basado en modelos actuariales, un solucionador de optimización de rutas o un códec de video, para que los equipos alineados al flujo puedan usarla sin tener que dominarla. El libro insiste en que este tipo debe usarse con moderación y solo donde la especialidad sea real.

Comparación de los cuatro tipos de equipo

Tipo de equipoPropósitoSe hace cargo deSeñales de buena saludEjemplo de reparto de comida
Alineado al flujoEntregar un flujo continuo de cambios para una parte del negocioLas funcionalidades, el código, los datos y la operación de su flujo, de extremo a extremoLanza de forma independiente; la mayoría de los cambios no necesitan a ningún otro equipo; la carga de guardias es llevaderaEquipo de pedidos de clientes: cartas que ven los clientes, carrito, proceso de pago, seguimiento de pedidos
De plataformaReducir la carga cognitiva de los equipos alineados al flujo mediante productos internos de autoservicioLos servicios internos de la plataforma, su documentación y su fiabilidadLos equipos la adoptan voluntariamente; incorporar un servicio nuevo lleva horas, no semanasEquipo de plataforma de entrega: pipelines, entorno de ejecución de contenedores, logging y métricas, intermediario de eventos
FacilitadorCubrir carencias de capacidad en otros equipos y después retirarseConocimiento práctico, guías, ejemplos; no el código de producción de otros equiposLas intervenciones tienen un plazo acotado y terminan con el otro equipo siendo autosuficienteEquipo facilitador de fiabilidad que asesora a los equipos sobre objetivos de nivel de servicio y prácticas ante incidentes
Subsistema complicadoEncapsular una especialidad demasiado profunda para cada equipo alineado al flujoUn componente especializado detrás de una interfaz claraLos consumidores lo usan como un servicio sin necesitar a los especialistas presentesEquipo de optimización del despacho: el algoritmo que asigna repartidores a los pedidos

Tipos de equipo y modos de interacción

Los cuatro tipos de equipo de Team Topologies y los tres modos de interacción entre ellosfacilitaciónFiabilidadequipo facilitadorPedidosalineado a flujoRestaurantesalineado a flujoRepartoalineado a flujoDespachosubsistemacomplicadocolaboraciónX como servicio(autoservicio)Plataformapipelines, ejecución, observabilidad, datoscolaboración (plazo acotado)X como servicio (X-as-a-Service)facilitación
La mayoría de los equipos están alineados al flujo; una plataforma les da servicio en modo X como servicio, un equipo facilitador los facilita y un equipo de subsistema complicado colabora estrechamente con un flujo durante un tiempo limitado.

Tres modos de interacción

Los tipos de equipo dicen qué son los equipos; los modos de interacción dicen cómo trabajan juntos. Skelton y Pais sostienen que la interacción ambigua e improvisada entre equipos es una fuente importante de retrasos, porque cada conversación no planificada es una dependencia. Por eso recomiendan que cada par de equipos que deban interactuar elija deliberadamente uno de tres modos, durante un periodo determinado.

En la colaboración, dos equipos trabajan estrechamente en un objetivo compartido, con responsabilidades difusas, por ejemplo, mientras descubren cómo debe dividirse una capacidad nueva. Produce un aprendizaje rápido, pero cuesta a ambos equipos capacidad y carga cognitiva, así que debe tener un plazo acotado. En X como servicio (X-as-a-Service), un equipo proporciona algo (una API, una capacidad de plataforma, una biblioteca) que otro consume con poca o ninguna colaboración; escala bien, pero solo funciona una vez que el límite se entiende bien y la interfaz es buena. En la facilitación, un equipo, normalmente un equipo facilitador, ayuda a otro a aprender o a eliminar un obstáculo.

Los modos están pensados para cambiar. Una secuencia habitual es descubrir y luego asentar: un equipo de plataforma colabora con un equipo alineado al flujo durante unas semanas para diseñar una capacidad nueva, después la convierte en una oferta de autoservicio y pasa a X como servicio. Los modos también funcionan como mecanismo de detección. Si un equipo que debería consumir un servicio como servicio sigue necesitando reuniones, probablemente la interfaz o el límite están mal; si dos equipos llevan un año colaborando, quizá en realidad sean un solo equipo, o la división entre ellos esté en el lugar equivocado.

Los tres modos de interacción

ModoCómo se manifiestaÚsalo cuandoCosto o señal de alerta
ColaboraciónDos equipos trabajan como uno solo en un problema compartido durante un tiempo; sesiones de diseño conjuntas, elementos de backlog compartidosSe está descubriendo un límite, una tecnología o una capacidad nuevos y nadie conoce aún la interfaz adecuadaCarga cognitiva alta en ambos equipos; si se prolonga indefinidamente, probablemente el límite está mal
X como servicio (X-as-a-Service)Un equipo consume una API, una plataforma o un componente que proporciona otro, mediante documentación y autoservicioEl límite y la interfaz se entienden bien y son establesSe adapta con lentitud si la interfaz es deficiente; las solicitudes de soporte constantes muestran que aún no es un servicio de verdad
FacilitaciónAsesoramiento, trabajo en pareja, ejemplos y talleres breves que ayudan a un equipo a adquirir una capacidadA un equipo le falta una competencia o lo bloquea un obstáculo que puede aprender a eliminarAcaba convirtiéndose en hacer el trabajo del otro equipo, lo que crea dependencia en lugar de capacidad

La carga cognitiva como restricción de diseño

La idea de carga cognitiva procede de la psicología de la educación. La teoría de la carga cognitiva de John Sweller, publicada por primera vez en 1988, partía de la observación de que la memoria de trabajo humana solo puede retener y procesar unos pocos elementos nuevos a la vez, por lo que la enseñanza debe diseñarse para no sobrecargarla. La teoría distingue la carga intrínseca (la dificultad inherente del material), la carga extrínseca (la dificultad causada por la forma en que se presenta la tarea) y, en trabajos posteriores, la carga pertinente (el esfuerzo que construye una comprensión duradera). Los investigadores aún debaten si la carga pertinente es una categoría aparte, y Team Topologies usa las tres como heurística práctica, no como medición.

La Sección 3.7 presentó la versión de esta idea aplicada a los equipos: el total que un equipo debe tener en la cabeza para construir, operar y cambiar aquello de lo que se hace cargo. Lo que importa aquí es cómo usarla como restricción de diseño. Cuando una arquitectura asigna a un equipo más de lo que puede comprender, los efectos son previsibles: entregas más lentas, correcciones superficiales, guardias frágiles, conocimiento concentrado en una o dos personas y, con el tiempo, salidas de la empresa. Son los mismos síntomas que a menudo se atribuyen a malos ingenieros o a mal código.

El libro ofrece reglas prácticas para dimensionar las responsabilidades de un equipo según la complejidad del dominio: asigna cada dominio a un solo equipo; un equipo suele poder llevar dos o tres dominios sencillos; un equipo que se hace cargo de un dominio complejo no debería hacerse cargo de nada más; y ningún equipo debería tener dos dominios complicados. También se puede preguntar directamente a los equipos, por ejemplo con una encuesta breve sobre lo bien que entienden sus sistemas, la seguridad que sienten cuando están de guardia y cuánto tiempo dedican a las herramientas en lugar de al dominio. Las colas de tickets crecientes, los largos tiempos de incorporación y los traspasos frecuentes a la única persona que entiende un componente son señales indirectas útiles.

Las respuestas arquitectónicas reflejan los tres tipos de carga. Reduce la carga extrínseca con plataformas, automatización, caminos pavimentados y buena documentación. Acota la carga intrínseca trazando los límites de servicios y módulos de modo que la parte del dominio de cada equipo sea coherente y de un tamaño manejable, y situando las especialidades profundas detrás de interfaces de subsistema complicado. Protege la carga pertinente dejando tiempo para aprender, que es donde ayudan los equipos facilitadores.

Las API de equipo y la plataforma viable más delgada

Si los equipos interactúan mediante modos deliberados, cada equipo necesita una cara clara hacia el resto de la organización. Team Topologies la llama API del equipo: todo lo que el equipo ofrece y espera. Incluye la API técnica (endpoints, eventos, bibliotecas y sus reglas de versionado y obsolescencia), pero también la interfaz humana: la documentación y las guías de incorporación, la hoja de ruta y las prioridades actuales del equipo, sus prácticas de trabajo, los canales donde se le puede contactar, cómo solicitarle trabajo y qué tiempos de respuesta esperar.

Poner por escrito una API del equipo es un ejercicio barato y revelador. Obliga a un equipo a decir de qué se hace cargo, lo que suele dejar al descubierto servicios sin propietario y datos en disputa, y ofrece a otros equipos una forma de interactuar sin una reunión. Muchas organizaciones la mantienen como una página breve en el repositorio del equipo, revisada cada trimestre junto con la documentación de arquitectura.

La plataforma merece especial cuidado, porque es donde las buenas intenciones fallan con más frecuencia. Una plataforma construida como un gran proyecto interno, con una larga hoja de ruta y adopción obligatoria, puede fácilmente añadir carga cognitiva en lugar de reducirla. Skelton y Pais recomiendan la plataforma viable más delgada (thinnest viable platform): el conjunto más pequeño de servicios, documentación y estándares que realmente acelera a sus usuarios. Para una organización pequeña puede ser una página bien mantenida que enumere qué servicios del proveedor de nube deben usar los equipos y cómo; para una grande puede ser una plataforma interna para desarrolladores. La ingeniería de plataformas se trata en profundidad en el Capítulo 10; lo esencial aquí es que una plataforma es un producto cuyos clientes son otros equipos, y debe diseñarse y medirse como tal.

Planos de fractura: por dónde dividir el software y los equipos

Cuando una parte del sistema ha crecido demasiado para un solo equipo, hay que dividirla, y la división debe funcionar tanto para el código como para los equipos. Team Topologies llama planos de fractura a las junturas naturales por las que puede dividirse el software. El libro enumera varios, y el primero suele ser el mejor: un contexto delimitado del diseño guiado por el dominio, porque un límite que sigue el lenguaje y las reglas del negocio tiende a mantener juntos los cambios relacionados.

Los demás son útiles cuando coinciden con una diferencia real en cómo deben tratarse las partes del sistema. Dividir solo por un límite tecnológico (por ejemplo, un equipo móvil y un equipo de backend) suele ser la opción más débil, porque entonces la mayoría de los cambios lo cruzan, que es la estructura de equipos por capas sobre la que advierte la ley de Conway.

Planos de fractura con ejemplos de reparto de comida

Plano de fracturaDivide cuandoEjemplo
Dominio de negocio (contexto delimitado)Partes del dominio tienen su propio lenguaje, sus propias reglas y sus propios expertosPedidos, alta de restaurantes y gestión de repartidores como contextos separados
Cumplimiento normativoUna parte está sujeta a normas que no deberían recaer sobre el restoGestión de pagos con tarjeta mantenida en un alcance pequeño y auditado para PCI DSS
Ritmo de cambioAlgunas partes cambian a diario y otras una vez al añoLas promociones y campañas cambian cada semana; las reglas de facturación cambian rara vez
Ubicación del equipoLos equipos trabajan en husos horarios con poco solapamientoUn equipo de operaciones de repartidores en otro país se hace cargo del alta de repartidores
RiesgoAlgunas partes toleran experimentos y otras noExperimentos de recomendación separados de la aceptación de pedidos
Aislamiento del rendimientoUna parte tiene necesidades de carga o de latencia muy distintasActualizaciones en vivo de la ubicación de los repartidores separadas de la consulta de cartas
TecnologíaUna parte necesita un stack tecnológico realmente distintoUna integración heredada con las tabletas de los restaurantes que solo funciona en hardware antiguo
Perfiles de usuarioLos distintos grupos de usuarios tienen necesidades y recorridos distintosClientes, personal de restaurante y repartidores tienen cada uno su propia app y su propio equipo

La ley de Conway, la maniobra inversa y sus límites

Team Topologies es, en la práctica, un conjunto de herramientas para la maniobra inversa de Conway que describió la Sección 3.7: decide la arquitectura que quieres y después da forma a los equipos y a los modos de interacción para que la ley de Conway empuje el sistema hacia ella. Sus aportaciones son prácticas. Los tipos de equipo dicen qué clase de equipo debe hacerse cargo de cada parte; los modos de interacción dicen qué límites entre equipos deben ser finos (X como servicio) y cuáles son temporalmente gruesos (colaboración); la carga cognitiva dice cuánto puede tener a su cargo cada equipo; los planos de fractura dicen por dónde cortar.

Los límites señalados en la Sección 3.7 siguen vigentes y conviene repetirlos en este contexto. Reorganizar los equipos no reestructura una base de código fuertemente acoplada: durante meses después de una reorganización, los equipos nuevos lucharán contra la arquitectura antigua, y por eso los cambios en los equipos y los cambios en la arquitectura deben planificarse como un único programa. Los límites que se consolidan en equipos demasiado pronto encarecen los errores, por lo que muchas organizaciones mantienen los límites inciertos dentro de un solo equipo o de un solo monolito modular hasta tener pruebas. Y las reorganizaciones frecuentes destruyen el conocimiento acumulado por los equipos estables, del que depende el enfoque.

Los profesionales tampoco se ponen de acuerdo sobre lo literalmente que hay que aplicar el marco. Sus defensores valoran el vocabulario compartido, que convierte quejas vagas (siempre estamos esperando al equipo de datos) en preguntas que se pueden diseñar (¿qué modo de interacción queremos con el equipo de datos y qué lo convertiría en X como servicio?). Sus críticos advierten de que los cuatro tipos a menudo se aplican como etiquetas a una organización que no cambia, de que los equipos reales a veces mezclan tipos (un equipo de plataforma que también se hace cargo de un subsistema complicado) y de que el marco dice poco sobre financiación, estructura de gestión o incentivos. Ambas observaciones son justas: los tipos son una ayuda para el diseño, no un organigrama, y los propios autores los presentan como punto de partida para un ajuste continuo.

Ejemplo práctico

Ejemplo práctico: rediseñar los equipos de la plataforma de reparto de comida en torno a flujos

La plataforma de reparto de comida ha crecido hasta 38 ingenieros en cinco equipos organizados por capa técnica: apps móviles, frontend web, API de backend, base de datos y operaciones. El tiempo de entrega desde la idea hasta producción es de unas seis semanas, los lanzamientos se coordinan cada dos semanas entre todos los equipos, y cada uno de los tres últimos incidentes duró varias horas porque nadie se hacía cargo de un recorrido del cliente completo. El arquitecto y los responsables de ingeniería rediseñan la organización en cinco pasos.

1. Mapear los flujosUn event storming y una revisión de las últimas 50 funcionalidades muestran tres flujos principales de cambio: pedidos de clientes (cartas, carrito, proceso de pago, seguimiento), restaurantes asociados (alta, cartas, horarios de apertura, liquidaciones) y reparto (alta de repartidores, asignación, seguimiento en vivo). 44 de las 50 funcionalidades correspondían principalmente a uno de ellos.
2. Comprobar los planos de fractura del softwarePedidos, restaurantes y reparto ya son contextos delimitados separados, con sus propios servicios y bases de datos (Sección 11.1), así que el código puede acompañar el cambio. La asignación de repartidores usa un solucionador de optimización que solo entienden tres ingenieros: un candidato a subsistema complicado. Los pagos con tarjeta se quedan en Pedidos, pero en un módulo pequeño auditado por separado (plano de fractura regulatorio).
3. Dimensionar los equipos según la carga cognitivaTres equipos alineados al flujo de 7 personas (cada uno con competencias de móvil, web, backend, pruebas y operaciones). Un equipo de subsistema complicado de 5 para la optimización del despacho (los tres especialistas más dos ingenieros que aprenden el dominio). Un equipo de plataforma de 9 que se hace cargo de los pipelines, el entorno de ejecución de contenedores, la observabilidad y el intermediario de eventos. Un pequeño equipo facilitador de 3 para las prácticas de fiabilidad. Total: 38.
4. Elegir los modos de interacciónLos equipos alineados al flujo consumen la plataforma como X como servicio desde el primer día, usando sus pipelines existentes. Reparto y Despacho colaboran durante un trimestre para rediseñar la interfaz de despacho y después pasan a X como servicio. El equipo facilitador facilita a Pedidos durante ocho semanas (objetivos de nivel de servicio, runbooks de guardia) y después pasa a Restaurantes.
5. Publicar las API de equipo y medirCada equipo redacta una API del equipo de una página, cada servicio y cada tabla de base de datos tiene exactamente un equipo propietario, y los responsables siguen cada trimestre el tiempo de entrega, la frecuencia de despliegue, los tickets entre equipos por funcionalidad y una encuesta sobre la confianza en las guardias.
Resultado que buscarAl cabo de dos trimestres, la mayoría de las funcionalidades deberían entregarse por un solo equipo sin un lanzamiento coordinado; un trabajo entre equipos persistente señalaría un límite que hay que revisar.

El rediseño parte de los flujos de cambio y de los límites existentes del software, no de las líneas jerárquicas actuales.

Los especialistas se concentran solo donde el dominio lo exige (el despacho), y la plataforma existe para reducir la carga de los equipos alineados al flujo, no para controlarlos.

Los modos de interacción vienen con fecha de fin, así que se espera que la organización evolucione en lugar de quedar fijada en un organigrama nuevo.

Antes y después

Antes y después: equipos de reparto de comida reorganizados de capas técnicas a equipos alineados al flujo, de plataforma, facilitador y de subsistema complicadoAntes: un equipo por capa técnica (38 ingenieros)Apps móviles (8)Frontend web (6)API de backend (12)Base de datos (5)Operaciones (7)Una funcionalidad, comolos pedidos programados,exige 5 equipos:4 traspasos, 5 backlogs,1 lanzamiento conjuntoNadie es dueño de unresultado completoDespués: equipos alineados a flujos de cambioPedidos (7)clientes, pagoRestaurantes (7)altas, cartasReparto (7)flota, seguimientoFacilit. (3)fiabilidad, plazo acotadoOptim. de despacho (5)subsistema complicadoX como serviciopara cada equipoPlataforma de entrega (9): pipelines, ejecución, observabilidad, datos
Los equipos por capa obligan a que cada funcionalidad pase por todos los equipos; los equipos alineados al flujo, apoyados por una plataforma, un equipo facilitador y un equipo especializado, pueden entregar solos la mayoría de las funcionalidades.

Preguntas frecuentes

¿Los equipos de componente son siempre un error?

No siempre. Un equipo que se hace cargo de un componente compartido puede ser la opción correcta cuando el componente requiere una especialización profunda (un subsistema complicado) o se ofrece como un verdadero producto de autoservicio (parte de una plataforma). Se convierte en un problema cuando la mayoría de las funcionalidades necesitan cambios en el componente y los equipos alineados al flujo tienen que hacer cola para conseguirlos.

¿Dónde encajan los arquitectos en este modelo?

Normalmente no como un equipo aparte que hace de guardián. Los arquitectos suelen actuar como un equipo facilitador, ayudando a los equipos alineados al flujo a tomar buenas decisiones y manteniendo visibles las cualidades de todo el sistema, y participan en el diseño de la propia estructura de equipos. La Sección 11.4 explica cómo puede funcionar la gobernanza sin compuertas.

¿Con qué frecuencia deberían cambiar los límites de los equipos?

Rara vez y de forma deliberada. Se espera que los modos de interacción cambien cada pocos meses; la composición de los equipos y su propiedad deberían mantenerse estables durante mucho más tiempo, porque es en los equipos estables donde se acumula el conocimiento del dominio y del sistema.

Comprueba lo que has entendido

Nombra tres cosas que contiene una API del equipo además de sus interfaces de código.

Por ejemplo, su documentación y sus guías de incorporación, su hoja de ruta y sus prioridades, sus prácticas de trabajo, los canales donde se le puede contactar y cómo solicitarle trabajo.

¿Por qué se espera que los modos de interacción cambien con el tiempo?

Porque la colaboración es adecuada para descubrir un límite nuevo y, una vez que se entienden el límite y la interfaz, los equipos deberían asentarse en X como servicio; los modos siguen el grado de madurez del límite.

¿Qué es la plataforma viable más delgada y por qué aspirar a ella?

El conjunto más pequeño de servicios, documentación y estándares que realmente acelera a los equipos que la usan; una plataforma más grande corre el riesgo de añadir carga cognitiva en lugar de reducirla.

¿Por qué una división en equipo de frontend y equipo de backend suele ser un plano de fractura débil?

Porque la mayoría de las funcionalidades la cruzan, así que cada cambio necesita a ambos equipos, traspasos y lanzamientos coordinados, que es la estructura por capas que la ley de Conway convierte en un sistema por capas y acoplado.

Siguiente · 11.6Sistemas heredadosPor qué fracasan las grandes reescrituras y cómo modernizar con seguridad: las siete R, el strangler fig, branch by abstraction, las ejecuciones en paralelo, la captura de datos de cambios, las capas anticorrupción y una migración de datos cuidadosa.Continuar →

Fuentes y lecturas recomendadas

¿Tienes una pregunta sobre esta sección? ArchitectBot, el asistente de estudio con IA del curso, responde primero a partir del curso.

Pregunta: “Tenemos equipos separados de frontend, backend y base de datos, y cada funcionalidad tarda semanas. ¿Cómo propondría pasar a equipos alineados al flujo sin romperlo todo?”