En el mundo de TCP/IP las comunicaciones entre computadoras se
rigen básicamente por lo que se llama modelo Cliente-Servidor, éste es un
modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y
escalabilidad en las comunicaciones. El término Cliente/Servidor fue usado por
primera vez en 1980 para referirse a PC’s en red.
Este
modelo Cliente/Servidor empezó a ser aceptado a finales de los 80’s. Su
funcionamiento es sencillo: se tiene una máquina cliente, que requiere un
servicio de una máquina servidor, y éste realiza la función para la que está
programado.
El Modelo Cliente-Servidor
Desde
el punto de vista funcional, se puede definir la computación Cliente/Servidor
como una arquitectura distribuida que permite a los usuarios finales obtener
acceso a la información en forma transparente aún en entornos multiplataforma.
En el
modelo cliente servidor, el cliente envía un mensaje solicitando un determinado
servicio a un servidor (hace una petición), y este envía uno o varios mensajes
con la respuesta (provee el servicio). En un sistema distribuido cada máquina
puede cumplir el rol de servidor para algunas tareas y el rol de cliente para
otras.
La
idea es tratar a una computadora como un instrumento, que por sí sola pueda
realizar muchas tareas, pero con la consideración de que realice aquellas que
son más adecuadas a sus características. Si esto se aplica tanto a clientes
como servidores se entiende que la forma más estándar de aplicación y uso de
sistemas Cliente/Servidor es mediante la explotación de las PC’s a través de
interfaces gráficas de usuario; mientras que la administración de datos y su
seguridad e integridad se deja a cargo de computadoras centrales tipo
mainframe. Usualmente la mayoría del trabajo pesado se hace en el proceso
llamado servidor y el o los procesos cliente sólo se ocupan de la interacción
con el usuario (aunque esto puede variar).
En
otras palabras la arquitectura Cliente/Servidor es una extensión de
programación modular en la que la base fundamental es separar una gran pieza de
software en módulos con el fin de hacer más fácil el desarrollo y mejorar su
mantenimiento.
Esta
arquitectura permite distribuir físicamente los procesos y los datos en forma
más eficiente lo que en computación distribuida afecta directamente el tráfico
de la red, reduciéndolo grandemente.
Características de la
arquitectura Cliente/Servidor
- Combinación de un cliente que interactúa con el usuario, y un servidor que interactúa con los recursos compartidos. El proceso del cliente proporciona la interfaz entre el usuario y el resto del sistema. El proceso del servidor actúa como un motor de software que maneja recursos compartidos.
- Las tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos de cómputo como velocidad del procesador, memoria, velocidad y capacidades del disco y dispositivos de E/S.
- Se establece una relación entre procesos distintos, los cuales pueden ser ejecutados en la misma máquina o en máquinas diferentes distribuidas a lo largo de la red.
- Existe una clara distinción de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores.
- La relación establecida puede ser de muchos a uno, en la que un servidor puede dar servicio a muchos clientes, regulando su acceso a recursos compartidos.
- Los clientes corresponden a procesos activos en cuanto a que son éstos los que hacen peticiones de servicios a los servidores. Estos últimos tienen un carácter pasivo ya que esperan las peticiones de los clientes.
- No existe otra relación entre clientes y servidores que no sea la que se establece a través del intercambio de mensajes entre ambos. El mensaje es el mecanismo para la petición y entrega de solicitudes de servicio.
- El ambiente es heterogéneo. La plataforma de hardware y el sistema operativo del cliente y del servidor no son siempre la misma. Precisamente una de las principales ventajas de esta arquitectura es la posibilidad de conectar clientes y servidores independientemente de sus plataformas.
- El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente/Servidor. La escalabilidad horizontal permite agregar más estaciones de trabajo activas sin afectar significativamente el rendimiento. La escalabilidad vertical permite mejorar las características del servidor o agregar múltiples servidores.
Ventajas del esquema
Cliente/Servidor
- Existencia de plataformas de hardware cada vez más baratas. Se pueden utilizar componentes, tanto de hardware como de software, de varios fabricantes, lo cual contribuye considerablemente a la reducción de costos y favorece la flexibilidad en la implantación y actualización de soluciones.
- Facilita la integración entre sistemas diferentes y comparte información permitiendo integrar PCs con sistemas medianos y grandes, sin necesidad de que todos tengan que utilizar el mismo sistema operacional.
- Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este esquema tienen mayor interacción y más intuitiva con el usuario. En el uso de interfaces gráficas para el usuario, el esquema Cliente/Servidor presenta la ventaja, con respecto a uno centralizado, de que no es siempre necesario transmitir información gráfica por la red pues esta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.
- Es más rápido el mantenimiento y el desarrollo de aplicaciones.
- La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.
Desventajas del esquema
Cliente/Servidor
Bibliografía:
- Martínez Gomáriz , E. (28 de Mayo de 2016). Departament d'Enginyeria de Serveis i Sistemes d'Informació. Obtenido de http://www.essi.upc.edu/~gomariz/index_archivos/IntroduccionSD-EnricMartinez.pdf
- El mantenimiento de los sistemas es más difícil pues implica la interacción de diferentes partes de hardware y de software, distribuidas por distintos proveedores, lo cual dificulta el diagnóstico de fallas.
- Se cuenta con muy escasas herramientas para la administración y ajuste del desempeño de los sistemas.
- Es importante que los clientes y los servidores utilicen el mismo mecanismo (por ejemplo sockets o RPC), lo cual implica que se deben tener mecanismos generales que existan en diferentes plataformas.
- Además, hay que tener estrategias para el manejo de errores y para mantener la consistencia de los datos.
- La seguridad de un esquema Cliente/Servidor es otra preocupación importante.
- El desempeño es otro de los aspectos que se deben tener en cuenta en el esquema Cliente/Servidor. Problemas de este estilo pueden presentarse por congestión en la red, dificultad de tráfico de datos, etc.
- Martínez Gomáriz , E. (28 de Mayo de 2016). Departament d'Enginyeria de Serveis i Sistemes d'Informació. Obtenido de http://www.essi.upc.edu/~gomariz/index_archivos/IntroduccionSD-EnricMartinez.pdf
- Santa Catarina Mártir. (28 de Mayo de
2016). Universidad de Santa Catarina Mártir. Obtenido de
http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/marquez_a_bm/capitulo5.pdf
No hay comentarios:
Publicar un comentario