Modelo Cliente Servidor

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

Modelo cliente servidor

En el artículo de hoy hablaremos sobre el modelo cliente servidor para poder


entender mejor su funcionamiento y arquitectura así como también sus ventajas y
desventajas del uso del mismo.

Este modelo es uno de los principales usados en muchísimos servicios y


protocolos de Internet, por lo que para todos aquellos que quieren aprender más
sobre la web y cómo funciona, entender el concepto de modelo cliente
servidor se vuelve algo indispensable.

En el artículo de hoy hablaremos sobre el modelo cliente servidor para poder


entender mejor su funcionamiento y arquitectura así como también sus ventajas y
desventajas del uso del mismo.

Este modelo es uno de los principales usados en muchísimos servicios y


protocolos de Internet, por lo que para todos aquellos que quieren aprender más
sobre la web y cómo funciona, entender el concepto de modelo cliente
servidor se vuelve algo indispensable.

El más claro ejemplo de uso de una arquitectura cliente servidor es la red de


Internet donde existen ordenadores de diferentes personas conectadas alrededor
del mundo, las cuales se conectan a través de los servidores de su proveedor de
Internet por ISP donde son redirigidos a los servidores de las páginas que desean
visualizar y de esta manera la información de los servicios requeridos viajan a
través de Internet dando respuesta a la solicitud demandada.

La principal importancia de este modelo es que permite conectar a varios clientes


a los servicios que provee un servidor y como sabemos hoy en día, la mayoría de
las aplicaciones y servicios tienen como gran necesidad que puedan ser
consumidos por varios usuarios de forma simultanea.
Componentes

Para entender este modelo vamos a nombrar y definir a continuación algunos


conceptos básicos que lo conforman.
• Red: Una red es un conjunto de clientes, servidores y base de datos unidos de una manera física
o no física en el que existen protocolos de transmisión de información establecidos.
• Cliente: El concepto de cliente hace referencia a un demandante de servicios, este cliente puede
ser un ordenador como también una aplicación de informática, la cual requiere información
proveniente de la red para funcionar.
• Servidor: Un servidor hace referencia a un proveedor de servicios, este servidor a su vez puede
ser un ordenador o una aplicación informática la cual envía información a los demás agentes de
la red.
• Protocolo: Un protocolo es un conjunto de normas o reglas y pasos establecidos de manera
clara y concreta sobre el flujo de información en una red estructurada.
• Servicios: Un servicio es un conjunto de información que busca responder las necesidades de
un cliente, donde esta información pueden ser mail, música, mensajes simples entre software,
videos, etc.
• Base de datos: Son bancos de información ordenada, categorizada y clasificada que forman
parte de la red, que son sitios de almacenaje para la utilización de los servidores y también
directamente de los clientes.

Diferencia entre cliente y servidor

Como hemos mencionado anteriormente una máquina cliente como servidor se


refieren a computadoras que son usadas para diferentes propósitos.

El cliente es un computador pequeño con una estructura al igual a la que


tenemos en nuestras oficinas u hogares la cual accede a un servidor o a los
servicios del mismo a través de Internet o una red interna. Un claro ejemplo a este
caso es la forma en que trabaja una empresa modelo con diferentes
computadores donde cada uno de ellos se conectan a un servidor para poder
obtener archivos de una base de datos o servicios ya sea correos electrónicos o
aplicaciones.

El servidor al igual que el cliente, es una computadora pero con diferencia de que
tiene una gran capacidad que le permite almacenar gran cantidad de diversos de
archivos, o correr varias aplicaciones en simultaneo para así nosotros los clientes
poder acceder los servicios.

En la actualidad existen varios tipos de servidores como hablamos


anteriormente. Los mismos pueden contener y ejecutar aplicaciones, sitios web,
almacenaje de archivos, diversas bases de datos, entre muchos más.
Es importante mencionar que un cliente también puede tener una función de
servidor ya que el mismo puede almacenar datos en su disco duro para luego ser
usados en vez de estar conectándose al servidor continuamente por una acción
que quizás sea muy sencilla.
Tipos de arquitecturas cliente servidor

Dentro de la arquitectura cliente servidor existen tres tipos en donde hablaremos


brevemente de como funciona cada uno de ellos.

Arquitectura de dos capas

