Bin-packing es un problema NP-hard en el campo de la optimización combinatoria. Su objetivo es asignar un conjunto de 'ítems' (elementos) con pesos o tamaños específicos a un número mínimo de 'bins' (contenedores) idénticos, cada uno con una capacidad máxima predefinida. La restricción fundamental es que la suma de los tamaños de los ítems asignados a cualquier bin no debe exceder la capacidad de ese bin. Existen diversas variantes, como 1D, 2D y 3D bin-packing, y algoritmos heurísticos y de aproximación (como First Fit, Best Fit, First Fit Decreasing) se utilizan para encontrar soluciones eficientes, aunque no necesariamente óptimas, debido a la complejidad computacional del problema.

En el mundo real, Bin-packing es fundamental en la gestión de recursos computacionales y logísticos. Por ejemplo, en orquestadores de contenedores como Kubernetes, el scheduler utiliza principios de Bin-packing para asignar Pods (ítems) a Nodos (bins) con el fin de maximizar la utilización de los recursos de la infraestructura y minimizar el número de Nodos necesarios. Plataformas de cloud computing como AWS, Azure o Google Cloud lo aplican para asignar máquinas virtuales a hosts físicos. También se utiliza en la planificación de almacenamiento (ej. cómo distribuir archivos en discos), en la optimización de carga de camiones o contenedores de envío, y en la asignación de tareas a procesadores en sistemas distribuidos.

Para un Arquitecto de Sistemas, comprender Bin-packing es crucial para diseñar infraestructuras eficientes y rentables. La elección de un algoritmo de Bin-packing (o la configuración de uno existente) impacta directamente en la utilización de recursos, la latencia de las cargas de trabajo, la resiliencia y los costos operativos. Un empaquetamiento denso (mayor utilización) puede reducir los costos de infraestructura, pero podría aumentar el 'blast radius' en caso de fallos de un nodo o introducir contención de recursos. Por otro lado, un empaquetamiento más disperso (menor utilización) puede ofrecer mayor aislamiento y resiliencia, pero a un costo de infraestructura más elevado. Los arquitectos deben sopesar estos trade-offs, considerando factores como la criticidad de las aplicaciones, los requisitos de rendimiento, los objetivos de SLO/SLA y el presupuesto disponible al diseñar estrategias de asignación de recursos y escalabilidad.