7.
ENTORNOS
Aunque
este documento de buenas prácticas se concentra en el desarrollo
de software, en este apartado se estudiarán buenas prácticas
para los entornos de desarrollo y producción.
7.1.
Buena práctica número 18. Elija adecuadamente su
entorno de producción
Para
despliegues de gran tamaño, se necesita diseñar el
entorno de producción tan cuidadosamente como la aplicación.
Las alternativas de despliegue que tienen mayor impacto sobre el
desarrollo de la aplicación son los siguientes:
-
Clustering
contra standalone. Si la implementación
de la aplicación usa la técnica de
clustering, cada parte de la aplicación
J2EE deberá soportar esta técnica.
-
Distribución
de capas en las diferentes máquinas. Las
diferentes arquitecturas J2EE se corresponden con
diferentes arquitecturas en n-capas. A continuación,
se dan unas indicaciones para elegir la arquitectura
más adecuada.
Capas
de una aplicación
Las
capas ayudan a organizar la lógica de la aplicación.
Pueden facilitar el mantenimiento, aumentar la flexibilidad y resolver
problemas de despliegue. El catálogo de patrones J2EE reconoce
de tres a cinco capas, dependiendo de los requerimientos de cada
aplicación:
-
Capa
del cliente. Esta capa soporta la interfaz
de usuario, que es normalmente HTML, la cual puede
extenderse con applets en Java o lenguajes de guión.
-
Capa
de presentación. Esta capa es responsable
de construir una clara separación entre
modelo, vista y controlador.
-
Capa
de negocio. Esta capa contiene lógica
de negocio. EJB puede ser una implementación
de esta capa.
-
Capa
de integración. Esta capa proporciona
lógica que se usa para acceder a sistemas
complejos de legado. Los servicios Web y las arquitecturas
de colas pertenecen a esta capa.
-
Capa
de recursos. Son recursos las bases de
datos o aplicaciones no J2EE. Un recurso puede
diseñarse específicamente para J2EE
o puede ser una aplicación independiente
que requiera una capa de integración.
Diferentes
configuraciones de despliegue
La
figura 4 nuestra una configuración común de
despliegue, en la que se incluyen dos muros de fuego (“firewalls”)
para aumentar la seguridad. La zona entre los dos muros de fuego
(llamada la zona desmilitarizada o DMZ) contiene sistemas que necesitan
una seguridad moderada y buen tiempo de acceso. Como los clientes
externos deben atravesar el muro de fuego para llegar a la capa de
presentación, los modelos que usan HTTP son la mejor opción
para esta configuración.
Figura
4. Diseño con cinco capas. Usualmente se utilizan dos muros
de fuego.
Aún
así, es importante remarcar que se debería adaptar
el entorno a los requerimientos de cada aplicación. Las arquitecturas
complejas pueden escalar bien y ofrecer buena disponibilidad, pero
estos beneficios tienen un costo. Por otra parte, algunos despliegues
no necesitan capa de integración y otros pueden desplegar
las capas de presentación y de negocio en una única
máquina. Por ello, se puede optar por un entorno sencillo,
como el que muestra la figura 5, que produce una configuración
fácil de manejar y sorprendentemente robusta. Con el lenguaje
Java y mainframes que son compatibles con Unix, se puede obtener
un rendimiento sorprendentemente bueno con esta configuración.
La ventaja de esta opción es que el sistema resulta más
sencillo de diseñar y desplegar. Su inconveniente es que la
lógica de negocio no está protegida detrás de
un segundo muro de fuego.
Figura
5. Este despliegue incluye un servidor que contiene conjuntamente
las capas de presentación y de negocio. Este servidor está dentro
del muro de fuego externo pero fuera del muro de fuego interno.
|