Esta se utiliza para describir los sistemas cliente servidor en donde el cliente
solicita recursos y el servidor responde directamente a la solicitud con sus propios
recursos. Eso significa que el servidor no requiere de una aplicación extra para
proporcionar parte del servicio.

Arquitectura de tres capas

En la arquitectura de tres capas existe un nivel intermediario, eso significa que la


arquitectura generalmente está compartida por un cliente que como hablamos más
arriba es el que solicita los recursos equipado con una interfaz de usuario o
mediante un navegador web.

La capa del medio es denominada software intermedio cuya tarea es proporcionar


los recursos solicitados pero que requiere de otro servidor para hacerlo. La última
capa es el servidor de datos que proporciona al servidor de aplicaciones los datos
necesarios para poder procesar y generar el servicio que solicito el cliente en un
principio.

Arquitectura N capas

En la arquitectura de tres capas, los servidores dos y tres realizaron una tarea
específica por lo tanto un servidor web puede usar los servicios de otros
servidores para poder proporcionar su propio servicio.

Por consiguiente la arquitectura en tres niveles es potencialmente una arquitectura


en N capas ya que así como está contemplado en tres niveles como el caso
anterior puede estar compuesto por N servidores donde cada uno de ellos brindan
su servicio específico.
Ventajas y Desventajas

Este modelo cliente servidor tiene varias ventajas y desventajas las cuales son
importantes mencionar y conocer a la hora de establecer si es lo que estamos
necesitando o si se acomoda a lo que estamos buscando.

Ventajas
• Facilita la integración entre diferentes sistemas y comparte información permitiendo por ejemplo
que las máquinas ya existentes puedan ser utilizadas mediante una interfaz más amigable para
el usuario. De esta manera podemos integrar varias PCs con sistemas medianos y grandes sin
necesidad de que todos tengan que utilizar el mismo sistema operativo.
• Al favorecer el uso de las interfaz de gráficas interactivas, los sistemas construidos bajo este
esquema tienen una mayor interacción con el usuario.
• La estructura modular facilita de más la integración de nuevas tecnologías y el crecimiento de la
infraestructura computacional favoreciendo así la estabilidad de las soluciones.
• El modelo cliente servidor permite además proporcionar a las diferentes áreas de una empresa
generar un orden de trabajo en donde cada sector puede trabajar en su área pero accediendo al
mismo servidor e información que los demás sin generar conflictos. Esto es de gran utilidad ya
que si ponemos como ejemplo una empresa con varios empleados al momento de trabajar es
importante que todos puedan hacerlo en simultáneo.

Desventajas
• Requiere habilidad para que un servidor sea reparado. Por ejemplo si un problema ocurre en la
red, se requiere de alguien con un amplio de esta para poder repararla en su totalidad para así
dejar que la información y el correcto funcionamiento siga su flujo.
• Otro problema es la seguridad, el hecho que se comparte canales de información entre
servidores y clientes requieren que estas pasen por procesos de validación, es decir protocolos
de seguridad que pueden tener algún tipo de puerta abierta permitiendo que se generen daños
físicos, amenazas o ataques de malware.
• Este modelo representa una limitación importante en cuanto a los costos económicos debido a
que estos servidores son computadoras de alto nivel con un hardware y software específicos
para poder dar un correcto funcionamiento a nuestras aplicaciones. Algo importante a destacar
es que no solo es caro a la hora de solucionar problemas como mencionamos antes, sino que
también tiene un costo elevado para reemplazar componentes que estén averiados.

Ejemplos de modelo cliente servidor

Existen muchísimos servicios, protocolos y servidores que trabajan con el mismo


modelo que mencionamos antes. Casi todo el Internet funciona de esa forma de
hecho.

Algunos ejemplos de la arquitectura cliente servidor pueden ser:


• Navegar una web funciona basándonos en un cliente web (navegador) y un servidor
web como Apache, Nginx o LiteSpeed
• Protocolo FTP, funciona de idéntica forma, se utiliza un cliente de FTP (como Filezilla) para
conectar a un servidor FTP (como Pure-FTPD, Proftpd, etc)
• SSH: es idéntico también, se utiliza un cliente SSH para conectar al servidor SSH que corre en
una red remota.
• Juegos en red: existen clientes que permiten a jugadores online jugar desde sus casas
conectándose a servidores de juegos remotos.
• Sistema DNS: el famoso servidor DNS interactúa con clientes DNS también, es decir, basa su
arquitectura en el modelo cliente servidor
• Servidor de Correo: donde clientes de correo consultan el correo al servidor de correo remoto,
tanto desde móvil o una computadora de escritorio o laptop.

