Resumen de la JBCNConf 2022

, , ,

Aunque acaba de concluir y aún necesitamos algo de tiempo para procesar todo lo recibido, queríamos compartir nuestra experiencia en la JBCNConf 2022, el evento nacional de referencia en tecnología Java organizado por Barcelona Java User Group.

Las expectativas eran altas ante la agenda que planteaba el evento y el interminable listado de sponsors que mostraban así su apoyo a nuestra comunidad: Red Hat, Ocado, Adevinta, Dynatrace, Lifull Connect, Gradle, Oracle, Wallapop, Idealista, Adobe, Revolut, etc. Resulta casi imposible conocer todos los nombres de las empresas que se han dado cita en la JBCNConf, pero hemos tenido la oportunidad de descubrir a muchas de ellas por las cosas tan increíbles que están haciendo.

En cuanto a las sesiones programadas a las que hemos podido asistir, queremos destacar la pasión de los speakers, referentes o “Java Champions” cuya experiencia nos ha dado perspectiva y nos ha servido de inspiración. ¿Y de qué nos han hablado?

To Java to Beyond

Billy Korando, Java Developer Advocate Oracle, presentó los cambios destacados desde Java 11 a 18 con pequeños ejemplos de código:

  • Switch. Podremos utilizar expresiones lambda para definir cada case.
  • InstanceOf. Al evaluar la clase a la que pertenece, directamente podremos obtener una instancia de esa clase y usarla dentro del if.
  • Sealed classes. Si marcas una clase/interface como sealed te permite indicar qué clases podrán extender/implementar de esta.
  • Records. Un método rápido de crear clases inmutables que simplemente contengan datos (los anteriores POJOs o DTOs).
  • Pseudo Random Number. Mejoras al buscar números aleatorios con nuevas implementaciones.

También nos permitió echar un pequeño vistazo a las principales novedades que nos esperan en Java 19 de las que destacamos:

  • Resolution SPI Internet Address.
  • CDS archive. Mejoras en los binarios que se generan para arranques rápidos.
  • Simple Web Server. Puedes tener un servidor web levantado en 1 segundo.
  • NullPointerException. Información real y útil para saber el motivo del error. Lo mejor de todo. ¿Diremos adiós a este error algún día?

Gestión automatizada de servicios en entorno cloud Nativo

Alex Soto, director de Developer Experience en RedHat, presentó dos proyectos o suites de herramientas muy útiles para administrar los servicios en la nube: Istio y Knative. Ambos permiten aplicar en Cloud Continuous Integration (CI), Continuous Deploiment (CD) y automatizar tareas de gestión.

  • Istio. Puede, entre otras cosas, detectar los cambios subidos a Git y desplegarlos automáticamente en producción, monitorizar tus servicios o redirigir tráfico entre versiones de una Api en vivo.
  • Knative. Puedes gestionar automáticamente, con configuración por parámetros, qué servicios (que no están siendo utilizados) se paren para no malgastar recursos; o justo lo contrario, cuando se cumplan criterios de necesidad de uso que se escale levantando nuevos nodos para atender a la demanda.

Una manera muy sencilla de gestionar toda esa complejidad de tus recursos en Cloud.

Servicios reactivos, rápidos, asíncronos y sin bloqueos.

En la ponencia impartida por el mexicano Alberto Salazar (Java champions, embajador Oracle, JUG líder…) vimos ejemplos de código y diapositivas. Alberto también ofreció algunos trucos, consejos, pros y contras para mover un código a una aplicación sin bloqueos. Para ello, utiliza estrategias con desarrollo reactive, en post de otras estrategias basadas con microservicios.

El testing no puede faltar nunca

Marit van Dijk, en su charla “Use Testing to Develop Better Software Faster”, nos habló de la importancia de un correcto testeo del código desarrollado, equiparando a los test con el propio desarrollo en cuanto a nivel de importancia.

¿Cuántas veces compilamos Maven con la coletilla de -DskipTests a true? Esta misma vergonzosa pregunta nos hizo Marit durante su ponencia. La respuesta la conocemos todos y deja en evidencia la poca importancia que a veces se le dan a los procesos tests en algunos momentos de desarrollo.

Monitorización de servicios con herramientas Open Source

Fabian Stäber, senior Engineering Manager en Grafana, hizo una introducción a un grupo de herramientas open source que te ofrecen muchas posibilidades bajo el paraguas del proyecto Grafana.

  • Grafana. Dashboard para visualizar gráficas, hacer consultas sobre los datos de monitorización o definir alertas.
  • Prometheus. Recopila y almacena información de métricas y permite ejecutar consultas complejas (monitor de Kubernetes y Cloud Native).

