Despliegue de Microservicios en Kubernetes - Cloud

Despliegue de Microservicios en Kubernetes - Cloud

Esta presentación fue para el evento Java UP en la universidad UPICCSA de México DF.
Agenda:
- Que es Microservicios y que problemas se deben resolver
- Que componentes la conforman
- Que retos hay que resolver
- Como se manejan las transacciones en Micro servicios
- Docker
- Docker compose
- Despliegue en Google cloud
- Despliegue en Azure
- Agrege al final JHIpster porque había estudiantes y pense que les sería super útil usarlo en sus proyectos de carrera, clientes, pruebas de concepto, etc.
- Al final les comente que podrían desplegar también lo mismo en minikube.

25322d9a039dd3cbd5ad552f451cf78f?s=128

José Díaz

April 13, 2018
Tweet

Transcript

  1. 2.
  2. 3.

    ¿Quién es José Díaz? Fundador de JoeDayz.pe Arquitecto de Software

    y Consultor Independiente Blogger en blog.joedayz.pe PERU JUG Leader Padre, Esposo, Catecumeno, Delantero o Arquero, Cervecero, Cantor JEspañol
  3. 10.

    Preguntas a Resolver 1. ¿Como se configuraran correctamente todos esos

    micro servicios? 2. ¿Qué microservicios están desplegados y donde están? 3. ¿ Cómo mantengo la información de ruteo? 4. ¿ Cómo prevengo fallas en cascada? 5. ¿ Cómo verifico que todos los servicios están bien de salud y ejecutandose? 6. ¿ Cómo hago el seguimiento de mensajes que fluyen entre servicios? 7. ¿ Cómo me aseguro que sólo los API - Services son expuestos externamente? 8. ¿ Cómo aseguro las APIs de servicio?
  4. 11.

    Componentes Requeridos 1. Servidor de configuración centralizada 2. Servidor de

    Descubrimiento de Servicios 3. Ruteo Dinámico y Balanceo de Carga 4. Circuit Breaker 5. Monitoreo de Servicios 6. Análisis de Logs centralizados 7. Servidor Frontera 8. OAuth 2.0 para proteger las APIs
  5. 14.
  6. 21.

    Las Sagas son un modelo transaccional para la arquitectura de

    micro servicios. Una Saga es una secuencia de transacciones locales. Cada transacción local actualiza los datos en un servicio y envía un mensaje/evento que dispara la siguiente transacción.
  7. 23.

    Las vistas CQRS son una forma de implementar consultas que

    involucran varios servicios en una arquitectura de micro servicios. La vista CQRS es una replica de datos de uno o mas servicios que es optimizado para un particular conjunto de consultas. El servicio que mantiene la vista lo hace suscribiéndose a los eventos del dominio. Cuales quiera sea el servicio, si este actualiza su data, este publica un evento de dominio.
  8. 44.
  9. 47.
  10. 53.
  11. 57.
  12. 59.
  13. 60.
  14. 62.
  15. 64.
  16. 65.
  17. 66.

    Con Jhipster puedes crear aplicaciones monolíticas y de micro servicios.

    Si escoges micro servicios. Tienes que indicar si sera un gateway o un micro servicio.
  18. 68.
  19. 70.
  20. 71.
  21. 73.
  22. 74.

    1. Ir a la carpeta blog (detenido) y ejecutar: jhipster

    import-jdl ~/Downloads/jhipster-jdl.jh 2. Ejecuta /.mvnw y yarn start en ventanas separadas. Importar Entidades
  23. 75.
  24. 78.
  25. 79.
  26. 81.
  27. 82.

    Crear el docker compose 1. En el directorio raiz de

    tu proyecto crear un directorio docker 2. Ejecutar jhipster docker-compose
  28. 83.
  29. 84.

    Probar toda la solución Si no tienes MongoDB: 1. Ir

    a directorio del micro servicio store. (src/main/docker) 2. Ejecutar docker-compose -f src/main/docker/mongodb.yml up (si no tienes mongodb) Si ya tienes asegurarte que este levantado el mongo y luego 1. Ejecutar docker-compose up (con logs) o docker-compose up -d (sin logs)
  30. 85.
  31. 86.
  32. 87.
  33. 88.
  34. 90.
  35. 93.
  36. 94.

    1. Con las imágenes ya creadas de blog y store

    docker image tag blog joedayz/blog docker image tag store joedayz/store 2. En el directorio Kubernetes ejecutar: kubectl apply -f registry kubectl apply -f blog kubectl apply -f store Kubernetes
  37. 96.

    1. Callista Enterprise 2. eventuate.io 3. microservices.io 4. Arquitectura de

    Microservicios en .NET 5. Google Cloud Platform 6. Azure 7. Jhipster Tech 8. Usando Kubernetes en Digital Ocean Bibliografía