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.