Los datos que muestran y almacenan estas herramientas los obtienen a partir de otros tres recursos que recopilan y persisten diferentes tipos de información de la ejecución de los servicios:

  • Loki. Sistema de agregación de logs.
  • Tempo. Registro de las trazas de ejecución, el flujo de llamadas entre servicios en entornos distribuidos.
  • Mimir. Registra métricas (tiempos de respuesta, etc.).

Un gran ecosistema para saber qué ocurre en cada momento en los servicios en producción, son tus ojos (para ahorrarte eso de dejarte los tuyos mirando miles de líneas de ficheros de logs a mano).

Microservicios Java modernos, ¿qué significa realmente?

Andrzej Grzesik, de Revolut, contó su forma de ver el desarrollo de Microservicios mostrando las decisiones que ha tomado pensando en el futuro y evolución de los servicios que implementa.

Primero de todo ¿qué significa ser moderno? Para él, los servicios no deben depender del framework o tecnología que utilizas, es más bien una filosofía.

Algunos de sus principios:

  • Sencillos.
  • Fáciles de comprender.
  • Código visible
    • Inyecciones por constructor.
    • Nada de herramientas mágicas, que no se ve el código que generan.
  • Testeado.
  • No versionar. Directamente forzar a usar la última versión y no mantener un árbol de versiones difíciles de mantener.
  • En algunos casos es mejor y más eficiente una interacción entre servicios mediante tareas batch antes que con eventos.

Optimizar y acelerar los servicios

Observamos una tendencia generalizada en el sector del uso de Spring para el desarrollo en Java como primera opción entre los profesionales, ya sea por inercia, por lo extendido y maduro, por su potencia o versatilidad y diferentes escenarios donde puede usarse. Pero existe mundo más allá de Spring. Hablamos de marcos Open Source, con lanzadores de código y que trabajan bajo la JVM.

En la tercera posición de uso más extendida tenemos Micronaut. El creador del producto, Graeme Rocher, y su colega Álvaro Sánchez-Mariscal Arnaiz, expusieron las bondades de Micronaut (Oracle) con respecto a sus competidores.

Dada su característica principal de diseño, pensado para evitar los procesos de reflexión de Spring, reduce mucho el consumo de memoria y mejora los tiempos de inicio. Las funciones que normalmente se implementarían en tiempo de ejecución se calculan previamente en tiempo de compilación.

Mediante una demo pudimos ver cómo, efectivamente, los tiempos de respuesta en desarrollo de varias aplicaciones construida con Micronaut son muy bajos y el end point responde de forma casi inmediata a cambios en código; el proceso de parar y arrancar era ínfimo. Y este punto quizá sea el más potente del uso de Micronaut, el resultado del producto con respeto a otros marcos planteados tal vez sea similar, pero para el desarrollador, la experiencia de usuario durante el tiempo de desarrollo parece mejorar y tener muchos menos tiempos de espera.

Ambos ponentes afirman que sus dos productos estrella y objeto de la ponencia Micronaut y GraalVM, aunque no son ni dependientes ni excluyentes, sí van de la mano. Los equipos de desarrollo y mantenimiento de ambos productos trabajan codo con codo y tienen una gran comunicación interna de trabajo, por lo que es una apuesta segura el uso en conjunto de ambos.

Se hicieron también demostraciones reales de uso de Micronaut Data donde comprobar algunas de sus principales características: persistencia SQL y BBDD, acceso sin bloqueos con R2DBC, transacciones programáticas y declarativas, eventos, search criterio.

¿Qué recursos Cloud necesita tu organización? Depende

Rustam Mehmandarov, Ingeniero en Computas, y Ana-Maria Mihalceanu, Developer Advocate en Red Hat, hablaron de las incertidumbres y dudas continuas que se plantean a la hora de darle forma a los proyectos o sistemas Cloud en una empresa.

Aquí os dejamos alguna reflexiones al respecto:

  • Nunca hay una respuesta única y absoluta, siempre depende de tus necesidades. No debes tampoco obsesionarte pensando que la decisión tomada tendrás que llevarla hasta la tumba.
  • Si decides usar los servicios de Amazon WS, no será un matrimonio para toda la vida: si tus servicios son estándar y están bien construidos, siempre podrás pivotar a otro proveedor.
  • ¿Un Cloud privado? ¿Mantenerlo y gestionarlo tú mismo/a desde dentro? Piensa en tus recursos y, si puedes abarcarlo, adelante.
  • Puede ser que el Cloud no este hecho para ti. No pasa absolutamente nada.
  • No te bloquees y avanza, peor es no hacer nada. Siéntete libre de elegir lo que más te convenga en ese momento.

Kafka y Big Data

Ko Turk presentó una forma ágil y útil de comunicar los microservicios mediante mensajes, usando tópicos y utilizando estos mismos micros como consumer o producer. Mostró también la posibilidad de usar la utilidad kafka-streams para gran cantidad de datos con Big Data y enseñó cómo monitorizar estos procesos con Actuator.

