Servidores de aplicaciones y servidores web

Debemos diferencia entre un Servidor de aplicaciones y un servidor Web:

Un servidor web:

  • Está pensado para recibir peticiones (normalmente HTTP) y devolver el contenido estático que obtendrá de un fichero
  • Puede disponer de plugins para utilizar Perl, PHP, ASP, o JSP para que generen el contenido HTML o delegando el trabajo en algún subsistema
  • Un servidor web no aporta ninguna funcionalidad aparte de la propia comunicación cliente-servidor

Un servidor de aplicaciones

  • Expone la lógica empresarial  a las aplicaciones cliente a través de varios protocolos, incluyendo HTTP. Mientras que un servidor web trata principalmente con el envío de HTML para su visualización en un navegador web, un servidor de aplicaciones proporciona acceso a la lógica de negocios para que lo utilicen los programas de aplicaciones cliente. El programa de aplicación puede usar esta lógica tal como llamaría a un método en un objeto.
  • En la mayoría de los casos, el servidor expone esta lógica comercial a través de una API de componente, como el modelo de componente EJB (Enterprise JavaBean) que se encuentra en los servidores de aplicaciones J2EE (plataforma Java 2, Enterprise Edition). Además, el servidor de aplicaciones administra sus propios recursos. Como seguridad, transacciones,  mensajería. Al igual que un servidor web, un servidor de aplicaciones también puede emplear diversas técnicas de escalabilidad y tolerancia a fallas.
  • Qué quiere decir esto?
    • Que los programadores van a poder dedicarse casi en exclusiva a implementar la lógica del dominio, ya que servicios de uso común, como transacciones, seguridad, persistencia, etc. ya son proporcionados por el servidor de aplicaciones
    • Se ha convertido en una pieza de software clave para cualquier empresa

Porque utilizar los Servidores de aplicación

  • Comienzan a surgir cuando queda claro que las aplicaciones cliente/servidor no iban a ser escalables a un gran número de usuarios
  • Se hacía necesario mover las reglas de negocio a algún lugar intermedio entre los clientes y la base de datos (Separation of Concerns).
  • Empezaron a surgir productos para hacer esa tarea
    • Cada compañía los llamaba de una forma distinta
    • Servidores de transacciones, servidores de aplicaciones…
  • Pero todos ellos estaban pensados para:

Gestionar de forma centralizada el modo en que los clientes debían conectarse a la base de datos o a los servicios con los que tenían que interoperar

Alguno de los servicios que proporciona:

Control de sesiones

Como sabemos, HTTP es un protocolo sin sesión

  • No permite mantener una conexión abierta entre el cliente y el servidor más allá de lo que dura la transferencia del documento en cuestión

En cualquier aplicación de comercio electrónico, es necesario poder identificar al usuario a través de su navegación por el sitio Web

  • Autenticación, adición de productos al carrito de la compra, etc.

La implementación “a mano” se complicaría enormemente en el caso de contar con varios servidores (equilibrado de carga)

  • La petición de un usuario registrado en la máquina A puede ser redirigida al servidor B

Lo lógico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesión

Además, debería ser más eficiente que si lo programamos nosotros mismos

Equilibrado de carga

Por equilibrado de carga (load balancing) se entiende la capacidad de repartir el procesamiento entre distintos servidores

Las peticiones de los clientes se redirigen a la máquina que más desocupada se encuentre en ese momento

Mejora de rendimiento de la aplicación

No es tan sencillo como añadir una nueva máquina y ya está

Además de la escalabilidad, se consigue una mayor tolerancia a fallos

Acceso a Datos

Los servidores de aplicaciones proveen facilidades para administrar conexiones a bases de datos relacionales

  • Oracle, SQL Server, DB2…

Los componentes (las clases que implementan la lógica del negocio) acceden a ellas de forma estándar

  • Independiente de la base de datos subyacente

También suelen permitir acceder a otros tipos de fuentes de datos:

  • Tales como distintos ERP (SAP, Vaan…), repositorios XML, etc.
  • Los servidores de aplicaciones son también importantes, por tanto, como mecanismo de integración de sistemas heredados

Pooling de conexiones

Abrir una conexión a una base de datos suele ser un proceso costoso

  • No es viable abrir una nueva conexión por cada consulta a la base de datos.Penalizaría enormemente el rendimiento de la aplicación

Los servidores de aplicaciones suelen contar con una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos procesos

  • Se puede configurar el número de conexiones abiertas, e incluso la política de asignación

Gestion de transacciones

Recuerda: Transacción: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original

Son un elemento básico de cualquier aplicación comercial

  • Evitan que haya información inconsistente

Sería complejísimo implementarlas “a mano”

Con un servidor de aplicaciones que tenga esta característica, bastaría con indicarle dónde empieza y termina la transacción

  • Encargándose él de deshacer los pasos intermedios en caso de un error del sistema

Algunos servidores populares

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Desarrollo Web, Divulgacion y etiquetada , , . Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.