Fundamentos Cliente/Servidor

¿Por qué Cliente/Servidor?

El término Cliente/Servidor se utiliza frecuentemente como sinónimo de Proceso Cooperativo o Proceso Distribuido, es decir, distribución de aplicaciones y/o datos en una red de ordenadores. En este sentido, no es nada nuevo. Los bancos, por ejemplo, comenzaron a distribuir aplicaciones a principios de los años 70; la necesidad de una constante disponibilidad de información a nivel de sucursales para atender a los clientes independientemente de la disponibilidad de la red y del ordenador central, llevó a la incorporación de aplicaciones en las que las funciones y los datos se distribuian entre el sistema central y los procesadores inteligentes instalados en las sucursales.

¿Cómo era antes? Las aplicaciones se desarrollaban de tal manera que la distribución de las funciones y datos quedaba implícita en el diseño y código del programa, y en las comunicaciones entre las aplicaciones. Esto dio como resultado unas aplicaciones distribuidas de forma cooperativa con una estructura muy rígida. Ni las funciones ni los datos podían redistribuirse sin modificaciones o rediseño sustanciales, y las aplicaciones estaban estrechamente vinculadas al sistema para el que habían sido desarrolladas. La mayoría de estas aplicaciones se desarrollaron verticalmente, es decir, programas y datos estaban asociados biunívocamente y los datos no se veían de una manera global desde aplicaciones diferentes, sino como parte integral de la aplicación. En muchas ocasiones, el solapamiento, la duplicación, y la reduncancia de información se convirtieron en defectos comunes.

¿Qué es nuevo? Los ordenadores personales y los paquetes de software de aplicaciones proliferan comercialmente. Estos ordenadores, también conocidos como estaciones de trabajo programables, están conectados a las Redes de Area Local (LAN), mediante las cuales, los grupos de usuarios y profesionales comparten aplicaciones y datos. Las nuevas tecnologías de distribución de funciones y datos en una red permiten desarrollar aplicaciones distribuidas de una manera transparente, de forma que múltiples procesadores puedan ejecutar partes distintas de una aplicación. Si las funciones de la aplicación están diseñadas adecuadamente, se pueden mover de un procesador a otro sin modificaciones, y sin necesidad de retocar los programas que las invocan. Si se elige una adecuada infraestructura de sistemas distribuidos y de herramientas de desarrollo, las aplicaciones resultantes podrán trasladarse entre plataformas de distintos proveedores.

Aunque inicialmente fueron los propios usuarios quienes impulsaron esta nueva tecnología, la situación ha cambiado drásticamente. Hoy en día, el modelo Cliente/Servidor se considera clave para abordar las necesidaes de las empresas. El proceso distribuido se reconoce actualmente como el nuevo paradigma de sistemas de información, en contraste con los sistemas independientes. Este cambio fundamental ha surgido como consecuencia de importantes factores (negocio, tecnología, proveedores), y se apoya en la existencia de una gran variedad de aplicaciones estándar y herramientas de desarrollo fáciles de usar que soportan un entorno informático distribuido.

Muchas compañías se enfrentan hoy al reto de hacer negocios en un entorno más cambiante y competitivo que nunca. Las empresas que se adapten mejor al mercado y respondan con mayor rapidez que sus competidores, se convertirán en líderes de los segmentos en que operan. El clima de competitividad fuerza a las empresas a renovar constantemente sus productos y servicios, siendo el elemento tiempo uno de los factores críticos del éxito. En este sentido, el tiempo de puesta en mercado es primordial, y muchas empresas están reestructurando sus negocios para reaccionar mejor a las necesidades de sus clientes. Las nuevas estructuras organizativas, con mayor autonomía en sus líneas de negocio y departamentos, son frecuentemente responsables de las soluciones informáticas en las que se apoyan. La globalización requiere que productos y servicios puedan adaptarse fácil y rápidamente a las peculiaridades de los distintos mercados en los que la empresa opera o piensa operar. Un buen ejemplo es la Comunidad Europea, donde las empresas amplían su radio de acción por todos los paises comunitarios.

Si la organización de los Sistemas de Información (SI) no es capaz de reaccionar ante esta nueva demanda, es probable que los departamentos y las líneas de negocio incorporen soluciones independientes fuera del control de la organización de informática. Es obvio que la proliferación de soluciones departamentales independientes desembocará en un caos. Por lo tanto, se necesita de una amplia infraestructura informática a nivel de empresa que sirva de base a los departamentos para construir sus propias soluciones.

Esta infraestructura no se debe implantar simplemente por razones de tecnología o de moda. Deberá utilizarse para desarrollar o rediseñar aplicaciones que soporten los objetivos de negocio de la empresa o los potencien. Pero la migración de aplicaciones ya existentes sin modificar su funcionalidad, puede acarrear costes sustanciales y no producir los beneficios deseados.

