2012-01-30 12 views
5

Digamos que estoy escribiendo un backend de Java para alguna herramienta GUI frontal (Swing). Este backend constará de muchos tipos diferentes de EJB para la lógica de middleware/negocio, así como algunos servicios web que filtran las solicitudes de reenvío & a esos EJB.Pros/contras a varias estrategias de empaquetado de Java

En cuanto a los envases & despliegue va, tenemos varios diferentes estrategias posibles:

  • 1 monolítica EAR/1 servidor de aplicaciones - paquete de todos los EJB en los frascos, y los servicios web en una guerra, y el paquete todos estos dentro de 1 EAR monolítico; que EAR es entonces enviado a un servidor de aplicaciones (por ejemplo, GlassFish)
  • Muchas orejas diminutas/1 servidor de aplicaciones - paquete de cada componente (cada EJB, y cada servicio web) en su propio JAR/WAR, y luego cada uno JAR/GUERRA en su propio OÍDO; por lo tanto, hay una relación 1: 1 entre componente y EAR; cada oído es entonces enviado a la misma aplicación servidor
  • Muchas orejas diminutas/Muchos appservers - igual que el anterior, excepto que cada EAR "pequeña" se implementa en su propio servidor de aplicaciones; por lo tanto hay una correlación 1: 1 entre el componente y la aplicación de servidor
  • sin orejas/Muchos appservers - Igual que el anterior, excepto eliminar los "intermediarios" orejas y acaba de desplegar cada JAR/WAR empaquetados para su propio servidor de aplicaciones

¿Cuáles son los pros/contras de cada una de estas 4 estrategias? ¿Son algunos más seguros? ¿Performant? Más propicio para la agrupación/replicación? ¿Algunas de estas estrategias son simplemente tontas?!?

¡Gracias de antemano!

Respuesta

2

Las aplicaciones de embalaje no tienen un impacto inherente en la seguridad. El número de servicios expuestos, servidores individuales, puntos finales de solicitud, etc., así como la forma en que los servicios acceden a los recursos que deben protegerse son lo que concierne a la seguridad, no cómo se empaqueta algo.

Dicho esto, el problema principal que está viendo aquí es monolítico vs. modular. Una vez que comprenda que que es el problema principal, toda la literatura existente sobre las compensaciones involucradas son relevantes.

En concreto, se le busca en:

  1. Escalabilidad - Muchas piezas pequeñas son más flexibles a escala, ya que se puede escalar cada pieza en su propio
  2. Complejidad - wireing servicios a pequeñas le permite mantener los servicios individuales mucho menos complejos, ya que tienen que preocuparse por menos cosas
+0

Gracias cdeszaq - ¿entonces usted está diciendo que las prácticas modernas tienden hacia un desarrollo modular más pequeño, basado en "componentes"? Si es así, ¿es justo decir que sería un defensor de muchos EAR/muchos servidores de aplicaciones? ¡Gracias de nuevo! – IAmYourFaja

+0

El desarrollo basado en componentes es definitivamente el favorito actual. Muchos EAR van junto con eso. El número de servidores de aplicaciones en los que se dividen los módulos es un problema de escala, no de embalaje. Comience colocando todas las aplicaciones en un servidor y extráigalas según lo requiera la carga. No optimice la infraestructura hasta que lo necesite. – cdeszaq

+0

Esas dos últimas frases unen todo para mí.Gran respuesta y buen consejo. ¡Gracias! – IAmYourFaja

Cuestiones relacionadas