Microservicios
1. Qué tecnologías me gusta usar y para qué sirve cada una de ellas
No esperes las definiciones oficiales 😋, esto es lenguaje meramente comunicativo, para dar una idea de mis conocimientos :)
Java 11
Lo mínimo indispensable para usarlo es java 8, ya que ahí se metió el Stream API (predicados y lambdas)
Maven
Es una herramienta de software para la gestión y construcción de proyectos Java, más técnicamente dicho: gestor de dependencias y ciclo de vida
Spring Framework 5
Librerías oficiales de Spring para desarrollo Web, actualmente uno de los Frameworks de desarrollo más profesionales, seguros y usados en entornos de producción reales.
JUnit 5, AssertJ, Spring Boot Test
Testing del código, AssertJ te proporciona aserciones más complejas y variadas que las de JUnit. Springboot test te emula el despliegue de tu proyecto en un entorno (con la config correspondiente: dev, pre, pro...)
Spring WebFlux & Project Reactor
WebFlux te permite hacer microservicios reactivos: aplicaciones que reaccionan a cambios y aceptan peticiones asíncronas. Lo bueno de esto es que tu puedes hacerle millones de peticiones por segundo y te responde muy rápido, por basarse en peticiones asíncronas y no necesita detener siguientes procesos o peticiones de llegada mientras que una se completa.
Project Reactor esto está más enfocado a la cabecera de los métodos dentro de la programación reactiva (usando la anterior). Estas cabeceras trabajan de forma atómica con dos tipos de respuestas: Mono y Flux: respuestas Mono devuelven de 0 a 1 resultados, y respuestas Flux devuelve 0 a n resultados.
MySQL databases
Mi principal experiencia es con base de datos relacionales MySQL y ORACLE.
SpringBoot 2
SpringBoot usa Spring Framework 5.
La diferencia entre Spring Boot y Framework es que el Boot te trae starters que te aportan librerías que necesitas además de un servidor web Tomcat por defecto
Lombok
Herramienta que sirve para evitar el "boilerplate code", es decir, redundancia de código, repeticiones de este. Genera constructores, getters y setters para las clases modelo. Además!! Proporciona SLF4J para el logger.
Jackson o GSON
Te permiten manipular objetos JSON. Jackson usa ObjectMapper para manipular tanto JSON como .xml por lo que es más versátil. Puedes filtrar el JSON también con Jackson para serializar una variable de tu clase, o para ignorar valores nulos...
Springboot OpenAPI
Librería que se está actualizando y va MUY rápido para describir la API REST de nuestro micro, genera las rutas que se generan de nuestro micro al exterior para recibir consultas web y procesarlas.
Spring Boot Actuator
Módulo de Spring que te proporciona endpoints de monitorización de tu micro. Trata de una dependencia en tu pom.xml, Estos endpoints te pueden dar información de si el micro está levantado, qué tecnologías utiliza, parar el micro, Funcionalidades de monitorización, étc.
Spring CLOUD
Configuración, te permite tener varias configuraciones distintas para diferentes entornos, por ejemplo: DEV, PRE, PRO, con sus archivos de configuración respectivos.
CI/CD
4 fases principales: diseño, desarrollo, pruebas, testing.
Por ejemplo: GITLAB, NEXUS, JENKINS, DOCKER y OPENSHIFT. Empieza por Jenkins, herramienta de automatización de procesos, crea pipelines que se ejecutan cada cierto tiempo y se encarga de coger el código de la rama de un repo de GitHub o GitLab, pasa un proceso de calidad de código y compila, sube a Nexus, y después te lo despliega en la máquina remota con Docker y OpenShift, el cual define cuantas instancias de máquina, control de tráfico, etc.)
Kibana / RedHat
Es una solución para facilitar el troubleshooting cuando tenemos que consultar los logs de nuestro servicio. Kibana o RedHat son herramientas que nos permiten ver el historial de logs de nuestro servicio más fácilmente.