Las condiciones que pueden aconsejar la implantación del modelo Cliente/Servidor en una empresa son:

La situación está cambiando: de una época anterior de masiva producción industrial, estamos pasando a otra de ajustada adaptación a la demanda. La capacidad de aproximación de los productos y servicios a la medida de las necesidades del cliente exige diseñarlos, producirlos y suministrarlos con rapidez y mínimos costes.

Las razones que impulsan el crecimiento de las aplicaciones Cliente/Servidor son:

Rediseño de los procesos de negocio

El modelo Cliente/Servidor proporciona los medios para que las soluciones informáticas se adapten prontamente a las organizaciones y procesos de negocio, llevando los recursos informáticos a las personas y a los lugares donde se realiza el trabajo y no al contrario. Sin embargo, para lograr esta flexibilidad en la adaptación es necesario que los mecanismos de distribución de funciones y datos no queden unidos permanentemente en los programas a la lógica funcional, ya que en ese caso estaríamos volviendo a desarrollar aplicaciones al viejo estilo.

Enfocado correctamente, el modelo Cliente/Servidor permite ejecutar las aplicaciones en la plataforma informática más adecuada para maximizar el beneficio operativo. También significa la posibilidad de que funciones y datos se puedan reubicar, cambiando los procesos de negocio sin alterar la lógica de la aplicación. La selección de unas herramientas adecuadas conduce a un desarrollo acelerado de las aplicaciones y mediante la reutilización de servidores puede reducirse notablemente la tarea del mantenimiento.

Es obvio que el empleo del modelo Cliente/Servidor para aplicaciones de nuevo cuño, que soportan procesos de negocio rediseñados, proporciona el máximo beneficio. Sin embargo, respecto a las ya existentes, también se pueden obtener ventajas de una migración, mediante las siguientes opciones:

Estos enfoques permiten migrar paulatinamente a un nuevo entorno Cliente/Servidor, sin tener que volver a escribir las aplicaciones existentes partiendo de cero. La elección de una migración ordenada o de un rediseño de procesos siempre estará fundamentada en razones empresariales, más que en consideraciones técnicas.

Entorno actual - Nuevas tecnologías

En los años setenta y principios de los ochenta era frecuente construir el organigrama de la empresa y los procesos en función de la capacidad de los ordenadores.

Los grandes ordenadores eran caros, y el proceso transaccional estaba soportado básicamente por terminales no programables. Con la llegada de las estaciones de trabajo programables y la gran disponibilidad de software de productividad personal, las funciones que antes se situaban en el ordenador central pueden ahora realizarse donde tienen lugar los procesos de negocio que las utilizan.

Los ciclos de vida de las tecnologías se acortan y cada día aparecen otras nuevas. Los ejemplos son innumerables. Las Interfaces Gráficas de Usuario (GUI, Graphical User Interface), que aportaron cambios revolucionarios a las aplicaciones basadas en estaciones de trabajo, están cediendo su hegemonía a Interfaces de Usuario totalmente Orientadas a Objetos (OOUI, Object Oriented User Interface). Ahora, seleccionando y arrastrando objetos que representan el entorno de trabajo real, el usuario se convierte, de hecho, en parte de la aplicación. Multimedia es otra tecnología clave que pronto se convertirá en el estándar para interaccionar con un ordenador mediante voz e imágenes.

Adicionalmente, nace una acusada tendencia a utilizar soluciones de Sistemas Abiertos. La mayoría de los proveedores anuncia que sus productos son abiertos, que permiten acceder a aplicaciones y datos independientemente del Sistema Operativo y del protocolo de red, y que soportan sistemas heterogéneos de diversos proveedores.

En un entorno como el descrito anteriormente, Cliente/Servidor proporciona un marco integrador para las tecnologías emergentes, apoyándose en la experiencia y conocimientos de usuarios y profesionales informáticos y haciendo uso de nuevas aplicaciones estándar o de desarrollo propio.

En cuanto al software de aplicaciones y herramientas disponibles, existe una tendencia creciente a comprar, en vez de desarrollar aplicaciones. El software disponible y las sofisticadas herramientas de usuario final fomentan las soluciones departamentales sencillas y fáciles de instalar.

El papel de la organización de Sistemas de Información

La creciente autonomía de los departamentos de las empresas es un hecho determinante que incide en la forma de actuar de los departamentos de informática. Está disminuyendo la dependencia de los programadores, ante la evidencia de que muchas soluciones se implantan sin su intervención. El "outsorcing" erosiona todavía más la posición de privilegio tradicional de las organizaciones de proceso de datos.

