Composition, en el contexto de la arquitectura de sistemas, se refiere a la práctica de ensamblar funcionalidades complejas combinando componentes más simples y autónomos. Estos componentes, a menudo encapsulados y con responsabilidades únicas, exponen interfaces bien definidas que permiten su interacción. El principio fundamental es que el comportamiento del sistema completo emerge de la colaboración y coordinación de sus partes constituyentes, en lugar de ser una entidad monolítica. Esto contrasta con la herencia (Inheritance) en la programación orientada a objetos, donde las clases derivan comportamiento de otras, favoreciendo 'Composition over Inheritance' para una mayor flexibilidad y menor acoplamiento.

Este principio se manifiesta ampliamente en sistemas distribuidos y arquitecturas modernas. En Microservices, por ejemplo, una aplicación se descompone en servicios pequeños e independientes que se comunican a través de APIs (REST, gRPC, Message Queues). Un "pedido" en un e-commerce podría ser el resultado de la composición de servicios de "inventario", "pagos" y "envío". En Infrastructure as Code (IaC), herramientas como Terraform o AWS CloudFormation permiten componer infraestructuras complejas a partir de recursos individuales (VMs, bases de datos, redes) definidos como bloques. En el desarrollo de front-end, frameworks como React o Vue.js promueven la composición de interfaces de usuario a partir de componentes reutilizables.

Para un Arquitecto Staff+, la Composition es crucial para diseñar sistemas escalables, mantenibles y resilientes. Facilita la modularidad, permitiendo que los equipos trabajen en componentes de forma independiente y que los sistemas evolucionen sin afectar a todo el conjunto. Reduce el acoplamiento, lo que mejora la capacidad de prueba y la tolerancia a fallos. Sin embargo, introduce desafíos como la gestión de la comunicación entre componentes (latencia, serialización, protocolos), la consistencia de datos distribuidos y la observabilidad de un sistema con múltiples puntos de fallo. La decisión de cómo y cuándo componer, y en qué granularidad, es un trade-off fundamental entre la simplicidad de un monolito y la flexibilidad y resiliencia de una arquitectura compuesta.