Aplicaciones Web
No quería acabar el año sin tratar esta arquitectura porque es la que está más de moda y si no la tratas bien te tachan rápidamente de retrógrado, obsoleto y dinosaurio prehistórico. Como no quiero ser nada de eso, aquí va la entrada correspondiente. (Como el resto de mis entradas numeradas, no leas ésta sin leer antes la anterior).
Mientras que la arquitectura cliente servidor está bastante clara (por ejemplo, hay una entrada muy interesante en la wikipedia), es mucho más difícil definir en pocas palabras qué es una arquitectura Web porque se mezclan muchas tecnologías diferentes y conceptos distintos, a veces fruto de operaciones de marketing más que de una clasificación ordenada y sistemática. Quizás lo más sencillo es entender sus ventajas como una evolución de los sistemas basados en la arquitectura cliente-servidor.
El principal problema de una instalación basada en clientes «pesados» es la instalación y el mantenimiento de todos los equipos. El problema puede ser una pesadilla si los usuarios son cientos, están distribuidos por medio mundo y la aplicación instalada en cada uno de ellos se renueva con frecuencia. La solución al problema parece evidente: instalar lo que haga falta en el servidor, todo lo necesario, pero que los clientes no necesiten instalar software adicional para ejecutar la aplicación común. En realidad sí hay que instalar algo de software en los clientes: un navegador Web. Pero este es un software tan estándar y sencillo de instalar (ya sea el Internet Explorer, Firefox, Chrome o el que sea) que se da por supuesto que todos los usuarios lo tendrán.
Así pués, en esta «arquitectura», los clientes son muy ligeros, no en cuanto al hardware (no son los «terminales tontos» que comenté hace unos días), pero sí en cuanto al software instalado. Y en el servidor lo que tenemos son unos programas con los que estos «clientes Web» (con su navegador para Internet, el mismo) pueden relacionarse para llevar la contabilidad, el control de sus clientes, escribir un Blog o lo que sea. Estos programas son «servicios Web» que corren, se ejecutan, en un «servidor Web».
Cuando hay una nueva versión del programa, solo hay que actualizar el servidor. Los usuarios, ya sean 5 ó 500, no tienen que actualizar sus equipos porque el navegador sigue siendo válido para la nueva versión. Y me sirve igual desde la oficina, desde casa o desde el hotel del Caribe. Teniendo una conexión de Internet y con los datos en el servidor puedo conectarme y trabajar desde cualquier parte, lo que constituye una de las grandes ventajas de esta arquitectura, la movilidad.
Supongo que a nadie extrañará que esta arquitectura haya tenido un éxito enorme y sea hoy día el modelo a seguir, para los que no lo han hecho ya. Tiene, sin embargo, algunos defectos. Pero no voy a hablar ahora de ellos. Lo haré más adelante y comparándola con su alternativa, el modelo cliente-servidor que, a pesar del empuje de los servicios Web, sigue teniendo su hueco en determinadas situaciones.
Hay mucho más que contar sobre clientes Web, servicios Web, servidores Web… pero para eso está la Wikipedia. Sí me gustaría comentar algunos otros conceptos relacionados con este tema.
Espero que algún lector haya imaginado ya que el famoso «cloud computing» es una evolución de esta arquitectura (los que ya lo sabían de antemano no deberían leer este blog, que no me canso de decir que no es para profesionales, que para eso le puse el título que lleva). Yo, empresa de informática que vendo mis programas, una vez que me ahorro visitar al cliente para instalarle mi software, ¿por qué no doy un paso más y me evito ir a verle para instalarle el servidor? Las ventajas son muy importantes y el ahorro de costes, para ambas partes, también. Ya tenemos una instalación en «la nube» (en este caso, la nube es la empresa proveedora, pero ésta puede, a su vez, subcontratar el servidor con su proveedor de Internet que, a su vez, lo tiene físicamente en un pueblecito de México donde el alquiler es muy barato).
Otro concepto relacionado, aunque no tendría por qué, es el de «Software como Servicio» o SaaS en sus siglas en inglés. Yo llevo alquilando mis programas de gestión con arquitectura cliente-servidor desde hace 15 años, pero mucha gente relaciona de forma directa el modelo SaaS con servicios Web, mezclando un modelo de negocio y una decisión «financiera» con una decisión técnica. Probablemente el origen de esta asimilación-confusión es porque una instalación en formato cliente Web sobre servidores de la empresa proveedora se presta fácilmente a ofrecerse en alquiler. A fin de cuentas, no le entregas nada tangible al cliente por lo que será más difícil convercerle de que te pague una cantidad importante que cuando le dejabas varios servidores grandes como neveras y unos técnicos se pasaban varias semanas instalando software por todas partes. Creo que todos habremos leido alguna vez (más bien docenas de veces) el famoso «On demand» de los anuncios de IBM de hace unos años.
Hay mucho más que contar, pero creo que lo más interesante será la comparativa ya anunciada con el modelo cliente-servidor y, sobre todo, el punto de vista del usuario final de toda esta palabrería técnica que a él poco interesa (este tema sí que me gusta). Lo veremos el año que viene.
[…] o deberíamos, después de haber leído las dos entradas anteriores sobre cliente-servidor y aplicaciones Web (no dejes de hacerlo antes de leer ésta): Si las aplicaciones Web tienen tantas ventajas, ¿por […]
«Tiene, sin embargo, algunos defectos. Pero no voy a hablar ahora de ellos. Lo haré más adelante y comparándola con su alternativa, el modelo cliente-servidor que, a pesar del empuje de los servicios Web, sigue teniendo su hueco en determinadas situaciones.»
Aja y que paso con esta parte, no la desarrollastes y hubiese sido interesante saber los defectos de la arquitectura WEB.
Creo que es un tema muy conocido. El problema principal, el retraso al moverte entre los campos por la necesidad de estar consultado a un servidor remoto. En algunas aplicaciones esto no es un problema pero cuando manejas una base de datos de miles de documentos que pueden ser grandes, se convierte en un gran obstáculo.