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
- Contenedores EJBs
- Contenedores Web
- Servidores de aplicaciones completos
- Weblogic
- IBM WebSphere
- Caucho Resin
- JOnAS (Open Source Jee app. Server).
- iPlanent (Producto de Oracle, con fecha de ultima actualizacion de Enero de 2018.
- Orión – OC4J (Otro pojecto de Oracle de 2006!)
- Jboss + Tomcat
- Otros…
–
Relacionado
Descubre más desde Recursos para formacion
Suscríbete y recibe las últimas entradas en tu correo electrónico.