La nueva generación de profesionales informáticos está abierta al uso de nuevas herramientas de desarrollo y lenguajes que se presten a la implantación de aplicaciones Cliente/Servidor, con frecuencia olvidando las metodologías de desarrollo más formales y estructuradas del pasado. Están disponibles sofisticadas herramientas que soportan el desarrollo de interfaces gráficas de usuario (GUI) y lenguajes orientados a objetos, y se ofrecen entornos de desarrollo para la implantación de las aplicaciones comerciales. El desarrollo de prototipos que se realizan en colaboración con los usuarios, se ha convertido ya en parte integral del desarrollo de aplicaciones Cliente/Servidor.

Por otra parte, los departamentos y grupos de usuarios eligen aplicaciones estándar disponibles comercialmente. Frecuentemente, las aplicaciones también imponen una plataforma de ejecución. Como los usuarios normalmente se centran en las aplicaciones, los aspectos de plataformas de sistema y aplicaciones, integración de aplicaciones y gestión de sistemas se descuidan muy frecuentemente.

Como resultado, la organización de Sistemas de Información tiene que hacer frente a tareas que anteriormente caían dentro del ámbito de los proveedores. Ahora sus responsabilidades incluyen:

Es importante que las infraestructuras resultantes, estándares, arquitecturas y principios de diseño estén soportados, no sólo por la dirección, sino también por los departamentos y los usuarios.

Con frecuencia, los profesionales de Sistemas de Información suelen ser reacios a pasar a Cliente/Servidor, porque piensan que es un área arriesgada y todavía inmadura. El peligro es que fácilmente pueden quedarse atrás respecto a empresas competidoras que están rediseñando sus procesos de negocio y adoptando el modelo Cliente/Servidor y Sistemas Abiertos. Los departamentos de Sistemas de Información que no entren en esta dinámica perderán el control. La proliferación de soluciones departamentales para salir del paso, fuera del ámbito de la estructura corporativa, puede resultar muy costosa y conducir a una situación caótica.

Costes y beneficios de Cliente/Servidor

Los costes de la implantación de soluciones Cliente/Servidor no deben contemplarse sólo en términos absolutos, sino que deben medirse en función del beneficio que reporten los nuevos desarrollos. Como el precio de los ordenadores personales ha bajado tanto en los últimos años, con frecuencia se comete el error de pensar que las soluciones Cliente/Servidor son más económicas que las basadas en ordenadores tradicionales. Estudios independientes indican que el coste del hardware y software, en un periodo de 5 años, representa solamente el 20% de los costes totales. En el caso de sistemas distribuidos, el 80% restante son costes de infraestructura y gastos de explotación.

Los beneficios percibidos de la implantación de un modelo Cliente/Servidor se encuadran, generalmente, en alguna de estas categorías:

Los beneficios obtenidos por la alta dirección seguramente estarán entre los siguientes: Los beneficios que se derivan de una aplicación Cliente/Servidor dependen, en gran medida, de las necesidades del negocio. Por ejemplo, renovar una aplicación existente añadiéndole una interfaz gráfica de usuario podría ser una solución rentable en un determinado momento, pero puede no serlo en otro.

Sin embargo, una nueva aplicación basada en un proceso de negocio rediseñado seguramente reportará mayor beneficio que migrar a una aplicación ya existente.

Como la mayoría de las empresas han realizado una importante inversión en soluciones informáticas, muy raramente se pueden construir nuevos sistemas abandonando los ya existentes. Las inversiones se contemplan generalmente en términos de hardware instalado, pero es probable que sean más importantes las inversiones realizadas en:

Todos estos son activos fundamentales que, frecuentemente, se olvidan o se desprecian. Cliente/Servidor posibilita una migración paso a paso, es decir, la generación de nuevas aplicaciones que coexistan con las ya existentes, protegiendo, de esta forma, todas las inversiones realizadas por la empresa.

Implicaciones del modelo Cliente/Servidor

El nuevo departamento de Sistemas de Información

