Arquitectura Centrada en Datos (Cliente-Servidor)

Clase 12 de 24Curso de Fundamentos de Arquitectura de Software

Resumen

El estilo arquitectónico cliente-servidor es una de las bases fundamentales en el diseño de sistemas informáticos modernos. A pesar de su antigüedad, sigue siendo ampliamente utilizado debido a su efectividad y versatilidad. Comprender este modelo es esencial para cualquier profesional de la tecnología, ya que establece las bases para entender cómo interactúan los diferentes componentes de un sistema distribuido.

¿Qué es el estilo arquitectónico cliente-servidor?

El estilo arquitectónico cliente-servidor es un modelo de diseño de sistemas que se basa en el principio de llamadas y respuestas entre dos componentes principales: el cliente y el servidor. Este modelo está profundamente arraigado en los fundamentos de la programación estructurada, donde el flujo de control se mueve desde un programa principal hacia funciones auxiliares y luego regresa.

En este tipo de arquitectura, el cliente generalmente mantiene:

  • Control sobre los datos
  • Lógica general de las acciones
  • Estado de ejecución del problema que está resolviendo

El servidor, por su parte, responde a las solicitudes del cliente proporcionando servicios específicos. Es importante destacar que esta relación no necesariamente implica servidores enormes y clientes diminutos. La relación puede manifestarse en diversas formas, desde scripts que utilizan utilidades del sistema operativo hasta complejos sistemas de bases de datos que gestionan grandes volúmenes de información.

¿Cómo se distribuye el control en este modelo?

El comportamiento y el estado son elementos fundamentales en el estilo cliente-servidor. La distribución de estos elementos puede variar según las necesidades del sistema:

  1. Control centrado en el cliente: Toda la lógica de la solución reside en el cliente, que utiliza su conocimiento del estado global para determinar qué acciones solicitar al servidor.

  2. Control centrado en el servidor: El cliente funciona principalmente como una interfaz, mientras que la mayoría del procesamiento ocurre en el servidor.

  3. Control mixto: El cliente puede solicitar tanto componentes de interfaz como partes de la lógica del servidor según sus necesidades.

Tipos de clientes en la arquitectura cliente-servidor

Dependiendo de la cantidad de responsabilidad y capacidades que asume el cliente, podemos clasificarlos en:

  • Clientes ricos: Disponen de interfaces sofisticadas y capacidades de procesamiento significativas, como las aplicaciones de escritorio de un sistema operativo.

  • Clientes ligeros: Tienen capacidades limitadas y dependen en gran medida del servidor, como los teléfonos celulares más antiguos.

  • Clientes mixtos: Combinan características de ambos tipos, solicitando tanto elementos de interfaz como lógica de procesamiento del servidor según sea necesario.

¿Qué es el estilo arquitectónico por capas?

Una evolución natural del modelo cliente-servidor es el estilo arquitectónico por capas. En este enfoque, los componentes que actúan como clientes en un nivel pueden funcionar como servidores para otros clientes en niveles inferiores. Esta disposición en capas permite una organización jerárquica del sistema, facilitando su mantenimiento y evolución.

Un sistema de capas puede analizarse desde las más cercanas al usuario final hasta aquellas que proporcionan servicios a otros clientes automáticos o servidores. Un ejemplo típico es la arquitectura de tres capas:

  1. Capa de presentación (cliente)
  2. Capa lógica (servidor de aplicación)
  3. Capa de datos (servidor de base de datos)

En este escenario, cuando el cliente realiza una solicitud a la capa lógica, esta puede necesitar realizar una segunda solicitud a la capa de datos para completar la operación.

Aplicaciones prácticas del modelo cliente-servidor

El estilo cliente-servidor encuentra aplicación en numerosos escenarios:

  • Aplicaciones móviles: Muchas apps requieren almacenar datos localmente en el dispositivo del cliente, que posteriormente se sincronizan con servidores remotos.

  • Sistemas web: Las aplicaciones web tradicionales siguen este modelo, donde el navegador actúa como cliente y se comunica con servidores backend.

  • Servicios distribuidos: Sistemas donde múltiples clientes acceden a recursos compartidos gestionados por uno o varios servidores.

En estos contextos, los clientes pueden tener interfaces avanzadas pero dependen de las interacciones con el servidor para completar sus funciones.

El modelo cliente-servidor, a pesar de su antigüedad, sigue siendo fundamental para entender cómo funcionan los sistemas modernos. Su evolución ha dado lugar a arquitecturas más complejas, pero los principios básicos de llamada y respuesta continúan siendo la base de muchas soluciones tecnológicas actuales. En el próximo tema se explorará otro estilo arquitectónico común: el monolítico, que representa un enfoque diferente pero igualmente relevante en el diseño de sistemas.