
Presentación general de lo que ese espera ver en el curso y el proyecto de contexto general que se usará como base para desarrollar el curso.
Te explico brevemente lo que son los microservicios y el estilo de arquitectura de microservicios respecto a otros estilos de arquitectura, para empezar con unas bases solidas.
Te damos las recomendaciones para abordar de manera exitosa el curso y alcanzar tus objetivos, también comentamos porque es importante para ti una buena calificación en el curso, dado que esto ayuda a mantener el curso vigente y que puedes beneficiarte de actualizaciones y nuevos contenidos.
En esta clase aprenderás en que consiste spring framework y spring boot
Te explico porque debemos escoger un IDE que ofresca el mejor equilibrio entre produtividad y sencillez y porque es necesario que todos usemos el mismo IDE para desarrollar el curso.
Te explico como instalar las herramientas requeridas para empezar el desarrollo de microservicios, quien y atenga un entorno de desarrollo podra omitir esta clase.
Esta clase es opcional y enseña como instalar el plugin de lombok requerido en eclipse si usas este IDE.
el Ide recomendado para el curso es Netbeans.
Con esta herramienta podremos trabajar de manera colaborativa para compartir soluciones a los principales problemas, hacer networking, interactuar con otros estudiantes y esplorar diferentes posibilidades y beneficios de las herramietnas de trabajo colaborativo.
Empecemos por definir un caso de estudio o problema de la vidad real que vamos a resolver
Se enseña el paso a paso de como crear un microservicio con el framework de spring boot y se explica en detalle cada una de las propiedades de un proyecto maven.
Se explica en detalle la estructura de un fichero pom.xml, y la importancia de definir el proyecto padre spring boot para cada microservicio.
Se agrega capa de persistencia, capa repository y controler para crear los metodos cruds del microservicios base.
Por actualizaciones y problemas de compatibilidad entre el JDK 23 y Lombok, se sube una actualización para resolver un problema con los getters y setters.
Swagger es una libreria que dota los microservicios con una interface amigable para documetnar y probar los diferentes endpoints, sin necesidad de usar postman o clientes similares.
Vamos a realizar la primera prueba usando swagger que nos facilita estas tareas sin tener que recurrir a un cliente como postman.
Los dos principales enfoques para gestionar un repositorio son el enfoque Monorepo y microrepo.
En un efoque microrepo cada microservicio tiene su propio repositorio de código mientras que en un efoque monorepo, se incluyen multiples microservicios dentro de un mismo repositorio que pueden compartir ficheros de configuración y librerias por ejemplo.
En esta sección vamos a explicar como trabajar con un efoque monorepo y como podemos crear un grupo de microservicios con Maven, que es una herramietna ideal para gestioanr los proyectos de código.
Los projectos de maven giran en torno al fichero pom.xml, en esta clase comentamos su estructura, cual es la estructura estandar de un microservicio y como podemos evitar redundar la definición de dependecias en cada microservicio.
Para poder ejecutar un microserviciodesde varios microservicios en un mismo host, debemos asignar un puerto diferente a cada microservicio y ejecutarlos como un jar desde la terminal.
En esta clase creamos la estructura general propuesta para el repositorio monorepo de nuestros microservicios.
Se pueden definir todas las dependencias, plugins y configuraciones que son comunes para todos los microservicios en el fichero pom.xml del projecto padre, que a su vez será heredado por todos los microservicios hijos que pertenezcan a dicho grupo de microservicios o módulo.
Aqui aprenderás a definir de manera generica dependencias y plugins y heredarlos entre microservicios.
Para aprovechar al máximo la configuracion de un repositorio monorepo con maven, se debe indicar en los microservicios individuales como heredar la configuración.
Introducción a la sección y explicación de como agregar un microservicio de productos y transacciones y como asociar multiples productos a un cliente.
Para hacer coherente la solución y ejemplificar mejor la comunicación entre microservicios, crearemos un microservicio que administre el catalogo de productos y que podamos consultar desde el microservicio de customer.
El microservicio de Customer debe estar en la capacidad de guardar la asosiación de los productos que tiene contratados, se pueden tener varios enfoques y variantes, pero en este caso de estudio agregaremos una nueva clase que represente esa asociación usando JPA
Agregar toda la lógica necesaria a los microservicios para cumplir con los objetivos propuestos en el caso de estudio segun las necesides del negocio.
Para que el framework de Spring boot y JPA pueda persistir o guardar de manera correcta la relación de productos de un cliente, es necesario indicar a cada producto a que cliente pertenece.
Aqui se explica la importancia de comprender que los microservicios son independientes unos de los otros y esto incluye que tienen su propia base de datos y sus propios modelos, de tal manera que el ciclo de vida de cada microservicio sea independiente pero sin perder la cohecion de toda la aplicación.
Existen varias soluciones y librerias para crear clientes Restclient para consumir APIS, Spring boot en las ultimas versiones recomienda y usa WebClient de Spring Webflux, vamos a realizar la configuración básica de webclient.
Para consumir una APi se deben indicar diferentes parametros que pueden variar entre los diferentes entorno, como protocolo, host destino, nombre de la API y el recursos que se desea, adicionalmente es necesario indicar los parámetros que espera el método del API destino.
Por buenas practicas debemos ofrecer diferentes posibilidades de consulta de información en nuestras APIS, por este motivo vamos a crear un nuevo método que noes devuelva el clietne y toda la información adicional de sus productos asociados.
Cuando se trabaja con microservicios es muy comun que se presenten fallas, por ese motivo es muy importante aprender a detectar los puntos de error y como probar y debuguear de manera individual cada microservicio.
En esta actividad comparamos el resultado esperado de la actividad de crear un microservicio para administrar las transacciones e incluirlo en el modulo de businessdomain.
Para asegurar que se han alcanzado los objetivos de esta sección se va a realizar una prueba funcional completa de la solución y se dan recomendaciones y tips adicionales para el cierre de la sección.
El trabajo con microservicios va mas allá del desarrollo e implica otras disciplinas y tecnologías que facilitan la operatividad, despliegue y gestión de los microservicios, como spring cloud, consul o zokiper para administrar la configuración, habilitar la observabilidad e implementar tecnicas de seguridad entre otras características.
Además debemos tener en cuenta como realizar una correcta configuración que pueda ser facil de portar y cambiar entre entornos sin necesidad de recompilar el microservicio cada vez que necesitamos cambiar de entorno.
La técnica más básica y a la vez una de las mas usadas para administrar la configuración de cada microservicio por entorno es el uso de perfiles en ficheros de propiedades.
Se pueden definir multiples ficheros de propiedades, cambiar la configuración de cada fichero y luego indicarle al micro-servicio en tiempo de ejecución que fichero o perfil debería leer cuando inicie y tomar desde allí las propiedades como conexiones a bases de datos, puertos de inicio etc.
La configuración de spring boot, también se pueden definir en formato .yaml y se puede indicar en tiempo de ejecución como los demás ficheros .properties y el efecto es el mismo.
Una breve introducción acerca de que es spring cloud y como podemos externalizar la configuración de los microservicios, en un servidor de configuración.
el servidor spring config requiere un datasource para almacenar la configuración, en esta caso vamos a usar un repositorio de git.
Para que los demás microservicios tengan acceso al servidor de configuración se debe configurar el starter de spring config y las dependencias de spring cloud, se puede hacer en cada microservicio o en un proyecto padre.
Para que un microservicio cualquiera pueda importar la configuración de un servidor de configuración, es necesario modificar sus propiedades para indicarle esto explicitamente e indicar la ruta de dicho servidor.
Para ejecutar el microservicio del servidor de configuración en un entorno de ejecución, es necesario poderle pasar al .jar la ruta donde existe el repositorio de git con los perfiles.
Una de las grandes ventajas que aporta este tipo de enfoques se ven reflejados en tiempo de ejecución en los entornos donde vamos a desplegar la solución final, de tal manera que podamos cambiar de entorno sin necesidad de recompilar el microservicio, aquí enseño como cambiar de entorno cada vez que ejecutamos el microservicio.
Un servidor de registro y discovery permite mantener una especie de inventario de los microservicios y los datos para accederlos, pero además permite acceder a cada microservicio de una manera más sencilla, como su nombre en lugar de una ip y un puerto, y para ello se requiere implementar además otras tenicas como el balanceo de carga de lado del cliente y recursos auxiliares como actuator.
Spring cloud nos ofrece una solución llamada eureka para crear un servidor y los respectivos clientes, en este video veremos como configurar un servidor con lo mínimo necesario.
Para poder usar el servidor de eureka, primero debemos registrar cada uno de los microservicios clientes que queremos usar, vamos configurar el microservicio de productos.
Actuator es un starter de spring cloud que nos permite consultar métricas e información valiosa del estatus de cada microservicio y eureka lo usa para consultar el estado de cada microservicio.
El objetivo de usar un servidor de registro y descubrimiento como eureka es poder facilitar la comunicación entre los microservicios y no depender de una dirección ip y un puerto estático en cada microservicio, sino hacerlo de manera dinámica, para ello vamos a conectar el microservicio de customer e invocar a product por su nombre, a través de netflix eureka
Cuando usamos webclient para invocar a un microservicio que puede tener mas de una instancia en ejecución es necesario implementar también un balanceador de carga del lado del cliente y spring cloud nos ofrece uno llamado Loadbalancer, vamos a ver como podemos implementarlo y usarlo para comunicar customer con producto a través del servidor de eureka.
Existen multiples soluciones para la observabilidad y monitorizacion de los microservicios, todo dependerá del entorno de ejecución, el presupuesto y el tiempo para su complementación,para soluciones sencillas y de bajo presupueste , spring admin es mas que suficiente.
Spring Admin es un proyecto opensource indpependiente que ofrece una solución básica para monitorizar nuestras aplicaciones, aquí te enseño como configurar e iniciar nuestro propio servidor.
Si no se esta trabajando con un servidor de registry and discovery, Es necesario instrumentar cada microservicio con las dependencias necesarias para ser descubiertos por el servidor spring admin.
Spring admin esta en la capacidad de conectarse a un servidor de registry and discovery y descubrir todos los microservicios allí conectados para ser observados.
Una vez tenemos conectado el servidor spring admin a eureka, este esta en la capacidad de descubrir todos los microservicios conectados al servidor de registry and discovery, sin que sea necesario instrumentar cada microservicios de manera individual.
Aprenderás sobre los diferentes estándares que rigen el diseño de las APIs y sientan las bases para las buenas practicas en el desarrollo de microservicios, así como entender la importancia de aplicar estos estándares en el mundo laboral para marcar una diferencia con la competencia.
Es necesario entender los diferentes conceptos que se listan a continuación para trabajar con APIs y poder comprender mucho mejor el enfoque de API first y ponerlo en práctica.
Code first
API first
API documentation
API Specification
API definition
Swagger
Un API es mas que una URL y es muy importante conocer su anatomía tanto para el diseño como para consumirlas como clientes.
El versionado de un API permite implementar diferentes funcionalidades en la misma aplicación dirigida a diferentes clientes que pueden optar por consumir un u otra version de la misma API.
Vamos a estudiar los códigos de estado http tales como el 200 - 404 No found, 403 Forbidden , 400 bad request, 401 unauthorized - 500 y otros menos comunes, veremos cual es su clasificación, el estándar que los rige y la manera correcta en que debemos usarlos.
Se explica los diferentes niveles de los códigos de respuesta http y cual es el standard que los rige, el RFC 7231 del IETF. grupo de trabajo de ingeniería de internet.
Cuando se trabaja con APIs muchas cosas pueden salir mal, hay que definir un estándar correcto para manejar los errores (excepciones) de tal manera que las APIs sean amigable y sobre todo que puedan ser tolerante a los posibles fallos.
Para ello existe un RFC 7807 del grupo de trabajo de ingeniería de internet, IETF que estandariza este manejo y un patron de diseño de orientación a aspectos que propone el framework de spring bot.
Se crea y explica la estructura de la clase estandarizada para el manejo de excepciones según el RFC y la orientación a aspectos de Spring boot.
En esta clase vamos a codificar la primera parte de la solución al problema expuesto anteriormente, vamos implementar un exception handler generido para excepciones genéricas.
Refactorizar el microservicio de customer para incluir una capa de lógica de negocio y manejar excepciones de validacion personalizadas en las APis
Las excepciones personalizadas nos permiten definir los atributos y el comportamiento necesario para tratar reglas o validaciones de negocio que pueden ser retornadas como excepciones y aprovechan la estandarización.
Realizar la ejecución manual de los casos de prueba para validar el manejo de las excepciones técnicas y de negocio y podrás descargar el código fuente del microservicios customer con los cambios realizados.
Breve explicación del patron Saga para el manejo de transacciones distribuidas.
Es importante comprender la arquitectura interna de un microservicio para entender mejor se ubica swagger y porque es importante.
Swagger es una capa adicional que nos permite habilitar un cliente para probar nuestras APis de manera más sencilla, pero adicional nos permite documentar nuestra API mediante el uso de anotaciones de tal manera que se más sencillo para quie va a utilizar el API poder descubrir toda su fun cionalidad y no tener que depender de pesados documentos planos en pdf o word.
Comentaremos la importancia de tener una API bien documentada y veremos las principales anotaciones que nos ofrece spring fox pra la documentacion siguiendo el standar de swagger.
Realizaremos una prueba para ver en acción lo aplicado en en estas dos clases.
Para documentar las clases y los atributos se usan diferentes anotaciones, en esta clase explico cuales son las principales anotaciones para tal fin, cuales son realmente útiles y como usarlas para documentar la entidad Invoice.
El API y sus métodos son la cara visible de nuestro microservicio, si definimos una correcta documentación mediante el standard openAPI y swagger podemos añadir valor a nuestros servicio y disminur esfuerzos de soporte y entrenamiento a los potenciales clientes de nuestra API.
Voy a explicarte cuales son las anotaciones y buenas prácticas que debes tener en cuenta para documentar tu API.
En esta clase se enseña como realizar una separación entre la capa de persistencia y la capa de presentación introduciendo modelos con el fin de tener una aplicación mas limpia y lograr una mejor documentación y presentación de la API.
Se concluye la documetnación de la API en los modleos usando swagger.
Se comenta la libreria lombok y la utilidad que nos aporta.
Vamos a utilizar el miscroservicios billing.
En esta clase se explica como configurar la libreria de MapStruct para que funcione en conjunto con la libreria de lombok medainte el uso del plugin compiler de maven.
En esta clase se enseña como definir los mappers usando mapstruct para conseguir un mapeo automático entre los modelos y las entities, como realizar la configuración del plugin requerido y como realizar los mapeos en la definición del API.
En esta clase se refactoriza el APi, la clase InvoiceController para que utilice los DTO InvoiceRequest e InvoiceResponse y genere los mapeos automáticos con mapstruct
Revisión de la interface swagger del microservicio billing para ver los cambios con la documentación completa de la API, comentarios sobre la utilidad de separar las capas de entidades y modelos y prueba funcional para ver la conversion automática usando mapstructs.
La parte visible de las aplicaciones se conoce como el front y existen diversos enfoque y frameworks para construirlo, pero normalmente se clasifican en serve-side y client-side o aplicaciones front del lado del cliente que se ejecutan en el navegador y aplicaciones del lado del servidor que se se ejecutan en el servidor backend y retornan el código html para mostrarlo en el navegador. de los frameworks mas conocidos y usados del lado del cliente es el framework de angular con typescript.
El enfoque Apifirst consiste en tratar a las apis como el punto de partida para construir nuestras aplicaciones, básicamente permite que primero diseñemos las apis y luego las codifiquemos, y mendiante el uso de herramientas como swagger Editor luego podremos generar automáticamente el código tanto para el cliente frontnend como para el backend.
En esta calse se explica como es un proyecto front en Angular que consume las Apis de un proyecto de spring boot y se explica como y donde descargar el proyecto base de angular.
Con el auge de DevOps, las aplicaciones suelen empaquetarsen en contenedores de docker, una tecnología que permite crear archivos portables, con todo lo necesario para que la aplicación se ejecute y sea completamente independiente del sistema operativo subyacente.
Los contenedores básicamente son un archivo portable que contiene, el ejecutable de la propia aplicación (un jar en el caso de java)todas las librerías, variables de entorno y recursos adicionales necesarios para que la aplicación pueda ejecutarse de manera independiente sobre cualquier engine de contenedores como docker o podman.
Este es un video de apoyo donde enseño como instalar docker sobre un sistema operativo windows, pero lo mas recomendado es seguir la guía oficial., como recurso se deja el enlace a la guía oficial de isntalacion.
Las imágenes de docker se escriben en archivos de texto plano sin extension con el nombre de Dockerfile, podemos usar el soporte de la inteligencia artificial como chatgpt o gemini de google para entregarles un prompt(un enunciado con lo que desamos) y que la inteligencia artificial lo haga por nosotros.
Existen multiples formas para compilar una imagen de Docker, pero la manera mas sencilla para comprenderlo es usando un comando básico de docker de manera manual y luego se podría automatizar el proceso.
Para comprender como se ejecutan los contenedores de manera sencilla y ver los principales commandos de administración de Docker, vamos iniciar el microservicio de customer desde la terminal,.
Aunque no suele ser lo mas habitual en el mundo empresarial si puede ser util en entorno de desarrollo o proyectos pequeños con un repositorio monorepo por ejemplo, usar un plugin de maven para automatizar el proceso de construcción de las imágenes.
Aprende a construir una orquestación de docker compose y como puedes apoyare en la inteligencia artificial usando chatgpt o google gemini.
Con docker no solo podemos empaquetar nuestras aplicaciones sino que también podemos crear servicios de infraestructura como una base de datos postgres en este caso, veremos como iniciar un contenedor de PostgreSQL y como conectar nuestros microservicios a esta base de datos.
Aprende como se administran de maenra conjunata las soluciones de microservicios e infraestructura como bases de datos y otros servicios de manera practica, profesional y sencilla usando un orquestador como docker compose.
¡Domina el Desarrollo de Microservicios y APIs Seguras con Spring Boot - El framework más demandado del mercado!
Curso práctico y Actualizado constantemente!
Este curso te guiará en el dominio de Microservicios y APIs utilizando Spring Boot, Spring Cloud, Docker, OpenAPi, OAuth2 o otras tecnologías fundamentales para crear aplicaciones escalables y seguras que son altamente valoradas en el mercado actual.
¿Qué aprenderás?
Arquitectura de Microservicios: Domina la planificación, diseño y patrones arquitectónicos para crear sistemas distribuidos robustos y escalables.
Desarrollo con Spring Boot y Spring Cloud: Implementa microservicios utilizando Netflix Eureka, Spring Config, Spring Admin, API Gateway y Spring WebFlux.
Seguridad Avanzada: Protege tus APIs con Spring Security, OAuth2, JWT y Single Sign On utilizando Keycloak como proveedor de identidad.
API First Development: Aprende el enfoque moderno de diseño de APIs con Open API Specification, incluyendo generación automática de código y documentación con Swagger.
Containerización con Docker: Empaqueta y despliega microservicios en contenedores, orquestados con Docker Compose para pruebas end-to-end.
Simulaciones de Entrevista con IA: Prepárate para el Mundo Real
En el mercado laboral, la teoría no es suficiente. Por eso, este curso incluye un componente revolucionario: simulaciones de entrevistas y reuniones con Inteligencia Artificial.
Este entorno de práctica seguro te permite:
Dominar Entrevistas Técnicas: Enfréntate a una IA entrenada como un reclutador de alto nivel para dominar tus fundamentos y justificar tus decisiones, superando con confianza cualquier primer filtro.
Defender tu Visión Estratégica: Practica cómo convencer a un CTO o a tu equipo sobre una propuesta de arquitectura, demostrando que tu conocimiento va más allá del código.
Ganar Confianza Profesional: Mejora tus habilidades de comunicación y argumentación para sobresalir en cualquier desafío y asegurar tu posición en el mercado laboral.
¿Por qué elegir este curso? Este curso está diseñado para proporcionar experiencia práctica y profesional en el desarrollo de microservicios:
Enfoque práctico: Desarrollarás un proyecto completo que integra todos los conceptos aprendidos.
Tecnologías actuales: Trabajarás con las herramientas más demandadas en la industria.
Preparación laboral: Obtén las habilidades necesarias para destacar en entrevistas técnicas y proyectos reales.
¿A quién está dirigido?
Desarrolladores que provengan de cualquier tecnología y que buscan especializarse en microservicios.
Ingenieros de software interesados en arquitecturas modernas y APIs seguras.
Profesionales de TI que desean actualizar sus habilidades con Spring Boot.
Cualquier persona interesada en aprender desarrollo de microservicios desde cero.
¿Por qué los microservicios son el futuro? Los microservicios y las APIs seguras son actualmente las habilidades más demandadas y mejor pagadas en el desarrollo de software. Este curso te prepara para:
Diseñar arquitecturas escalables y resilientes
Implementar seguridad empresarial
Desarrollar APIs profesionales
Trabajar con las últimas tecnologías de Spring
¡No solo lo decimos nosotros, lo dicen nuestros estudiantes! Revisa las opiniones de nuestros estudiantes y descubre cómo este curso ha impactado positivamente en sus carreras. La calidad del contenido y el enfoque práctico han ayudado a numerosos desarrolladores a destacar en la era de los microservicios.
Curso constantemente actualizado: Mantente al día con las últimas versiones de Spring Boot y las mejores prácticas en desarrollo de microservicios y seguridad de APIs. Spring Boot 3.x y Java.
Actualizado 2024 - 2025