​La Cátedra iDanae (inteligencia, datos, análisis y estrategia) en Big Data y Analytics, creada en el marco de colaboración de la Universidad Politécnica de Madrid (UPM) y Management Solutions, publica su newsletter trimestral correspondiente al 2T22 sobre computación distribuida


Cátedra iDanae: Computación Distribuida

Ver vídeo

 

Introducción

Los avances en el ámbito de la digitalización han causado que se incremente de forma exponencial el volumen de la información generada a través de los procesos e interacciones humanas: según predicciones de la International Data Corporation1, se espera que la cantidad de datos que se generan llegue hasta los 175 Zettabytes en 2025. Además, los datos se producen y se almacenan en distintos formatos (información estructurada en tablas y bases de datos, documentos, voz, texto, video, posicionamiento, etc.), y dichos datos son cada vez más accesibles2. Ello ha potenciado el desarrollo de la Inteligencia Artificial (IA), y ha permitido extraer más valor de las distintas técnicas de modelización. No obstante, todo ello implica la necesidad de contar cada vez con mayor capacidad de almacenamiento y potencia de cálculo. 

Tradicionalmente se ha tratado de encontrar alternativas para abordar esta necesidad a través de mejoras de la infraestructura (por ejemplo, incrementando la capacidad física de los computadores, la memoria, etc.) o de mejoras en el software (a través del uso de algoritmos más eficientes). Esta necesidad de aumentar la capacidad de computación para realizar una mayor cantidad de operaciones en el menor tiempo posible llevó al desarrollo de microprocesadores y GPUs cada vez más potentes. Asimismo, la invención de redes de alta velocidad como las redes de área local (LAN), y su continua mejora, permitieron conectar miles de ordenadores que comparten información entre ellos en unos pocos microsegundos. 

Como consecuencia de los cambios tecnológicos, para potenciar aún más la capacidad de procesamiento, surgió la denominada “computación distribuida”, a través de la replicación del hardware y la adaptación del software: por una parte, como la frecuencia de reloj no puede aumentarse debido al excesivo calor producido, se incrementa la potencia de cálculo mediante la utilización de procesadores de múltiples núcleos y el uso de múltiples procesadores conectados entre sí, y por otra, se adaptan los algoritmos para que sean capaces de usar simultáneamente múltiples recursos de hardware de forma eficiente4. Con ello se consigue proporcionar un gran rendimiento, disminuyendo los costes. 

Desde un punto de vista conceptual, la computación distribuida comprende todos los procesos informáticos que comparten información al estar conectados mediante cualquier tipo de red de comunicación5. Este concepto se encuentra estrechamente ligado a la invención de Internet en la década de los 70, donde un número enorme de pequeñas redes se interconectan sin que haya una máquina central responsable de proporcionar toda la información, y los datos recibidos dependen de millones de entidades y dispositivos.

Puede considerarse que el primer proyecto de computación distribuida de propósito general de Internet fue
Distributed.net6, desarrollado en la década de los 90. El objetivo de este proyecto era usar el tiempo de inactividad de la CPU o de las GPU para resolver problemas a gran escala.

La forma en que se utilizan las tecnologías de la información ha cambiado con el paso del tiempo. Se ha pasado de utilizar un ordenador personal desconectado de la red a usar terminales (móviles, tabletas, portátiles) que ejecutan aplicaciones que requieren datos externos y mayor potencia de cálculo que la disponible en cada terminal. El gran auge de dichas aplicaciones es lo que ha disparado la demanda de la computación distribuida. De hecho, en los últimos años se ha potenciado el desarrollo de la tecnología utilizada para la computación distribuida, a través de soluciones como la arquitectura en malla (que conecta un grupo de ordenadores de manera descentralizada con el fin de formar un superordenador virtual) o la computación en la nube (que permite el uso de una red de servidores remotos conectados a internet para almacenar, administrar y procesar datos, servidores, bases de datos, redes y software).

Definición

Un sistema distribuido es una colección de diferentes entidades que cooperan para resolver un problema que de manera individual no puede ser resuelto o cuya resolución consumiría demasiado tiempo para ser viable. 

En el ámbito de la informática la computación distribuida se define como una colección de ordenadores que no comparten memoria y son asíncronos, comunicándose por mensajes en una red. Cada uno de estos ordenadores tiene su propia memoria y su propio sistema operativo. Normalmente, estos ordenadores son semiautónomos y están débilmente acoplados mientras cooperan para la resolución colectiva de un problema. Sin embargo, estos ordenadores independientes son vistos por los usuarios como una misma entidad. 

Entre sus características cabe destacar la autonomía y heterogeneidad de los procesos, que no tienen por qué tener el mismo tiempo de ejecución (conceptualmente ligado a la distribución de tareas) o compartir el mismo sistema operativo. Pueden estar separados geográficamente, aunque es necesario que se encuentren unidos por una red de comunicación. 

La motivación para utilizar un sistema distribuido se basa principalmente en el aumento del rendimiento y capacidad de computación de los procesos. Además incluye el aumento de la seguridad de los procesos y las bases de datos, al no estar concentrados en un único servidor. Otro factor importante es el acceso a la información situada en zonas lejanas y que no sería viable replicar de manera local, o el acceso a superordenadores, que se encuentran en lugares concretos y los usuarios se conectan a ellos de manera remota. 

Esta situación, así como el compartir recursos, hace posible que los costes se reduzcan y el rendimiento aumente. Por último, la posibilidad de replicar la información y recursos incrementan la tolerancia a fallos de las aplicaciones, la cual aumenta por el hecho de que es complicado que fallen simultáneamente infraestructuras situadas en diferentes áreas geográficas.

 

Comparativa entre sistemas de computación

Existen diferentes modelos de computación que han ido evolucionando a medida que lo hacía la tecnología disponible en cada momento. El modelo de computación distribuida ha ido evolucionando a partir de la computación paralela, que a su vez surgió con un afán de intentar mejorar la computación tradicional (véase Tabla 1).
El modelo más antiguo es el de computación tradicional, en el cual se ejecuta un programa instrucción por instrucción de forma secuencial. Las instrucciones en un ordenador siempre siguen las mismas normas generales y pueden ser divididas en tres fases bien diferenciadas: 

 


La publicación ya está d​​isponible para su descarga en la web de la Cátedra tanto en español como en inglés​.​​ ​