Servidores de Páginas: "Web-Servers" y "Java Application Servers"

El servidor de Páginas es la parte primordial de cualquier sitio de Internet, ya que es el encargado de generar y enviar la información a los usuarios finales.

Cual es la diferencia entre Servidor de Páginas "Web Server" y Servidor de Aplicaciones "Application Server" ?

En un sentido muy estricto un "Web Server" no es lo mismo que "Application Server", pero últimamente estos dos términos se prestan a una gran confusión .

Cuando se crearon los primeros Servidores de páginas ("Web Server") como Apache, éste solo era encargado de enviar los datos al usuario final, pero cualquier otra información que requiriera de algún tipo de personalización (Véase: aplicación de servidor ) era realizada por un interpretador que ejecutaba un "script" (programa), generalmente en Perl .Sin embargo, conforme las demandas de los Servidores de páginas ("Web Server's") incrementaron fue necesario eficientizar este proceso, ya que el llamar un interpretador para que ejecutara otro programa (en el caso Perl) ponía una demanda muy fuerte sobre el "Host" que mantenía el Servidor de Páginas ("Web Server")

Hoy en día, se pudiera decir que TODOS los "Servidores de Páginas" ya son "Servidores de Aplicaciones" ya que se les ha desarrollado alguna funcionalidad especial que les permite realizar, valga la redundancia, aplicaciones de servidor . Y para agregar a la confusión en la Industria hoy día ya abundan los "Java Application Servers" que son otra cosa muy diferente y malamente ya son designados "Application Servers" o "Servidores de Aplicaciones" a solas.

Dependiendo de la funcionalidad se trae consigo complejidad al sistema, ya sea en la forma de requerimientos del sistema (memoria , procesadores), carga administrativa (configuración, tiempo de desarrollo) o alguna otra. Requisición común:

Requisicion Comun

En el diagrama anterior se puede observar que un navegador ("Netscape" o "Explorer") solicita información al servidor de páginas, esta solicitud inicial se lleva acabo mediante HTTP , sin embargo, una vez que esta solicitud llega al Servidor ésta puede tomar varias acciones.

En el esquema las lineas punteadas ( -- -- ) representan un proceso/programa dentro del "Host" (computadora física), bajo esta hipótesis se describirán los "Servidores de Páginas".

Apache

Apache es uno de los Servidores de páginas más utilizados, posiblemente porque ofrece instalaciones sencillas para sitios pequeños y si se requiere es posible expandirlo hasta el nivel de los mejores productos comerciales. Si se utiliza para un sitio pequeño que solo contenga archivos en HTML, esto es, no requiera de aplicaciones de servidor su funcionalidad es excelente, pero que sucede cuando se requiere una aplicación de Servidor ? La aplicación de servidor implica lo siguiente:

Requisicion con varios procesos

Cuando el servidor de páginas (Apache) recibe la requisición para "x" página éste reconoce cuando debe enviar un documento estático (HTML) o ejecutar algún tipo de aplicación, en el diagrama se puede observar que la solicitud de "x" página invoca (llama) un programa en Perl y este a su vez solicita información a una base de datos, por lo tanto para llevar acabo esta operación debieron iniciarse 2 procesos nuevos, quizás esto no sea de gran importancia para un sitio de 100 visitas diarias, pero que sucedería con uno de 2 visitas por segundo ?

Si no se tienen los suficientes recursos en cuanto a memoria y procesadores se refiere, seguramente caerá el servidor de páginas o bien se queme el "Host" (computadora física) por la demanda excesiva. Apache tiene tanto tiempo de desarrollo que han sido desarrolladas diferentes soluciones para evitar estas ineficiencias,algunas:

Cabe mencionar que muchos sitios de alto tráfico aún permanecen bajo este tipo de Arquitectura, en ocasiones si se tienen los recursos suficientes continua siendo costeable esta metodología a migrar a otro tipo de desarrollo, sin embargo, siempre es conveniente conocer otras alternativas.

AOLServer

AOLServer al igual que Apache es un producto open-source pero a diferencia de este último, fue diseñado conociendo varias deficiencias que existían en el modelo inicial utilizado por Apache.

AOLServer desde sus versiones iniciales fue desarrollado con "Threading" en mente, esto es, compartir la memoria del Proceso general en varios sub-procesos o "Threads", esto no solo eficientiza las conexiones al servidor de páginas sino también reduce la carga sobre el mismo.

Además de "Threading" AOLserver integra un Interpretador en su estructura interna evitando generar un proceso nuevo por aplicación de servidor y mantiene grupos de conexiones latentes ("pools") hacia bases de datos también para evitar generar procesos nuevos.

Requisicion Comun

Otra ventaja de AOLServer es el ofrecimiento de ADP ("Aol Dynamic Pages") que son muy similares a las ASP's (Active Server Pages) de Microsoft o JSP's (Java Server Pages) de Sun, la diferencia estriba que ADP's utilizan el lenguaje Tcl y un API especialmente diseñado para accesar los elementos del servidor, pero su funcionamiento es igual al de ADP y JSP: mezclar elementos de HTML con elementos de programación para generar contenido dinámico.

Como último punto es utilizado por una de las empresas con mayor tráfico en Internet America Online, el proveedor de Servicios de Internet (ISP) más grande del mundo. Un poco más en Ventajas y Desventajas comparado con Apache