Para llevar a cabo con éxito la implantación de un modelo Cliente/Servidor, el departamento de Sistemas de Información debe participar activamente en los proyectos. Si se quiere evitar la proliferación de distintos sistemas y plataformas de aplicación y la incompatibilidad entre los distintos desarrollos, el departamento informático debe asumir la responsabilidad corporativa en la selección de: La tendencia imparable de un mayor control de la aplicación por parte del usuario, modifica las exigencias de infraestructura relativas a: El desarrollo de aplicaciones Cliente/Servidor que ofrezcan una total flexibilidad en términos de función y de ubicación de datos requiere nuevos planteamientos y tiene implicaciones en el departamento de Sistemas de Información. Respecto a la transición de aplicaciones monolíticas a Cliente/Servidor, hay que tener en cuenta los siguientes puntos: Una de las responsabilidades de la organización de Sistemas de Información es la definición de una infraestructura Cliente/Servidor. No existen soluciones estándar Cliente/Servidor, aunque pueden existir bloques que se puedan reutilizar. Ni siquiera se puede asegurar, de forma general, que un modelo de distribución, una herramienta o una plataforma sean los mejores. La solución correcta depende, en gran medida de: El levantamiento de una infraestructura técnica que se aparte de las necesidades del negocio está condenada al fracaso. Los factores que determinan la solución Cliente/Servidor son: Pocas empresas pueden permitirse sustituir los sistemas y aplicaciones existentes en un solo paso. Normalmente es necesario un proceso gradual de implantación de las nuevas aplicaciones, lo cual exige: Una infraestructura Cliente/Servidor consta de tres componentes esenciales, todos ellos de igual importancia y estrechamente ligados: Cómo definir una infraestructura Cliente/Servidor - Si no se acomete el trabajo de definir una infraestructura Cliente/Servidor, se corre el riesgo de que surjan en la empresa una serie de soluciones Cliente/Servidor aisladas.

No es en absoluto recomendable el intento de una infraestructura completa desde el principio, ya que las tecnologías pueden no responder a tiempo a las necesidades prioritarias de negocio. El enfoque más adecuado está en un sistema y una plataforma de aplicación conceptuales, y una arquitectura construida incrementalmente y ampliada a medida que se desarrollan nuevas aplicaciones.

La Plataforma Operativa, el Middleware y el Entorno de Desarrollo de Aplicaciones están relacionados entre sí. Las necesidades de apertura pueden condicionar la elección de la plataforma o del middleware, de igual manera que lo condiciona una determinada herramienta de desarrollo. El software de aplicación puede influir en la plataforma del sistema, y el tiempo disponible para la primera aplicación puede implicar algún tipo de compromiso. Por lo tanto, es necesario fijar los objetivos, y el modo de conseguirlos en cada caso concreto: una Metodología de Infraestructura para Sistemas Distribuidos que permita definir una infraestructura para el sistema Cliente/Servidor y evalúe la puesta en marcha del proyecto sobre una base racional.

El enfoque estructurado de dicha Metodología comprende los pasos siguientes:

Metodología de IBM

Cliente/Servidor no es simplemente una cuestión de tecnología. Las organizaciones deberán adoptar el modelo Cliente/Servidor en base a justificaciones basadas en necesidades empresariales, como por ejemplo descentralizar la toma de decisiones a nivel departamental o regional, de manera que se logre un mayor acercamiento al mercado. El modelo Cliente/Servidor deberá utilizarse para desarrollar o rediseñar aplicaciones que soportan los objetivos de negocio de la empresa, y su implantación tiene que ir precedida de un meticuloso análisis de datos procesos de negocio.
 

Un desarrollo cliente servidor consta de tres niveles genéricos y capaces de representar la mayoría, sino todas, de las soluciones Cliente/Servidor de los distintos fabricantes. Estos tres niveles son:

Un aspecto muy importante a tener en cuenta en el modelo C/S es que, normalmente, los procesos se distribuyen en entornos heterogéneos de varios suministradores. Para hacer frente a la complejidad las empresas deben obtener herramientas para un entorno de sistemas distribuidos heterogéneos que proporciona la base sobre la cual desarrollar, ejecutar y gestionar aplicaciones distribuidas abiertas.

Consideraciones sobre la implantación - Existen tres formas de abordar la implantación de soluciones Cliente/Servidor:

La primera opción puede acarrear dos problemas: la contratación de servicios a proveedores externos a la empresa, y la implantación incontrolada de soluciones por parte de los usuarios. Aunque puede ser una solución razonable a corto plazo, provocará, a medio y largo plazo, caos e incompatibilidades entre sistemas y soluciones distintas, debido a la falta de una infraestructura corporativa Cliente/Servidor.

El peligro inherente en la opción 2 es que las plataformas, el middleware y las herramientas pueden cubrir las necesidades de la primera aplicación abordada, pero pueden no ser adecuadas para las siguientes y, por tanto, resultar una mala inversión.

La opción 3 exige cierto trabajo inicial de diseño y arquitectura, pero garantizará una sólida infraestructura, a corto y medio plazo, ya que tiene en cuenta las necesidades generales, aunque sólo se desarrollan los componentes a medida que se necesitan. Esta opción es, obviamente, la más adecuada, ya que combina las ventajas de las opciones 1 y 2. 



 
  1