La Discusión más representativa sobre el esquema Cliente/Servidor es la de las Ventajas y Desventajas.
VENTAJAS
* Toda la información es almacenada en el lado del servidor, que suele tener mayor seguridad que los clientes.
*Centralización del control: los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda dañar el sistema. Esta centralización también facilita la tarea de poner al día datos u otros recursos (mejor que en las redes P2P).
*Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, se pueden añadir nuevos nodos a la red (clientes y/o servidores).
*Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia de los cambios también se conoce como encapsulación.
*Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad del interfaz, y la facilidad de empleo.
*Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, se pueden añadir nuevos nodos a la red (clientes y/o servidores).
*Fácil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia de los cambios también se conoce como encapsulación.
*Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad del interfaz, y la facilidad de empleo.
*Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez más baratas. Esta constituye a su vez una de las más palpables ventajas de este esquema, la posibilidad de utilizar máquinas considerablemente más baratas que las requeridas por una solución centralizada, basada en sistemas grandes. Además, 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, por ejemplo que las máquinas ya existentes puedan ser utilizadas pero utilizando interfaces mas amigables al usuario. De esta manera, podemos 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 más intuitiva con el usuario. 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.
*Una ventaja adicional del uso del esquema Cliente/Servidor es que es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes (por ejemplo los servidores de SQL o las herramientas de más bajo nivel como los sockets o el RPC ).
*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.
*Contribuye además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global.DESVENTAJAS
* Frente a fallas del lado del servidor, el servicio queda paralizado para los clientes. Algo que no sucede en una red P2P.
*La congestión del tráfico ha sido siempre un problema en el paradigma de C/S. Cuando una gran cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para éste (a mayor número de clientes, más problemas para el servidor). Al contrario, en las redes P2P como cada nodo en la red hace también de servidor, cuanto más nodos hay, mejor es el ancho de banda que se tiene.
*El paradigma de C/S clásico no tiene la robustez de una red P2P. Cuando un servidor está caído, las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de redes P2P, los recursos están generalmente distribuidos en varios nodos de la red. Aunque algunos salgan o abandonen la descarga; otros pueden todavía acabar de descargar consiguiendo datos del resto de los nodos en la red.
*El software y el hardware de un servidor son generalmente muy determinantes. Un hardware regular de un ordenador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware específico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará el coste.
*El cliente no dispone de los recursos que puedan existir en el servidor. Por ejemplo, si la aplicación es una Web, no podemos escribir en el disco duro del cliente o imprimir directamente sobre las impresoras sin sacar antes la ventana previa de impresión de los navegadores.
*Además de lo anterior, se cuenta con muy escasas herramientas para la administración y ajuste del desempeño de los sistemas.
*En el desarrollo de aplicaciones Cliente/Servidor se deben tener en cuenta diferentes aspectos, que se mencionan a continuación.
*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 pare el manejo de errores y para mantener la consistencia de los datos. La seguridad de un esquema Cliente/Servidor es otra preocupación importante. Por ejemplo, se deben hacer verificaciones en el cliente y en el servidor. También se puede recurrir a otras técnicas como el encriptamiento.
*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.
*Un aspecto directamente relacionado con lo anterior es el de cómo distribuir los datos en la red. En el caso de una organización, por ejemplo, éste puede ser hecho por departamentos, geográficamente, o de otras maneras. Hay que tener en cuenta que en algunos casos, por razones de confiabilidad o eficiencia, se pueden tener datos replicados, y que puede haber actualizaciones simultáneas.
Ejemplo
Visitar un sitio web es un buen ejemplo de la arquitectura cliente/servidor. El servidor web sirve las páginas web al navegador (el cliente). La mayoría de los servicios de Internet son tipo de servidores. Por ejemplo, si estás leyendo este artículo en Wikipedia, la computadora y el navegador web serían considerados un cliente, y las computadoras, las bases de datos, y los usos que componen Wikipedia serían considerados el servidor. Cuando tu navegador web solicita un artículo particular de Wikipedia, el servidor de Wikipedia encuentra toda la información requerida para exhibir el artículo en la base de datos de Wikipedia, la monta en una página web considerada como interfaz gráfica, y la envía de nuevo a tu navegador web.
Otro ejemplo seria un juego online, el numero de servidores depende del juego pero supongamos que tienen 2, cuando tu lo descargas y lo instalas tienes un cliente, si tienes solo un computador en casa y juegan 3 personas, existen un cliente, 3 usuarios y 2 servidores pero depende de ti a cual te conectas, si cada uno instala el juego en sus propios ordenadores, serian 3 clientes, 3 usuarios y 2 servidores.
Con la contratación de un servidor dedicado cualquier problema que surja en el hardware o la conectividad del mismo, es responsabilidad de la compañía con la cual tenemos contratado este servicio. Normalmente estas empresas suelen disponer de centros de datos y personal técnico preparado para manejar este tipo de servidores.
La mayor desventaja de la contratación de un servidor dedicado, es que el cliente solo es dueño de los datos que se encuentran en el servidor, no del servidor en sí, por lo que si en algún momento no estamos satisfechos con el rendimiento que nos proporciona el servidor la única alternativa es contratar un nuevo servidor dedicado con mejores características. Este servicio también tiene como desventaja el mayor coste en comparación a otros tipos de alojamiento.
Cuando se contrata un servidor dedicado, podemos decidir las especificaciones del hardware y controlar cada parte del sistema, a la vez tenemos como ventajas la robustez y el rendimiento que ofrece al poder usar en exclusiva todos los recursos del mismo.
Nuestro servidor dedicado será tan seguro como deseemos, de ello nos encargamos al asumir este hosting, también del rendimiento de las aplicaciones que en el instalamos.
Si nos decidiésemos por contratar un servidor dedicado debemos estar seguros que seremos capaces de hacerlo funcionar y explotar todas sus posibilidades.