IIS (Information Server)

IIS es el servidor de páginas desarrollado por Microsoft para Windows NT/2000, a diferencia de los dos servidores de páginas mencionados anteriormente, IIS solo puede operar en plataformas Windows. El punto más favorable de este servidor son ASP's que facilitan el desarrollo de aplicaciones y la "sencillez" de instalación, sin embargo, existen alternativas como ADP's de Aolserver y JSP's para Java. Desafortunadamente debido a la presencia de Microsoft en el Mercado seguirá siendo necesario interactuar con este producto a pesar de todas sus desventajas:

Otros Servidores Similares

"Servlet Engines" y "Java Application Servers"

Servlet Engines

Quizás el nombre que más salga a relucir con "Servlet Engines" es Tomcat o Jakarta Apache . Tomcat surgió de Sun Microsystem's cuando desarrollaban un "Servidor de Páginas" que utilizara "Java",y posteriormente cedieron el código fuente a la fundación Apache.

A pesar del nombre Apache-Tomcat; Tomcat no requiere de Apache para su funcionamiento (solo requiere de un JDK ("Java Development Kit") y es aquí donde dista un poco de las previas implementaciones:

Requisicion Comun

En la figura anterior la linea roja demuestra que el Servlet engine (también llamado "Web Container") es capaz de responder a requisiciones de Internet, en efecto actuando como "Servidor de Páginas", sin embargo, aunque esto sea posible la gran mayoría de las implementaciones de Servlet Engines no funcionan tan eficiente como un "Servidor de Páginas", es por esto (y otras razones que a continuación se mencionan) que se opta por utilizar un "Servidor de Páginas" (Apache,Aol,Netscape..) en conjunción con un "Servlet Engine".

La linea verde demuestra la utilización de un "Servidor de Páginas" con un "Servlet Engine" (Web-Container), esta implementación suele utilizarse cuando se requiere utilizar encriptación o se tiene un sitio que contiene documentos puros en HTML , las cuales son dos areas que un "Servidor de Páginas" supera en desempeño comparado con un "Servlet Engine". La comunicación entre el "Servidor de Páginas" y el "Servlet Engine" se lleva acabo mediante el protocolo denominado ajp12 y recientemente con su sucesor ajp13 .

Que hace el Servlet Engine ?

El "Servlet Engine" ofrece un "Ambiente" donde habitan los JSP y Servlets, es ahí donde se contemplan una gran cantidad de funcionalidades como: threading, manutención de sesiones, conectividad con el "Servidor de Páginas", es por esto al "Servlet Engine" también se le denomina "Web-Container".

Dos "Servlet Engines" (Web-Containers) que están en amplio uso y son utilizados con "Servidores de Páginas" son: Tomcat y ServletExec, donde el primero es open-source y el último es un producto cerrado; otro "Servlet Engine" es Resin (Open-Source) el cual permite: utilizar JavaScript como "Scripting Language" dentro de JSP's y acceso a XSL una extensión de XML .

Como se observa en el diagrama también se requiere de un JDK ("Java Development Kit") , el cual llevará acabo la ejecución de los programas ("Servlets" y "JSP's") en Java; como toda otra implementación existen diversas versiones de JDK's, esto se debe a que cada JDK debe ser diseñado alrededor de un Sistema Operativo (para ser más exactos es el JVM "Java Virtual Machine" el que debe ser diseñado alrededor del Sistema Operativo ), algunos JDK's son: J2SE's (Java 2 Standard Edition) de Sun y JDK's de IBM

Java Application Servers

"Java Application Servers" hoy en día ya denominados "Application Servers" ofrecen una manera de Integrar y ofrecer las funcionalidades requeridas por la gran mayoría de sistemas empresariales, una de las razones por las cuales el mercado ha sido inundado con estos "Application Servers" es que están diseñados alrededor de J2EE , que es solo un grupo de especificaciones definidas por Sun.

Estos "Application Servers" comunmente llamados Middleware se encuentran compuestos de la siguiente manera:

Java Application Server

Como su denominación lo implica ("Middleware") se encuentran en la parte media de una arquitectura de sistema, su flexibilidad reside en la posibilidad de accesar información en sistemas empresariales (EIS) como SAP, JdEdwards, bases de datos o alguna aplicación escrita en COBOL u otro lenguaje.

Dependiendo de la empresa que desarrolle el "Application Server" éste puede contener inclusive hasta un "Servidor de Páginas" o algún otro desarrollo propietario, sin embargo, los dos elementos primordiales (aunque no sean comercializados como tal) son el "Servlet Engine" (Web-Container) y "Enterprise Bean Engine" (Bean-Container).

Que hace el Servlet Engine y Enterprise Bean Engine ?

La mayor ventaja de este tipo de arquitectura se debe a la separación de funcionalidades y uso de protocolos de red como RMI/CORBA , esto facilita que puedan existir 4 o 5 "Hosts" en diferentes regiones geográficas, cada uno empleando cualquiera de los componentes antes mencionados. Por último, existen diversos "Application Servers" que son denominados "Fully J2EE Compliant" esto indica que cumplen con todas las especificaciones J2EE indicadas por Sun. (Vea J2EE )

Algunos "Application Servers" "Fully J2EE Compliant" son:

Links: