Diferencia entre revisiones de «Servidor de Aplicaciones»
(Etiqueta: nuestro-nuestra) |
(Etiqueta: nuestro-nuestra) |
||
Línea 2: | Línea 2: | ||
== Introducción == | == Introducción == | ||
<div align="justify">El concepto de servidor de aplicaciones está relacionado con el concepto de sistema distribuido. Un sistema distribuido, en oposición a un sistema monolítico, permite mejorar tres aspectos fundamentales en una aplicación: la alta disponibilidad, la escalabilidad y el mantenimiento. En un sistema monolítico un cambio en las necesidades del sistema (aumento considerable del número de visitas, aumento del número de aplicaciones, etc.) provoca un colapso y la adaptación a dicho cambio puede resultar catastrófica. Vamos a ver estas características con ejemplos. </div> | <div align="justify">El concepto de servidor de aplicaciones está relacionado con el concepto de sistema distribuido. Un sistema distribuido, en oposición a un sistema monolítico, permite mejorar tres aspectos fundamentales en una aplicación: la alta disponibilidad, la escalabilidad y el mantenimiento. En un sistema monolítico un cambio en las necesidades del sistema (aumento considerable del número de visitas, aumento del número de aplicaciones, etc.) provoca un colapso y la adaptación a dicho cambio puede resultar catastrófica. Vamos a ver estas características con ejemplos. </div> | ||
− | • La alta disponibilidad hace referencia a que un sistema debe estar funcionando las 24 horas del día los 365 días al año. Para poder alcanzar esta característica es necesario el uso de técnicas de balanceo de carga y de recuperación ante fallos (failover). | + | •<div align="justify"> La alta disponibilidad hace referencia a que un sistema debe estar funcionando las 24 horas del día los 365 días al año. Para poder alcanzar esta característica es necesario el uso de técnicas de balanceo de carga y de recuperación ante fallos (failover). </div> |
− | • La escalabilidad es la capacidad de hacer crecer un sistema cuando se incrementa la carga de trabajo (el número de peticiones). Cada máquina tiene una capacidad finita de recursos y por lo tanto sólo puede servir un número limitado de peticiones. Si, por ejemplo, tenemos una tienda que incrementa la demanda de servicio, debemos ser capaces de incorporar nuevas máquinas para dar servicio. | + | •<div align="justify"> La escalabilidad es la capacidad de hacer crecer un sistema cuando se incrementa la carga de trabajo (el número de peticiones). Cada máquina tiene una capacidad finita de recursos y por lo tanto sólo puede servir un número limitado de peticiones. Si, por ejemplo, tenemos una tienda que incrementa la demanda de servicio, debemos ser capaces de incorporar nuevas máquinas para dar servicio.</div> |
− | • El mantenimiento tiene que ver con la versatilidad a la hora de actualizar, depurar fallos y mantener un sistema. La solución al mantenimiento es la construcción de la lógica de negocio en unidades reusables y modulares. | + | •<div align="justify"> El mantenimiento tiene que ver con la versatilidad a la hora de actualizar, depurar fallos y mantener un sistema. La solución al mantenimiento es la construcción de la lógica de negocio en unidades reusables y modulares.</div> |
== ¿Qué es un servidor de aplicaciones? == | == ¿Qué es un servidor de aplicaciones? == | ||
Línea 12: | Línea 12: | ||
'''Conceptos de la arquitectura J2EE''' | '''Conceptos de la arquitectura J2EE''' | ||
− | • '''Cliente web''' (contenedor de applets): Es usualmente un navegador e interactúa con el contenedor web haciendo uso de [[Http]]. Recibe páginas HTML o [[XML]] y puede ejecutar applets y código [[JavaScript]]. | + | •<div align="justify"> '''Cliente web''' (contenedor de applets): Es usualmente un navegador e interactúa con el contenedor web haciendo uso de [[Http]]. Recibe páginas HTML o [[XML]] y puede ejecutar applets y código [[JavaScript]].</div> |
− | • '''Aplicación cliente''': Son clientes que no se ejecutan dentro de un navegador y pueden utilizar cualquier tecnología para comunicarse con el contenedor web o directamente con la base de datos. | + | •<div align="justify"> '''Aplicación cliente''': Son clientes que no se ejecutan dentro de un navegador y pueden utilizar cualquier tecnología para comunicarse con el contenedor web o directamente con la base de datos.</div> |
− | • '''Contenedor web''': Es lo que comúnmente denominamos servidor web. Es la parte visible del servidor de aplicaciones. Utiliza los protocolos HTTP y SSL (seguro) para comunicarse. | + | •<div align="justify"> '''Contenedor web''': Es lo que comúnmente denominamos servidor web. Es la parte visible del servidor de aplicaciones. Utiliza los protocolos HTTP y SSL (seguro) para comunicarse.</div> |
− | • '''Servidor de aplicaciones''': Proporciona servicios que soportan la ejecución y disponibilidad de las aplicaciones desplegadas. Es el corazón de un gran sistema distribuido. | + | •<div align="justify"> '''Servidor de aplicaciones''': Proporciona servicios que soportan la ejecución y disponibilidad de las aplicaciones desplegadas. Es el corazón de un gran sistema distribuido.</div> |
<div align="justify">Frente a la tradicional estructura en dos capas de un servidor web, un servidor de aplicaciones proporciona una estructura en tres capas que permite estructurar nuestro sistema de forma más eficiente. Un concepto que debe quedar claro desde el principio es que no todas las aplicaciones de empresa necesitan un servidor de aplicaciones para funcionar. Una pequeña aplicación que acceda a una base de datos no muy compleja y que no sea distribuida probablemente no necesitará un servidor de aplicaciones, tan solo con un servidor web (usando servlets y jsp) sea suficiente.</div><div align="justify">Como hemos comentado, un servidor de aplicaciones es una implementación de la especificación J2EE. Existen diversas implementaciones, cada una con sus propias características que la pueden hacer más atractiva en el desarrollo de un determinado sistema. Algunas de las implementaciones más utilizadas son las siguientes: </div> | <div align="justify">Frente a la tradicional estructura en dos capas de un servidor web, un servidor de aplicaciones proporciona una estructura en tres capas que permite estructurar nuestro sistema de forma más eficiente. Un concepto que debe quedar claro desde el principio es que no todas las aplicaciones de empresa necesitan un servidor de aplicaciones para funcionar. Una pequeña aplicación que acceda a una base de datos no muy compleja y que no sea distribuida probablemente no necesitará un servidor de aplicaciones, tan solo con un servidor web (usando servlets y jsp) sea suficiente.</div><div align="justify">Como hemos comentado, un servidor de aplicaciones es una implementación de la especificación J2EE. Existen diversas implementaciones, cada una con sus propias características que la pueden hacer más atractiva en el desarrollo de un determinado sistema. Algunas de las implementaciones más utilizadas son las siguientes: </div> | ||
• BEA WebLogic | • BEA WebLogic | ||
Línea 34: | Línea 34: | ||
• HP Bluestone | • HP Bluestone | ||
<div align="justify">Los dos primeros son los más utilizados en el mercado. Nosotros vamos a utilizar el servidor BEA WebLogic. La principal ventaja de WebLogic es que podemos crear un sistema con varias máquinas con distintos sistemas operativos: [[Linux]], [[Unix]], [[Windows NT]], etc. El sistema funciona sin importarle en qué máquina está corriendo el servidor. </div> | <div align="justify">Los dos primeros son los más utilizados en el mercado. Nosotros vamos a utilizar el servidor BEA WebLogic. La principal ventaja de WebLogic es que podemos crear un sistema con varias máquinas con distintos sistemas operativos: [[Linux]], [[Unix]], [[Windows NT]], etc. El sistema funciona sin importarle en qué máquina está corriendo el servidor. </div> | ||
− | '''Otros conceptos ''' | + | '''Otros conceptos ''' |
− | • '''Servidor proxy''': Centraliza peticiones de los clientes y las reenvía hacia otras máquinas. Puede servir como nivel de indirección y seguridad. También puede ser usado para realizar balanceo de carga. | + | •<div align="justify"> '''Servidor proxy''': Centraliza peticiones de los clientes y las reenvía hacia otras máquinas. Puede servir como nivel de indirección y seguridad. También puede ser usado para realizar balanceo de carga.</div> |
− | • '''Cortafuegos''' (firewall): Proporciona servicios de filtrado, autorización y autentificación. Puede actuar como proxy y ayuda a manejar los ataques de los hackers. | + | •<div align="justify"> '''Cortafuegos''' (firewall): Proporciona servicios de filtrado, autorización y autentificación. Puede actuar como proxy y ayuda a manejar los ataques de los hackers. </div> |
− | • '''Máquina''': Representa una unidad física donde reside un servidor. Una máquina se define como tipo Unix o no Unix (Windows NT, etc.). | + | •<div align="justify"> '''Máquina''': Representa una unidad física donde reside un servidor. Una máquina se define como tipo Unix o no Unix (Windows NT, etc.).</div> |
− | • '''Servidor''': Un servidor es una instancia de la clase weblogic.Server ejecutándose dentro de una máquina virtual de Java. Un servidor está alojado en una máquina, pero una máquina puede contener varios servidores. Si un servidor no lo declaramos en ninguna máquina WLS asume que está en una creada por defecto. | + | •<div align="justify"> '''Servidor''': Un servidor es una instancia de la clase weblogic.Server ejecutándose dentro de una máquina virtual de Java. Un servidor está alojado en una máquina, pero una máquina puede contener varios servidores. Si un servidor no lo declaramos en ninguna máquina WLS asume que está en una creada por defecto.</div> |
− | • '''Dominio''': Un dominio es una unidad administrativa. Sirve para declarar varios servidores, aplicaciones, etc. y que todos ellos estén asociados mediante el nombre del dominio. | + | •<div align="justify"> '''Dominio''': Un dominio es una unidad administrativa. Sirve para declarar varios servidores, aplicaciones, etc. y que todos ellos estén asociados mediante el nombre del dominio.</div> |
− | • '''Clustering''' (asociación): Los clusters permiten asociar maquinas y servidores para que actúen de forma conjunta como una única instancia. La creación de un cluster va a permitir el balanceo de carga y la recuperación frente a fallos. | + | •<div align="justify"> '''Clustering''' (asociación): Los clusters permiten asociar maquinas y servidores para que actúen de forma conjunta como una única instancia. La creación de un cluster va a permitir el balanceo de carga y la recuperación frente a fallos. </div> |
− | • '''Balanceo de carga''': Es una técnica utilizada para distribuir las peticiones entre varios servidores de tal forma que todos los servidores respondan al mismo número de peticiones. | + | •<div align="justify"> '''Balanceo de carga''': Es una técnica utilizada para distribuir las peticiones entre varios servidores de tal forma que todos los servidores respondan al mismo número de peticiones.</div> |
− | • '''Recuperación ante fallos''' (failover): Permite evitar la caída de un sistema cuando una máquina deja de funcionar o funciona incorrectamente. | + | •<div align="justify"> '''Recuperación ante fallos''' (failover): Permite evitar la caída de un sistema cuando una máquina deja de funcionar o funciona incorrectamente.</div> |
− | • '''Puerto de escucha''': Un servidor tiene varios puertos por los que puede "escuchar" las peticiones. Existen puertos ya asignados a aplicaciones concretas, como por ejemplo el puerto de http que suele ser el 80. Los puertos permiten que varias aplicaciones puedan atender distintas peticiones en la misma máquina. Un puerto en una dirección se especifica de la siguiente manera: http://localhost:7001/direc. Con | + | •<div align="justify"> '''Puerto de escucha''': Un servidor tiene varios puertos por los que puede "escuchar" las peticiones. Existen puertos ya asignados a aplicaciones concretas, como por ejemplo el puerto de http que suele ser el 80. Los puertos permiten que varias aplicaciones puedan atender distintas peticiones en la misma máquina. Un puerto en una dirección se especifica de la siguiente manera: http://localhost:7001/direc. Con 7001 indicamos el puerto que estamos atacando. Los puertos del 0 al 1023 son reservados por el sistema. Podemos disponer de los puertos del 1024 al 65536. Hay que tener en cuenta que dos servicios no pueden estar escuchando en el mismo puerto.</div> |
− | • '''Modo producción y modo desarrollo'''. Hablaremos muy a menudo de modo desarrollo y modo producción. El modo desarrollo es cuando nos encontramos desarrollando nuestra aplicación y no está disponible exteriormente. El modo producción es cuando está funcionando a pleno rendimiento y tenemos clientes que se encuentran utilizándola. Por defecto, un dominio se arranca en modo desarrollo. | + | •<div align="justify"> '''Modo producción y modo desarrollo'''. Hablaremos muy a menudo de modo desarrollo y modo producción. El modo desarrollo es cuando nos encontramos desarrollando nuestra aplicación y no está disponible exteriormente. El modo producción es cuando está funcionando a pleno rendimiento y tenemos clientes que se encuentran utilizándola. Por defecto, un dominio se arranca en modo desarrollo.</div> |
== Otros servidores de aplicación == | == Otros servidores de aplicación == | ||
Línea 66: | Línea 66: | ||
Los tres principios fundamentales de un servidor de aplicaciones son: | Los tres principios fundamentales de un servidor de aplicaciones son: | ||
− | • La alta disponibilidad hace referencia a que un sistema debe estar funcionando las 24 horas del día los 365 días al año. Para poder alcanzar esta característica es necesario el uso de técnicas de balanceo de carga y de recuperación ante fallos (failover). | + | •<div align="justify"> La alta disponibilidad hace referencia a que un sistema debe estar funcionando las 24 horas del día los 365 días al año. Para poder alcanzar esta característica es necesario el uso de técnicas de balanceo de carga y de recuperación ante fallos (failover).</div> |
− | • La escalabilidad es la capacidad de hacer crecer un sistema cuando se incrementa la carga de trabajo (el número de peticiones). Cada máquina tiene una capacidad finita de recursos y por lo tanto sólo puede servir un número limitado de peticiones. Si, por ejemplo, tenemos una tienda que incrementa la demanda de servicio, debemos ser capaces de incorporar nuevas máquinas para dar servicio. | + | •<div align="justify"> La escalabilidad es la capacidad de hacer crecer un sistema cuando se incrementa la carga de trabajo (el número de peticiones). Cada máquina tiene una capacidad finita de recursos y por lo tanto sólo puede servir un número limitado de peticiones. Si, por ejemplo, tenemos una tienda que incrementa la demanda de servicio, debemos ser capaces de incorporar nuevas máquinas para dar servicio.</div> |
− | • El mantenimiento tiene que ver con la versatilidad a la hora de actualizar, depurar fallos y mantener un sistema. La solución al mantenimiento es la construcción de la lógica de negocio en unidades reusables y modulares. | + | •<div align="justify"> El mantenimiento tiene que ver con la versatilidad a la hora de actualizar, depurar fallos y mantener un sistema. La solución al mantenimiento es la construcción de la lógica de negocio en unidades reusables y modulares.</div> |
=== Usos === | === Usos === | ||
Línea 76: | Línea 76: | ||
== Ventajas de los servidores de aplicaciones == | == Ventajas de los servidores de aplicaciones == | ||
− | • Integridad de datos y códigos: al estar centralizada en una o un pequeño número de máquinas servidoras, las actualizaciones están garantizadas para todos sus usuarios. No hay riesgos de versiones viejas.* Configuración centralizada: los cambios en la configuración de la aplicación, como mover el servidor de base de datos o la configuración del sistema, pueden ser hechos centralmente. | + | •<div align="justify"> Integridad de datos y códigos: al estar centralizada en una o un pequeño número de máquinas servidoras, las actualizaciones están garantizadas para todos sus usuarios. No hay riesgos de versiones viejas.* Configuración centralizada: los cambios en la configuración de la aplicación, como mover el servidor de base de datos o la configuración del sistema, pueden ser hechos centralmente.</div> |
• Seguridad: se consideran más seguras. | • Seguridad: se consideran más seguras. | ||
− | • Performance: limitando el tráfico de la red solamente al tráfico de la capa de presentación, es percibido como un modelo cliente/servidor que mejora la performance de grandes aplicaciones. | + | •<div align="justify"> Performance: limitando el tráfico de la red solamente al tráfico de la capa de presentación, es percibido como un modelo cliente/servidor que mejora la performance de grandes aplicaciones.</div> |
• Un núcleo de runtime que soporta el despliegue y gestión de aplicaciones de negocio de altas prestaciones. | • Un núcleo de runtime que soporta el despliegue y gestión de aplicaciones de negocio de altas prestaciones. | ||
− | • El entorno de desarrollo .NET [[Framework]], que ofrece un modelo de programación simplificado y un modelo de ejecución de alto rendimiento para aplicaciones basadas en servidor, habilita la publicación de servicios Web y permite integrar las aplicaciones nuevas con las infraestructuras y aplicaciones ya existentes. | + | •<div align="justify"> El entorno de desarrollo .NET [[Framework]], que ofrece un modelo de programación simplificado y un modelo de ejecución de alto rendimiento para aplicaciones basadas en servidor, habilita la publicación de servicios Web y permite integrar las aplicaciones nuevas con las infraestructuras y aplicaciones ya existentes.</div> |
• Un asistente para Añadir Roles muy amigable que ayuda a elegir los servicios y funcionalidades necesarios para ejecutar las aplicaciones corporativas. | • Un asistente para Añadir Roles muy amigable que ayuda a elegir los servicios y funcionalidades necesarios para ejecutar las aplicaciones corporativas. |
Revisión del 14:24 24 ene 2011
|
Sumario
Introducción
•
•
•
¿Qué es un servidor de aplicaciones?
Conceptos de la arquitectura J2EE
•
•
•
•
• BEA WebLogic
• IBM WebSphere
• Sun-Netscape IPlanet
• Sun One
• Oracle IAS
• Borland AppServer
• HP Bluestone
Otros conceptos
•
•
•
•
•
•
•
•
•
•
Otros servidores de aplicación
Características comunes
Principios
Los tres principios fundamentales de un servidor de aplicaciones son:
•
•
•
Usos
Ventajas de los servidores de aplicaciones
•
• Seguridad: se consideran más seguras.
•
• Un núcleo de runtime que soporta el despliegue y gestión de aplicaciones de negocio de altas prestaciones.
•
• Un asistente para Añadir Roles muy amigable que ayuda a elegir los servicios y funcionalidades necesarios para ejecutar las aplicaciones corporativas.
• Instalación automática de todas las funcionalidades necesarias para un rol determinado.
¿Cuándo hay que instalar un Servidor de Aplicaciones?
Fuentes
http://www.jtech.ua.es/j2ee/2003-2004/abierto-j2ee-2003-2004/sa/sesion1-apuntes.htm
http://enciclopedia.us.es/index.php/Servidor_de_aplicaciones http://www.microsoft.com/spain/windowsserver2008/web/web_as.mspx