1
Introducción
- Una mirada a la evolución de los programas informáticos y la organización.
- Ventajas e inconvenientes de las aplicaciones monolíticas.
- Metodologías ágiles y prácticas DevOps.
- Procesos de integración y despliegue continuos.
2
Arquitecturas de microservicios
- Definición de una arquitectura de microservicios.
- Características de los microservicios.
- La aparición de arquitecturas de microservicios.
- Los actores principales.
- Algunos ejemplos de los gigantes de la Web.
3
Comunicaciones en una arquitectura de microservicios
- Elección del estilo de colaboración: REST request/reply frente a Publish-Subscribe Messaging.
- Conceptos básicos de HTTP y recordatorios.
- Implementación de servicios REST con Java.
- El principio HATEOAS.
- Documentación de un servicio REST con Swagger.
- Probar un servicio REST.
Trabajo práctico
Definir una API Rest con Swagger e implementar servicios con Jersey. Probar un servicio REST con SoapUI.
4
Desarrollo de un microservicio en Java
- Presentación de frameworks Java todo en uno.
- Comparación entre SpringBoot y Dropwizard.
- Desarrollo de una aplicación con Dropwizard o SpringBoot.
- Empaquetar una aplicación lista para producción.
Trabajo práctico
Desarrollo de una aplicación con Dropwizard o SpringBoot.
5
Ejecutar un micrcoservicio utilizando contenedores
- Introducción a Docker.
- Cómo funcionan los contenedores con Docker.
- Diseñe imágenes personalizadas.
- Configuración e inicio de contenedores.
Trabajo práctico
Creación de un contenedor personalizado con Docker.
6
Despliegue de una arquitectura de microservicios
- Técnicas de optimización del despliegue.
- Implementación de una aplicación multicontenedor con Docker Compose.
- Soluciones de infraestructura para microservicios (Kubernetes, Mesos, Swarm).
- Soluciones en la nube (Cloud Foundry, Heroku).
Trabajo práctico
Configuración de una arquitectura multicontenedor con Docker Compose.
7
Administración y control
- Centralización de los registros.
- Monitorización de microservicios.
- Métricas y chequeo.
Trabajo práctico
Establecer métricas para que una aplicación las visualice.