Duración
36 horas
Introducción
Los microservicios se han convertido en la manera más ágil para desarrollar aplicaciones para clientes o productos. De cara a formar a los alumnos, éstos deben conocer las bases del desarrollo bajo esta nueva metodología y paradigma de desarrollo.
Objetivos
- Saber desarrollar microservicios con la base de Spring Boot.
- Conocer las bases de la programación de Api Rest.
- Saber manejar una conexión a una BBDD relacional desde Spring Data.
- Saber manejar una BBDD NoSQL como MonogDB de manera reactiva.
- Saber Manejar un API Rest de manera reactiva.
- Saber documentar apropiadamente un API Rest con Swagger y OpenAPI.
- Saber conectar microservicios dentro de la arquitectura de manera síncrona y asíncrona.
- Saber manejar conexiones entre microservicios con posibilidad de fallos.
Temario
- Introducción a Microservicios
- ¿Qué son los microservicios?
- Introducción
- Ciclo de vida del desarrollo de software
- ¿Qué son los microservicios?
- Resumen
- Elementos de los microservicios
- Introducción
- Creando monolitos
- Creando Microservicios
- Organización
- Almacén de datos
- Interfaz de usuario
- Servicios
- Servicios Distribuidos
- Seguridad
- Escalabilidad y disponibilidad
- Monitorización
- Despliegue
- Revisando los componentes básicos de microservicios
- Resumen
- ¿Por qué implementar microservicios?
- Introducción
- Desafíos
- Aspectos relativos a negocio
- Aspectos técnicos
- Aspectos relativos a producción
- Resumen
- Microservicios con Spring Boot
- Consideraciones y diseño de microservicios
- Introducción
- De monolitos a microservicios
- Razones para utilizar microservicios
- Razones para no usar microservicios
- Construyendo Microservicios con Spring Boot
- Despliegue de Microservicios: Contenedores y orquestadores
- Consideraciones sobre el bus de servicios y el transporte
- Resumen
- Cómo crear un microservicio
- Introducción
- Modelo de negocio
- Arquitectura de microservicios
- ¿Por qué una arquitectura de microservicios?
- Un primer microservicio
- Consumir y versionar un microservicio
- Generación de clases cliente con OpenAPI
- Uso de GRPC
- Resumen
- Conexión de microservicios de forma sincróna y asincrónica
- Introducción
- Añadir un Microservicio
- Contextos Delimitados
- Implementar comunicación entre servicios
- Comunicación Síncrona y Asíncrona
- Configurar un microservicio para comunicacón asíncrona
- Recepción de mensajes con un bus de servicios
- Envío de mensajes con un bus de servicios
- Resumen
- Conexión a fuentes de datos síncronas y asíncronas
- Introducción
- Conexión a BBDD relaciones
- Entidades relacionales
- Repositorios de Spring Data
- Named Quieries
- Conexión a BBDD reactivas
- Mongo DB
- Conexión a la BBDD
- Documentos y Colecciones
- Repositorios Reactivos
- Comunicación entre microservicios Spring Boot
- Introducción a la comunicación entre microservicios
- Introducción
- La aplicación de ejemplo
- Antes de empezar
- Demo: La aplicación de ejemplo
- Introducción a los servicios de la aplicación de ejemplo
- Comunicación entre microservicios de manera síncrona
- Webclient y Rest Template
- Demostración: Comunicación Sincrónica entre Microservicios
- Trabajar con gRPC
- Demostración: Explorando la versión gRPC de un microservicio
- Desventajas de la comunicación sincrónica entre microservicios
- Resumen
- Documentación de microservicios
- Utilización de Swagger y OpenAPI
- Definición del API
- Exportación de la documentación
- Visualización de la documentación
- Demostración: Publicación de la API usando Swagger
- Comunicación asíncrona entre microservicios
- Introducción
- Agregando comunicación asíncrona
- Demo: Ejecución de la aplicación de ejemplo
- Uso de un bus para la comunicación
- Demo: Comunicación asíncrona entre diferentes microservicios
- Procesos en en segundo plano
- Demo: Añadir un servicio en segundo plano
- Sondeo de un servicio
- Demo: Sondeo de un servicio
- Resolver el problema de la consistencia eventual
- Demo: Explorando el problema de consistencia eventual en la aplicación de ejemplo
- Añadir eventos de integración
- Demo: Añadir eventos de integración a través del bus
- Resumen
- Cómo hacer que los microservicios sean más resilientes
- Introducción
- Posibles problemas de comunicación entre microservicios
- Circuit Breaker Hysxtrix
- Escalabilidad, registro de microservicios
- Resumen
- Acceso a una infraestructura de microservicios
- Demo: Añadiendo un API Gateway
- Agregar diferentes clientes y puertas de enlace
- Demo: Agregar una puerta de enlace para móviles
- Resumen
- Despliegue de microservicios mediante Kubernetes
- Microservicios y contenedores
- Introducción
- Introducción a contenedores
- ¿Por qué utilizar contenedores para microservicios?
- Ejecución en contenedores
- Ejecutar cargas de trabajo de producción en clústers
- K8s: Conceptos
- Conjunto de réplica y despliegue
- Definición de la configuración en YAML
- Actualizaciones
- Gestión de recursos y comunicación entre pods
- Uso de Servicios k8s
- La aplicación de ejemplo y SSL
- Despliegue de la aplicación de ejemplo en K8s desde línea de comando
- Resumen
- Despliegue de microservicios en Kubernetes
- Introducción
- Configuración de un clúster
- Demo: Configuración de un clúster
- Registro de contenedores y seguridad
- Configuración del registro de contenedores
- Estrategias de despliegue
- Desplegar la versión inicial de la aplicación
- Comprobaciones de estado de la aplicación
- Despliegue de una nueva versión sin tiempo de inactividad
- Resumen
- Automatización de los despliegues con DevOps y Gitlab
- Introducción
- CI/CD seguro y conforme a normas
- Un pipeline por microservicio
- Despliegue en K8S usando Gitlab Pipelines
- Resumen
- Actualización de la base de datos en tiempo cero (Zero-downtime)
- Introducción y esquema
- Zero-downtime
- Preparación de una implantación en tiempo cero con un cambio de base de datos
- Ejecución de una implantación en tiempo cero con un cambio de base de datos
- Resumen
- Arquitectura Clean
- Introducción
- Introducción
- Visión general
- ¿En qué consiste Clean Code?
- ¿Por qué invertir en Clean Code?
- Demo
- Resumen
- Arquitectura centrada en el dominio
- Introducción
- Arquitectura centrada en el dominio
- Demo
- Resumen
- Capa de aplicación
- Introducción
- Capa de aplicación
- Demo
- Resumen
- Comandos y consultas
- Introducción
- Comandos y consultas
- Demo
- Resumen
- Organización funcional
- Introducción
- Organización funcional
- Demo
- Resumen
- Microservicios
- Introducción
- Microservicios
- Demo
- Resumen
- Arquitectura testable
- Introducción
- Arquitectura testable
- Demo
- Resumen
- Evolución de la arquitectura
- Introducción
- Evolución de la arquitectura
- Resumen
- Testing
- Definición de pruebas
- Pruebas de unidad
- Pruebas de integridad
- Pruebas de aceptación
- Pruebas estáticas de código
- Pruebas de rendimiento
Pruebas de seguridad