Conclusión

Podemos concluir que el sistema cliente servidor es un modelo flexible y adaptable


al servicio que se quiere implementar. Este nos permite aumentar el rendimiento
así como también, envolver variadas plataformas, bases de datos, redes y
sistemas operativos que pueden ser de diferentes distribuidores con arquitecturas
totalmente diferentes y funcionando todos al mismo tiempo.

Además se puede considerar un sistema ventajoso en cuanto a seguridad, ya que


el servidor controla el acceso a sus datos por lo que se necesita que el servidor
nos autorice para poder acceder a él.

También es escalable y ante una gran demanda de tráfico se pueden utilizar


tecnologías complementarias, por lo que cualquier organización que utilice estos
sistemas adquiere ventajas competitivas.

Arquitectura Cliente-Servidor
Estilo arquitectónico

Cliente-Servidor es uno de los estilos arquitectónicos distribuidos más


conocidos, el cual está compuesto por dos componentes, el proveedor y el
consumidor. El proveedor es un servidor que brinda una serie de servicios o
recursos los cuales son consumido por el Cliente.
En una arquitectura Cliente-Servidor existe un servidor y múltiples clientes que
se conectan al servidor para recuperar todos los recursos necesarios para
funcionar, en este sentido, el cliente solo es una capa para representar los datos
y se detonan acciones para modificar el estado del servidor, mientras que el
servidor es el que hace todo el trabajo pesado.

En esta arquitectura, el servidor deberá exponer un mecanismo que permite a


los clientes conectarse, que por lo general es TCP/IP, esta comunicación
permitirá una comunicación continua y bidireccional, de tal forma que el cliente
puede enviar y recibir datos del servidor y viceversa.

Creo que es bastante obvio decir que en esta arquitectura el cliente no sirve para
absolutamente nada si el servidor no está disponible, mientras que el servidor
por sí solo no tendría motivo de ser, pues no habría nadie que lo utilice. En este
sentido, las dos partes son mutuamente dependientes, pues una sin la otra no
tendría motivo de ser.

Cliente-Servidor es considerada una arquitectura distribuida debido a que el


servidor y el cliente se encuentran distribuidos en diferentes equipos (aunque
podrían estar en la misma máquina) y se comunican únicamente por medio de
la RED o Internet.

En esta arquitectura, el Cliente y el Servidor son desarrollados como dos


aplicaciones diferentes, de tal forma que cada una puede ser desarrollada de
forma independiente, dando como resultado dos aplicaciones separadas, las
cuales pueden ser construidas en tecnologías diferentes, pero siempre
respetando el mismo protocolo de comunicación para establecer comunicación.

La idea central de separar al cliente del servidor radica en la idea de centralizar


la información y la separación de responsabilidades, por una parte, el servidor
será la única entidad que tendrá acceso a los datos y los servirá solo a los
clientes del cual el confía, y de esta forma, protegemos la información y la lógica
detrás del procesamiento de los datos, además, el servidor puede atender
simultáneamente a varios clientes, por lo que suele ser instalado en un equipo
con muchos recursos. Por otro lado, el cliente suele ser instalado en
computadoras con bajos recursos, pues desde allí no se procesa nada,
simplemente actúa como un visor de los datos y delega las operaciones pesadas
al servidor.

Quizás uno de los puntos más característicos de la arquitectura Cliente-Servidor


es la centralización de los datos, pues el server recibe, procesa y almacena
todos los datos provenientes de todos los clientes. Si bien los clientes por lo
general solo se conectan a un solo servidor, existen variantes donde hay clientes
que se conectan a múltiples servidores para funcionar, tal es el caso de los
navegadores, los cuales, para consultar cada página establece una conexión a
un servidor diferentes, pero al final es Cliente-Servidor:

Como podemos ver en la imagen, el navegador actúa como un cliente, pero en


lugar de conectarse a un solo servidor, puede conectarse a múltiples servidores.
Por otro lado, el navegador no sirve para absolutamente nada sin no podemos
acceder a un servidor.

Como se estructura un Cliente-Servidor

Como ya lo mencionamos, el cliente y el servidor son aplicaciones diferentes,