El rendimiento excepcional de Kotlin

Severn Everett sorprendió con una divertida y didáctica clase sobre cómo hacer unas excepciones útiles y con buen rendimiento.

Presentó unos fundamentos a la hora de crear excepciones con Kotlin extraídos del libro publicado por Aleksey Shipilëv en 2014, “The Exceptional Performance of Lil’ Exception” (El Rendimiento Excepcional de Excepcioncita), explicándolos de una forma entretenida y poniéndolos en práctica en directo.

Diagrams as code 2.0

Simon Brown, creador de c4model.com y structurizr.com, presentó una forma fácil, útil y tremendamente configurable para hacer diagramas dinámicos mediante ficheros UML con Structurizr DSL. Nos sorprendió especialmente la facilidad con la que el framework genera los diagramas solo configurando el UML.

En esta sesión pudimos aprender un modelo predefinido a 4 niveles de presentaciones en formato diagramas recurrentes. Encontramos así una herramienta open-source que puede dar un paradigma y modelo cerrado para modelar tus esquemas de relaciones de forma óptima, exportar los diagramas generados a imagen, SVG o HTML, embeber en web o utilizar su modo de presentación.

Especial mención para el proyecto java de Structurizr, disponible en Git-hub. Se trata de una librería oficial en java de un cliente Structurizr para generar nuestra estructura para modelos de arquitectura de software basados ​​en el modelo C4 usando código java.

Ideas locas. ¿Las aplicaciones tienen memoria? ¿Pueden buscar entre sus recuerdos como un humano?

Después de iniciar su sesión con el viíeo de la gran canción friki “Big Rewrite, Milen Dyankov, Developer Advocate en AxonIQ, dejó caer una pequeña semilla, una idea y dejó que creciera.

Las aplicaciones solo suelen guardar el estado actual del sistema, no guardan un histórico, e incluso en ese caso sólo se guarda una parte, muy concreta, lo que sabes ahora que necesitarás en el futuro (un poco presuntuoso, ¿no?). Pero hay otra forma de obtener el estado actual de un sistema: almacenar todos los cambios y reconstruir su estado a partir de los cambios pasados. Lo que deberías hacer es ir almacenando esos eventos obteniendo un Event Store, un almacén.

Sus aplicaciones en eCommerce son infinitas: guardar eventos para obtener estados pasados y conseguir la información de qué usuarios y qué productos estuvieron a punto de comprar, tener un sistema en que directamente pudieras levantar un servicio nuevo con descuentos, mantener la campaña y el servicio, y luego eliminarlo, etc.

Pues eso ya lo tiene Axon, la empresa de nuestro amigo (Axon Framework y Axon Server). Desafortunadamente nos quedamos con las ganas de ver la demo que tenía preparada.

Programador/ingeniero busca tu marca personal

Como no todo es Java y programar, también asistimos a la ponencia impartida por Helen Scott y Sven Peters (juntos suman mas de 40 años de experiencia como profesionales), donde abordaban la idea de que un buen programador no tiene por qué ser un buen jefe de proyecto. Partiendo de esa base podemos romper con la tendencia habitual de algunas empresas de seguir esa línea de crecimiento para sus empleados.

Con idea de romper dicho esquema, propusieron que la carrera profesional de un/a desarrollador/a Senior podría evolucionar así: Staff Engineer → Principal Engineer → Distinguished Engineer.

Y el camino de un desarrollador dentro de la propuesta de crecimiento nombrada, podría ir hasta el infinito de la galaxia: orientado a operaciones, al producto, al consumidor, a la investigación, a la formación, etc.

Desmintieron también el mito de considerar que es un error para el/la desarrollador/a no moverse dentro de la misma empresa en muchos años, siempre y cuando el crecimiento sea interno.

Sea hacia donde sea, para la promoción de la marca personal es necesario estar en continuo proceso de aprendizaje, leer libros y acudir a formaciones, hacerse visible en redes, participar en proyectos open source, sociabilizar en eventos como la propia JBCNConf o proponer ponencias similares a las que se imparten.

En resumen

Con la inspiradora sesión de Javier Santaolalla, que cerró las jornadas invitándonos a ver más allá del universo, nos traemos un montón de deberes, nuevas ideas y herramientas a probar que seguro mejorarán nuestra vida como desarrolladores, y mucha motivación para seguir creciendo como profesionales.

Por motivos de agenda no pudimos asistir a los talleres programados, pero nos quedamos satisfechos después de todo lo compartido (además de las risas, comidas, charlas informales, regalos y buen rollo).

Ha sido una gran experiencia, super enriqora y muy motivante. Volveremos.

Web Team
ALTEN