# data[].attributes.body
Introducción

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.

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).

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.

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.

¿Qué es un servidor de aplicaciones?

El estándar J2EE permite el desarrollo de aplicaciones de empresa de una manera sencilla y eficiente. Una aplicación desarrollada con las tecnologías J2EE permite ser desplegada en cualquier servidor de aplicaciones o servidor web que cumpla con el estándar. Un servidor de aplicaciones es una implementación de la especificación 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.

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.

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.

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.

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.

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:

• BEA WebLogic

• IBM WebSphere

• Sun-Netscape IPlanet

• Sun One

• Oracle IAS

• Borland AppServer

• HP Bluestone

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.

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.

Cortafuegos (firewall): Proporciona servicios de filtrado, autorización y autentificación. Puede actuar como proxy y ayuda a manejar los ataques de los hackers.

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.).

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.

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.

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.

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.

Recuperación ante fallos (failover): Permite evitar la caída de un sistema cuando una máquina deja de funcionar o funciona incorrectamente.

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.

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.

Otros servidores de aplicación

El término servidor de aplicaciones también ha sido aplicado a otros productos no-J2EE. Por ejemplo, con el aumento de la popularidad de .NET, Microsoft califica a su producto Internet Information Server como un servidor de aplicaciones. Adicionalmente, se pueden encontrar servidores de aplicación de código abierto y comerciales de otros provedores; algunos ejemplos son Base4 Server y Zope.

Características comunes

Los servidores de aplicación típicamente incluyen también middleware (o software de conectividad) que les permite intercomunicarse con variados servicios, para efectos de confiabilidad, seguridad, no-repudio, etc. Los servidores de aplicación también brindan a los desarrolladores una Interfaz para Programación de Aplicaciones (API), de tal manera que no tengan que preocuparse por el sistema operativo o por la gran cantidad de interfaces requeridas en una aplicación Web moderna.

Los servidores de aplicación también brindan soporte a una gran variedad de estándares, tales como HTML, XML, IIOP, JDBC, SSL, etc., que les permiten su funcionamiento en ambientes Web (como Internet) y la conexión a una gran variedad de fuentes de datos, sistemas y dispositivos.

Un ejemplo común del uso de servidores de aplicación (y de sus componentes) son los portales de Internet, que permiten a las empresas la gestión y divulgación de su información, y un punto único de entrada a los usuarios internos y externos. Teniendo como base un servidor de aplicación, dichos portales permiten tener acceso a información y servicios (como servicios Web) de manera segura y transparente, desde cualquier dispositivo.

Principios

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).

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.

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

Usos

Un ejemplo común del uso de servidores de aplicación (y de sus componentes) son los portales de Internet, que permiten a las empresas la gestión y divulgación de su información, y un punto único de entrada a los usuarios internos y externos. Teniendo como base un servidor de aplicación, dichos portales permiten tener acceso a información y servicios (como servicios Web) de manera segura y transparente, desde cualquier dispositivo.

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.

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.

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.

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?

El rol de Servidor de Aplicaciones se necesita si Windows Server 2008 ejecuta aplicaciones que dependen de servicios o funcionalidades de rol que forman parte del rol integrado de Servidor de Aplicaciones y éstas se seleccionan durante el proceso de instalación. Por ejemplo, podría ser una configuración concreta de Microsoft BizTalk® Server que utiliza un conjunto de servicios o funcionalidades de rol que se incluyen dentro del entorno del Servidor de Aplicaciones.

Habitualmente el rol de Servidor de Aplicaciones se necesita si se está poniendo en marcha una aplicación de negocio desarrollada internamente (o por un fabricante independiente) y cuando el desarrollador ha prescrito los servicios de rol concretos que se necesitan para ella. Por ejemplo, en su organización podría tener una aplicación de tramitación de pedidos que accede a registros de clientes almacenados en una base de datos. La aplicación accede a la información del cliente por medio de una serie de servicios Web WCF. En este caso, puede configurarse un equipo Windows Server 2008 como servidor de aplicación e instalar la base de datos en este mismo equipo o en otra máquina diferente.

No siempre es necesario instalar el rol de Servidor de Aplicaciones para que funcionen las aplicaciones correctamente. Por ejemplo, este rol no es necesario para el soporte de Microsoft Exchange Server o Microsoft SQL Server sobre Windows Server 2008. Para saber si necesita este rol para ejecutar sus aplicaciones corporativas, los administradores deben cooperar estrechamente con los desarrolladores de las aplicaciones a fin de determinar correctamente los requisitos de éstas, y saber si utilizan, por ejemplo Microsoft .NET Framework 3.0 o componentes COM+

# data[].attributes.body
es una plataforma para crear webs, intranets y otras aplicaciones web. Muchos sitios de negocios y organizaciones utilizan este CMS. Es también relativamente fácil de utilizar.

# data[].attributes.body
es un sistema de gestión de contenido que te permite construir sitios Web y blogs. Con una curva de aprendizaje situada entre WordPress y Drupal. Una de las opciones más populares junto a WordPress y Drupal.

# data[].attributes.body
simplifica mucho la gestión de contenidos, ofreciendo una interfaz de usuario elegante, plantillas flexibles y una gestión de usuarios sencilla. Basado en Ruby on Rails, requiere PHP5, MySQL.

# data[].attributes.body
dupal es el CMS más popular en la actualidad. Te permite configurar fácilmente blogs y sitios web utilizando MySQL y PHP. Su curva de aprendizaje es muy rápida. Si quieres crear tu propio sitio web gratuito, rápido y de manera muy fácil, WordPress es la mejor solución.

# data[].attributes.body
woord press es una plataforma de gestión de contenido de código abierto que ha ayudado a crear millones de sitios web. Tiene una comunidad muy activa, pero su curva de aprendizaje es algo mayor que en el caso de WordPress. Para usuarios más experimentados. Puedes utilizar Drupal para crear desde blogs personales a páginas web empresariales. Dispone de miles de módulos adicionales y diseños. Requiere PHP y MYSQL.

# data[].attributes.body
gestores de contenido.
Un gestor de contenidos garantiza la independencia y desarrollo de tu proyecto

Hay  varias opciones para crear tu proyecto web. Se puede desarrollar desde cero o bien utilizando un entorno donde crear una estructura de soporte para administrar los contenidos. Los Gestores de Contenidos poseen una interfaz que controlan una o varias bases de datos donde se aloja el sitio web. A través de unos accesos es posible crear una serie de roles como administrador, editor o participantes sin necesidad de dar un formato nuevo a los contenidos que se vayan añadiendo. Una forma segura, fácil y rápida de generar contenidos con un formato predefinido.