por lo que pueden tener un ciclo de desarrollo diferente, así como usar
tecnologías y un equipo diferente entre sí. Sin embargo, en la mayoría de los
casos, el equipo que desarrolla el servidor también desarrolla el cliente, por lo
que es normal ver que el cliente y el servidor están construidos con las mismas
tecnologías.

Como podemos ver en la imagen de abajo, el cliente y el servidor son


construidos en lo general como Monolíticos, donde cada desarrollo crea su
propio ejecutable único y funciona sobre un solo equipo, con la diferencia de que
estas aplicaciones no son autosuficientes, ya que existe una dependencia
simbiótica entre los dos.
En este sentido, es normal tener 3 artefactos, el Cliente, el Servidor y una tercera
librería que contiene Objetos comunes entre el servidor y el cliente, esta librería
tiene por lo general los Objetos de Entidad, DTO, interfaces y clases base que
se usan para compartir la información, es decir, objetos que se utilizan en las
dos aplicaciones y se separan para no repetir código (Principio DRY – Don’t
repeat yourself), sin embargo, este tercer componente no es obligatorio que
exista, sobre todo si el cliente y el servidor utilizan tecnologías diferentes o son
implementados con diferentes proveedores.

Sin importar como desarrollemos el cliente y el servidor, lo importante es notar


que siempre existirán un cliente y un servidor, donde el cliente expone la
funcionalidad y el cliente la consume.

Ventajas

• Centralización: El servidor fungirá como única fuente de la verdad, lo que impide


que los clientes conserven información desactualizada.

• Seguridad: El servidor por lo general está protegido por firewall o subredes que
impiden que los atacantes pueden acceder a la base de datos o los recursos sin
pasar por el servidor.

• Fácil de instalar (cliente): El cliente es por lo general una aplicación simple que no
tiene dependencias, por lo que es muy fácil de instalar.

• Separación de responsabilidades: La arquitectura cliente-servidor permite


implementar la lógica de negocio de forma separada del cliente.

• Portabilidad: Una de las ventajas de tener dos aplicaciones es que podemos


desarrollar cada parte para correr en diferentes plataformas, por ejemplo, el servidor
solo en Linux, mientras que el cliente podría ser multiplataforma.

Desventajas

• Actualizaciones (clientes): Una de las complicaciones es gestionar las


actualizaciones en los clientes, pues puede haber muchos terminales con el cliente
instalado y tenemos que asegurar que todas sean actualizadas cuando salga una
nueva versión.

• Concurrencia: Una cantidad no esperada de usuarios concurrentes puede ser un


problema para el servidor, quien tendrá que atender todas las peticiones de forma
simultánea, aunque se puede mitigar con una estrategia de escalamiento, siempre
será un problema que tendremos que tener presente.

• Todo o nada: Si el servidor se cae, todos los clientes quedarán totalmente


inoperables.

• Protocolos de bajo nivel: Los protocolos más utilizados para establecer


comunicación entre el cliente y el servidor suelen ser de bajo nivel, como Sockets,
HTTP, RPC, etc. Lo que puede implicar un reto para los desarrolladores.

• Depuración: Es difícil analizar un error, pues los clientes están distribuidos en


diferentes máquinas, incluso, equipos a los cuales no tenemos acceso, lo que hace
complicado recopilar la traza del error.

Conclusiones

A pesar de que el estilo Cliente-Servidor no es muy popular entre los nuevos


desarrolladores, la realidad es que sigue siendo parte fundamental un muchas
de las arquitecturas de hoy en día, solo basta decir que todo el internet está
basado en Cliente-Servidor, sin embargo, no es común que como
programadores o arquitectos nos encontremos ante problemáticas que
requieran implementar un Cliente-Servidor, ya que estas arquitecturas están
más enfocadas a aplicaciones CORE o de alto rendimiento, que por lo general
es encapsulado por un Framework o API.

A pesar de que puede que no te toque implementar una arquitectura Cliente-


Servidor pronto, sí que es importante entender cómo funciona, pues muchas de
las herramientas que utilizamos hoy en día implementan este estilo
arquitectónico y ni nos damos cuenta, como podrían ser la base de datos,
internet, sistemas de mensajería (JMS, MQ, etc), correo electrónico, programas
de chat tipo Skype, etc.
La realidad es que Cliente-Servidor es la base sobre la que está construida gran
parte de la infraestructura tecnológica que hoy tenemos, pero apenas somos
capaces de darnos cuenta.

También podría gustarte