lunes, 30 de enero de 2017

Java EE 7 en producción: Manteniendo las luces encendidas

Java EE 7 en producción: Manteniendo las luces encendidas


Una de las cosas más importantes que hacer en esta etapa del ciclo de vida de Java EE es destacar las historias de adopción con éxito en una cadencia regular. La comunidad ha estado haciendo eso por mucho tiempo, incluso en JavaOne. Varias de estas historias están curadas en Zeef.
Sayo Oladeji recientemente acordó compartir una historia de adopción muy genial sobre un sistema de misión crítica para Eko Electricity - uno de los mayores proveedores de servicios públicos de Lagos. Sayo tenía una serie de cosas interesantes que decir acerca de Java EE vale la pena prestar atención. He destacado pasajes específicos que realmente se destacan.



¿Puede presentarse amablemente?


Soy Sayo Oladeji, ingeniero de software de Crown Interactive y cofundador de Hextremelabs. Comencé a programar hace sólo 10 años y, a través de los años, he tenido oportunidades de trabajar en Java SE, ME y EE, y otros lenguajes JVM, como Groovy y Kotlin, así como tecnologías no Java como C # y Javascript.
Gestiono una gran cantidad de integraciones con sistemas de terceros como motores de lotería, pasarelas de pago, sistemas de soporte empresarial, etc.

¿Puede describir la aplicación que utiliza Java EE? ¿Que hace tu compañía?


Crown Interactive es un importante proveedor de tecnología en el espacio de servicios públicos en Nigeria. En la actualidad ofrecemos la tecnología de gestión de ciclo de ingresos (RCM) de extremo a extremo para EK Electricity Distribution PLC (EKEDP), que sirve a la mitad de Lagos. Para ponerlo en perspectiva, Lagos tiene una población de 21 millones (2016) y el crecimiento de alrededor de 85 personas por hora! Además de los servicios públicos, también contamos con un sistema de lotería, un servicio de medios bajo demanda y algunas otras aplicaciones.

¿Por qué eligió Java EE?


Cuando comenzamos a construir nuestros sistemas, teníamos mucha experiencia en Java EE a bordo. Nuestro consultor también era un socio de JBoss. Java EE es un estándar probado y JBoss EAP nos proporciona muchas cosas fuera de la caja. Estos incluyen soporte para servicios web, clustering, transacciones, concurrencia, almacenamiento en caché, mensajería, así como un rico ecosistema de herramientas; La mayoría siendo de código abierto. No fue una decisión muy difícil de tomar.

¿Cómo utiliza la aplicación Java EE?


Comenzamos a construir el sistema de una manera multi-arrendatario, orientado al servicio desde el primer día. Ahora estamos rompiendo algunos de los módulos en microservicios a medida que surgen las necesidades.

    
Usamos JAX-WS muy fuertemente debido al tipo de integraciones que hacemos. JAX-WS + NetBeans hace que las integraciones de SOAP sean una experiencia agradable, probablemente aún más agradable y definitivamente más rápida que REST debido a la naturaleza de auto-documentación de SOAP (WSDL). Las cadenas de manipuladores nos permiten realizar preocupaciones transversales como leer sobres SOAP entrantes y extraer metadatos como información de autenticación e inquilino.


    
Utilizamos JPA a través del tablero para el acceso de datos.


    
Utilizamos JMS para una comunicación fiable y poco acoplada entre servicios con ActiveMQ como intermediario de mensajes y un adaptador de recursos instalado para WildFly para que WildFly administre las conexiones con el intermediario.


    
Utilizamos JAX-RS para las API de REST, que respaldan nuestra interfaz web AngularJS.


    
Utilizamos EJB para manejar nuestra lógica empresarial básica y también para la comunicación entre nuestros microservicios. Por ejemplo, nuestro portal unificado de colecciones (UCG) es un módulo compuesto por 8 microservicios. Una de ellas publica un EJB que coordina las interacciones entre las restantes. La relación jerárquica entre estos módulos también está bien representada en el código fuente como un proyecto Maven multi-módulo.


    
Sobre todo, utilizamos CDI en gran medida. Por ejemplo, nuestras configuraciones se gestionan de forma centralizada en una base de datos. Leemos esto en un caché Infinispan (envíos con WildFly) en el inicio, y de ahí, los productores de CDI los inyectan en frijoles usando calificadores. Esto se hace de una manera segura. El C en CDI es la cosa más fresca. Los miembros del frijol se inyectan basados ​​en el contexto, muy importante para un sistema multi-tenant. Un filtro JAX-RS o una cadena de manejadores JAX-WS configura información contextual antes de que la ejecución llegue a nuestros beans y los productores que estén adaptados al contexto inyecten configuración específica del contexto. No queremos facturar al socio equivocado ni cargar la plantilla de mensaje incorrecto, por ejemplo.

¿Cómo fue su experiencia general con Java EE? ¿Lo usarías de nuevo?


Mi experiencia general con Java EE ha sido muy buena. Java EE + Maven + NetBeans + IntelliJ IDEA es una combinación realmente buena. Existen plugins adecuados para configurar nuestro servidor y manejar nuestras implementaciones, generar documentos API desde los puntos finales REST, generar entidades JPA desde el esquema de la base de datos y así sucesivamente.
Es muy rápido y fácil conseguir un proyecto de trabajo en funcionamiento con Java EE 7. Casi todo es POJO y orientado a anotaciones y los archivos WAR generados son pequeños. EE 7 es de hecho ligero. Antes de usar un servidor completo de Java EE, he usado plataformas basadas en Java como AppEngine y Tomcat, pero generalmente he encontrado que los servidores EE completos como WildFly son mucho más productivos.
De hecho, con el complemento WildFly Maven + plugin Docker, es muy fácil hacer un entorno totalmente funcional y preparado para la nube desde el archivo pom.xml mvn clean install –P prod.


Esto también es excelente para el propósito de la documentación. Simplemente mirando las fuentes, puede decir con confianza cómo se va a ejecutar la aplicación. He tenido un gran tiempo en desarrollo con Java EE 7, y voy a hacer nuevos proyectos con él.

No hay comentarios.:

Publicar un comentario