Amorphous Computing se refiere a la computación en sistemas compuestos por un número vasto de componentes simples, heterogéneos y distribuidos espacialmente, que interactúan solo localmente con sus vecinos. Estos sistemas carecen de una arquitectura global predefinida, una identidad única para sus componentes, o un reloj global. El objetivo es que, a través de interacciones locales simples y redundancia, el sistema en su conjunto pueda auto-organizarse para realizar tareas complejas, adaptarse a fallos y cambios en el entorno, y exhibir propiedades emergentes a nivel macroscópico, similar a cómo las células forman organismos biológicos.
Aunque el concepto de Amorphous Computing es más teórico y se explora en investigación, sus principios se ven reflejados en sistemas del mundo real que gestionan la complejidad y la distribución. Ejemplos incluyen redes de sensores inalámbricas (Wireless Sensor Networks - WSNs) donde los nodos recopilan datos y se comunican localmente para formar una imagen global; ciertos enfoques en la computación de "niebla" (Fog Computing) y "borde" (Edge Computing) donde la inteligencia se distribuye y procesa cerca de la fuente de datos; y en el diseño de enjambres de robots (Robot Swarms) que colaboran para tareas complejas sin un controlador central. También se relaciona con la computación ubicua y la Internet de las Cosas (IoT), donde un gran número de dispositivos heterogéneos interactúan para formar un entorno inteligente.
Para un arquitecto, Amorphous Computing ofrece una perspectiva valiosa sobre cómo diseñar sistemas resilientes y escalables en entornos impredecibles. Implica un cambio de mentalidad de la coordinación centralizada a la auto-organización y la robustez a través de la redundancia y la distribución. Los trade-offs clave incluyen la dificultad de depuración y verificación debido al comportamiento emergente, la necesidad de algoritmos descentralizados que operen con información local e incompleta, y la gestión de la heterogeneidad y la variabilidad de los componentes. Sin embargo, ofrece beneficios significativos en términos de escalabilidad masiva, tolerancia a fallos inherente y adaptabilidad, lo que es crucial para sistemas distribuidos modernos que operan en entornos dinámicos y a gran escala.