Saltar al contenido

Arquitectura Cliente/Servidor: modelo de 3 capas

Compartir en:

Divide y vencerás


El modelo cliente/servidor es uno de los modelos aplicación distribuida que más éxito ha tenido en las últimas décadas. Consiste en la construcción de sistemas basados en capas donde los roles se reparten entre una máquina cliente y uno o varios servidores, actualmente las arquitecturas de microservicios están en boca de todos, pero la realidad es que «cliente/servidor» aún tiene mucho que decir.

Bajo este modelo, podemos ver variaciones en la construcción de la arquitectura de los sistemas. Este tipo de arquitecturas son conocidas como arquitectura por capas.

Organizan los roles de cada equipo dependiendo de su funcionalidad y se caracteriza por la estanqueidad de cada nivel.

Existen dos modelos bastante extendidos: El Modelo de 2 capas y El Modelo de 3 capas:

Modelo de dos capas:

Este tipo de arquitectura utiliza un cliente que ataca los servicios de un servidor donde se ejecuta todo lo necesario para poder dar servicio a los aplicativos. Es el propio servidor el que, con sus recursos internos, sirve de datos, lógica e información al cliente.

Modelo de tres capas:

A diferencia del modelo de 2 capas, el servidor al que atacan los clientes hace de intermediario entre otro equipo que almacena los datos, a esta máquina se le conoce como Midelware y suele ser la encargada de proporcionar la lógica de aplicación.

El cliente, simplemente ejecuta la capa de presentación, y el servidor de datos proporciona y registra la información procesada proveniente de la capa de aplicación. Por esta distribución de roles (Cliente/Presentación -> Midelware/Aplicación -> Servidor Datos/Datos) se le conoce como arquitectura de tres niveles.

Esta separación de roles es tremendamente flexible, pero su mayor activo es la modularidad estanca, es decir, se puede modificar cualquiera de las capas sin tener incidencia en el resto de estas. Esta peculiaridad aporta al modelo versatilidad y adaptabilidad en entornos distribuidos que evolucionan a gran velocidad.

Ejemplo de arquitectura: LAMP

Un buen ejemplo de un sistema distribuido que ha sido muy utilizado en la última década es el modelo LAMP, acrónimo utilizado que proviene de los componentes de los que consta la arquitectura:

  • Linux, el sistema operativo, código abierto, potente y con un gran respaldo tanto por parte de empresas como por su inmensa comunidad.
  • Apache, el servidor(es) web, cuya función principal es procesar solicitudes y aportar activos web mediante diferentes protocolos.
  • MySQL/MariaDB, el gestor de bases de datos.
  • Perl, PHP, o Python, los lenguajes de programación.

Esta combinación de tecnologías se ha popularizado tanto dada su versatilidad, potencia, escalabilidad y sobre todo estatus de Open Source, es decir, que se basa en licencias de código libre. Se usa principalmente para arquitecturas WEB.

La interacción de los componentes en LAMP funciona de manera escalonada de manera inversa a sus siglas:

  • LINUX es la base donde se sustenta el resto de la arquitectura, es el sistema operativo donde se instalan los componentes de la capa de datos y la capa de aplicación y es el encargado de proveer toda la infraestructura de componentes para que los demás aplicativos puedan funcionar.
  • MYSQL/MariaDB es la capa de datos, consiste en un software de gestión de bases de datos relacionales donde se gestionan todas las peticiones de información por parte de la capa de aplicación. Se instala en el sistema operativo y no tiene por qué estar en el mismo servidor (aunque en Linux suele venir pre-instalado LAMP completo en la misma máquina).
  • APACHE+(PHP,PYHTON,PERL) componen la capa de aplicación del sistema LAMP o la capa intermedia, es donde funciona la lógica de aplicación y es la encargada de interconectar la capa de presentación con la capa de datos. Esta capa es la encargada de tomar los datos proporcionados desde la capa de datos y mediante la lógica programada compone el HTML necesario para que un navegador pueda interpretarlo.
  • Los NAVEGADORES son el escalón final (capa de presentación) de la arquitectura y la parte más heterogénea de todas, ya que sus configuraciones son impredecibles y la casuística es imposible de predecir.

¿Dos o tres capas?

Como hemos descrito las aplicaciones basadas en capas de 3 niveles son bastante populares y potentes, pero no son las únicas, las aplicaciones de dos niveles están bastante extendidas sobre todo en ámbitos de aplicaciones empresariales.

La arquitectura de dos niveles es menos flexible, tiene peor rendimiento y generalmente menos seguras, ya que no se puede separar la seguridad por niveles. También es más asequible, ya que es el propio servidor quien ejecuta toda la carga de trabajo. Es más sencilla de implementar dado que no tenemos que preocuparnos por comunicar las capa además de interconectar todas las piezas, evitando problemas de latencias, comunicaciones, etc.

Un buen ejemplo de arquitectura de dos capas puede ser un pequeño juego online donde queremos jugar con unos cuantos conocidos. Para ello debemos tener un servidor donde los clientes, que previamente han tenido que instalar el juego, se registren y puedan interactuar en el mundo virtual mediante la interconexión del servidor del juego.

Otro ejemplo de este tipo de arquitecturas es un aplicativo de un cine, donde todas las ventanillas ejecutan un software especifico que ataca a un servidor con los datos, de esta manera todas las ventanillas tienen los mismos datos y pueden gestionar correctamente los asientos de los clientes del cine.

En arquitecturas de 3 capas vemos los grandes sitios web de internet, donde sería totalmente inviable implementarlos en arquitecturas de dos capas.

 Las aplicaciones móviles son otro ejemplo de aplicativos de 3 capas, estos aplicativos atacas API`s de comunicación que gestionan la lógica de aplicación y negocio, e interconectan la parte visible de la pantalla de los dispositivos con los datos de cada uno de los usuarios.

A simple vista comparando los ejemplos expuestos podemos asumir que las arquitecturas de 3 niveles son más potentes y flexibles y por lógica, más complejas. Se implementan en sistemas distribuidos que necesitan una fuerte escalabilidad además de un rendimiento superior.

Sin embargo, para aplicaciones más pequeñas y de menor calado, quizás una arquitectura de 3 niveles de más problemas que ventajas, pero tanto el implementar un nivel de datos y un aplicativo que ataque directamente a estos en el mismo servidor puede ser la solución más acertada.


Juan Ibero

Inmerso en la Evolución Tecnológica. Ingeniero Informático especializado en la gestión segura de entornos TI e industriales, con un profundo énfasis en seguridad, arquitectura y programación. Siempre aprendiendo, siempre explorando.

Compartir en:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *