Arquitectura de Microservicios. Spring boot y Kubernetes
What you'll learn
- Introducción a Arquitectura de Microservicios. Se aprenderá las consideraciones bases para establecer una arquitectura de microservicios
- Pros/Contras de Microservicios de la arquitectura de microserivicios aplicadas a casos de usos reales
- Principios arquitectónicos SOLID. Como aplicar los principios de calidad de desarrollo desde el punto de vista arquitectónico
- Introducción a las herramientas que soportarán la arquitectura de microservicios.
- RoadMap de consideraciones, herramientas, pricipios de desarrollo y patrones para implementar con éxito una aquitectura de microservicios
- Desarrollo de microservicios basado en spring boot. Principios SOLID, arquitectura Hexagonal
- Toda la verdad sobre la arquitectura operacional de microservicios. Cuando aplicarla y como aplicarla sin morir en el intento
- Caso práctico de un microservicio spring boot integrado con componentes de arquitectura operacional
- Componentes arquitectónicos para acelerar los desarrollos
- Reflexion cuando usar los patrones de diseño de arquitectura de microservicios. Event Sourcing, CQRS, Circuit Breaker etc...
Requirements
- Experiencia en el diseño y desarrollo en arquitecturas de microservios
Description
Curso teórico basado en la experiencia profesional en la migración de arquitecturas monolíticas a arquitecturas operacionales basadas en microservicios. Es una secuencia de cursos donde en la introducción se abordarán que es realmente una arquitectura de micro-servicios en la practica, patrones, principios de desarrollo, herramientas y como y cuando implantarlo.
En efoque del curos será orientar la definición y desarrollo con el fin de simplificar una arquitectura que de por si es compleja siguiendo siempre una evaluación y ofreciendo alternativas justificadas para dar soporte a carácterísticas esenciales en la arquitectura de microservicios y siendo crítico con otras prácticas que añaden complejidad y no ofrecen valor funcional.
Se verá cómo Simplificar una Arquitectura de Microservicios
Identificar Dominios Claros (Uso de DDD):
Usar Bounded Contexts para definir responsabilidades bien delimitadas, evitando servicios demasiado grandes o fragmentados.
Adoptar Principios "You Aren't Gonna Need It" (YAGNI):
Evitar añadir funcionalidades o arquitecturas innecesarias desde el principio.
Diseñar los microservicios según las necesidades actuales, permitiendo iteraciones posteriores.
Automatización de Procesos:
Automatizar despliegues, pruebas y monitoreo con herramientas como CI/CD, Kubernetes y observabilidad centralizada.
Uso de Herramientas Estándar:
Emplear frameworks y soluciones probadas para reducir la carga de configuración, como Spring Boot, Spring Cloud, y soluciones nativas de Kubernetes (ConfigMaps, Secrets).
Evitar el Sobre-Fraccionamiento:
Dividir los servicios solo cuando sea necesario, evitando microservicios demasiado pequeños que generan más problemas que soluciones.
Estandarización:
Usar contratos API claros (ej., OpenAPI), convenciones de nomenclatura, y herramientas compartidas para reducir inconsistencias entre equipos.
Impacto de la Simplicidad
Mayor Velocidad de Desarrollo:
La simplicidad permite a los equipos implementar cambios y nuevas funcionalidades más rápido.
Estabilidad Operativa:
Diseños simples son más predecibles, más fáciles de monitorear y menos propensos a errores.
Mejor Experiencia del Equipo:
Los equipos no se ven abrumados por una arquitectura compleja, lo que mejora la productividad y la moral.
Éxito en el Largo Plazo:
Una arquitectura simplificada es más adaptable a futuros cambios y evita la acumulación de deuda técnica.
La simplicidad no implica sacrificar funcionalidad, sino diseñar con enfoque y claridad. Una implementación simplificada de microservicios:
Reduce la complejidad técnica.
Facilita la colaboración entre equipos.
Aumenta la velocidad y calidad de entrega.
Who this course is for:
- Desarrolladores Senior y Diseñadores de arquitectura de software
Instructor
Ingeniero en Informatica de Sistemas desde 2003 y apasionado por el desarrollo de software he participado en la evolución de arquitecturas y ciclos de desarrollo de software durante más de 20 años.
En mis últimos 10 años he participado activamente en equipos de arquitectura para el diseño de aplicaciones complejas para Airbus Militar y participación en migraciones tecnológicas de arquitecturas monolíticas a arquitecturas de microservicios.
En mi última etapa he participado en la integración de arquitecturas operaciones de microservicios con capa de tratamiento del dato para el procesamiento, analíticas e integración con model ML