La computación distribuida es un fenómeno multifacético con infraestructuras que, en ocasiones, difieren mucho. Por ello, no es fácil describir todas las variantes de la computación distribuida. Sin embargo, existen tres subcampos que se describen a menudo en el ámbito de la informática:
- Computación en la nube o cloud computing
- Computación en malla o grid computing
- Computación en clúster o cluster computing
En la computación en la nube, se utiliza la computación distribuida para proporcionar a los clientes infraestructuras y plataformas altamente escalables y rentables. Los proveedores de la nube suelen ofrecer capacidad en forma de servicios alojados a los que se puede acceder a través de internet. En la práctica, se han establecido varios modelos de servicio:
- Software como Servicio (SaaS): con el servicio SaaS, el cliente utiliza las aplicaciones y la infraestructura asociada de un proveedor en la nube (por ejemplo, servidores, almacenamiento en línea o capacidad de computación). También puede acceder a las aplicaciones con diferentes dispositivos a través de la llamada interfaz de cliente liviano o thin client interface (por ejemplo, una aplicación web basada en el navegador). El proveedor de la nube se encarga de mantener y administrar la infraestructura subcontratada.
- Platforma como servicio (PaaS): con el servicio PaaS, se ofrece un entorno basado en la nube para el desarrollo de aplicaciones web, por ejemplo. El usuario tiene control sobre las aplicaciones proporcionadas y puede personalizar algunos parámetros, mientras que el proveedor de la nube se encarga de la infraestructura técnica de la computación distribuida.
- Infrastructure como Servicio (IaaS): con el servicio IaaS, el proveedor de la nube proporciona una infraestructura técnica a la que los usuarios acceden a través de redes privadas o públicas. Entre los componentes de esta infraestructura se incluyen, por ejemplo, servidores, capacidades de computación y de red, dispositivos de comunicación como rúters, conmutadores o cortafuegos, espacio de almacenamiento y sistemas de archivado y protección de datos. Por su parte, el cliente controla los sistemas operativos y las aplicaciones que se le ofrecen.
La llamada computación en malla está orientada conceptualmente a la creación de un superordenador con una enorme potencia de cálculo. Sin embargo, las tareas de computación no son procesadas por una, sino por muchas instancias. Los servidores y los PC pueden realizar diferentes tareas de manera independiente. Al realizar las tareas, la computación en malla puede acceder a los recursos de manera muy flexible. En general, los participantes ponen sus capacidades informáticas a disposición de un proyecto general por la noche, cuando su infraestructura técnica se utiliza relativamente poco.
Una ventaja es que permite usar sistemas muy potentes rápidamente y escalar la potencia de computación según sea necesario. Además, no obliga a actualizar costosos superordenadores o sustituirlos por otros nuevos.
Como la computación en malla permite crear un superordenador virtual a partir de un grupo de ordenadores conectados, está especializada en problemas de computación especialmente complejos. Este método suele utilizarse para desarrollar proyectos científicos ambiciosos o para descifrarcódigos criptográficos.
La computación en clúster no tiene una definición claramente distinguible de las variantes de computación en la nube y en malla. Es un término más general, que se refiere a todas las modalidades que combinan ordenadores individuales y sus capacidades informáticas en un clúster (es decir, “grupo” o “conjunto”). Por ejemplo, hay clústeres de servidores, clústeres en entornos de big data y en la nube, clústeres de bases de datos y clústeres de aplicaciones. Además, las redes informáticas se utilizan cada vez más en la computación de alto rendimiento, que resuelve problemas informáticos particularmente complejos.
También se pueden distinguir diferentes tipos de computación distribuida tomando como base las arquitecturas de los sistemas y los modelos de interacción de la infraestructura distribuida. Debido a la complejidad de las arquitecturas de sistemas de la computación distribuida, se utiliza a menudo el término “sistemas distribuidos”.
Entre los modelos de arquitectura ampliados de la computación distribuida están los siguientes:
- Modelo de cliente-servidor
- Modelo peer to peer
- Modelo de capas (arquitecturas multinivel)
- Arquitectura orientada a servicios (SOA, del inglés service-oriented architecture)
El modelo cliente-servidor es un modelo simple de interacción y comunicación en la computación distribuida. Un servidor recibe una solicitud de un cliente, realiza los procedimientos de procesamiento adecuados y envía una respuesta (mensaje, datos, resultados de los cálculos) al cliente.
La arquitectura peer to peer organiza la interacción y la comunicación de la computación distribuida a partir de aspectos descentralizados. Todos los ordenadores (también llamados nodos) tienen los mismos privilegios y realizan las mismas tareas y funciones en la red. Cada ordenador puede actuar como cliente y como servidor. Un ejemplo de arquitectura peer to peer es la blockchain de criptomonedas.
En el diseño conceptual de una arquitectura de capas, los aspectos individuales de un sistema de software se distribuyen en variascapas (en inglés, tier o layer), aumentando así la eficacia y la flexibilidad de la computación distribuida. Este tipo de arquitectura del sistema, que puede diseñarse como una arquitectura de dos, tres o n capas, según el uso previsto, es bastante común en las aplicaciones web.