Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

José Díaz

April 13, 2018
Tweet

More Decks by José Díaz

Other Decks in Technology

Transcript

  1. Despliegue de
    Microservicios en
    Kubernetes - Cloud
    José Díaz @jamdiazdiaz

    View full-size slide

  2. ¿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

    View full-size slide

  3. http://martinfowler.com/articles/microservices.html
    Micro services

    View full-size slide

  4. Arquitectura Final

    View full-size slide

  5. http://www.infoq.com/minibooks/emag-devops-toolchain
    Delivery Continuo

    View full-size slide

  6. Organización
    http://martinfowler.com/articles/microservices.html

    View full-size slide

  7. 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?

    View full-size slide

  8. 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

    View full-size slide

  9. Modelo operacional para Micro Servicios

    View full-size slide

  10. Docker
    Otras opciones: Amazon Web Services, Google Cloud,
    Oracle Cloud, WeDeploy, Open Shift, etc.

    View full-size slide

  11. Taxonomía Docker

    View full-size slide

  12. Aplicaciones dockerizadas

    View full-size slide

  13. Soberanía de Datos

    View full-size slide

  14. Consistencia entre Micro servicios

    View full-size slide

  15. Administración de Datos
    Distribuidos

    View full-size slide

  16. Usando SAGAS para mantener la
    data consistente

    View full-size slide

  17. 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.

    View full-size slide

  18. 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.

    View full-size slide

  19. El problema de modificar la base de datos
    y publicar mensajes atómicamente.

    View full-size slide

  20. Eventuate para Event Sourcing

    View full-size slide

  21. Eventuate para Event Sourcing

    View full-size slide

  22. ¿Cómo Eventuate trabaja?

    View full-size slide

  23. Ejemplo de una transacción (1)

    View full-size slide

  24. Ejemplo de una transacción (2)

    View full-size slide

  25. Ejemplo de una transacción (3)

    View full-size slide

  26. Eventuate Tram para JPA/JDBC

    View full-size slide

  27. Gran Reto: Limites de los Modelos
    de los Micro servicios

    View full-size slide

  28. Módelos de Dominio

    View full-size slide

  29. Comunicación

    View full-size slide

  30. Comunicación Asincrona

    View full-size slide

  31. Tipos de comunicación

    View full-size slide

  32. Tipos de comunicación

    View full-size slide

  33. Tipos de comunicación

    View full-size slide

  34. Interfaz de usuario

    View full-size slide

  35. Interfaz de usuario

    View full-size slide

  36. Implementando Micro Servicios
    MicroProfile

    View full-size slide

  37. Implementando Micro Servicios
    MicroProfile

    View full-size slide

  38. Implementando Micro Servicios
    Spring Cloud

    View full-size slide

  39. Implementación de la Arquitectura
    con Spring Cloud

    View full-size slide

  40. Orquestando Micro servicios

    View full-size slide

  41. Orquestando Micro servicios

    View full-size slide

  42. Orquestando Micro servicios

    View full-size slide

  43. Orquestando Micro servicios

    View full-size slide

  44. Ciclo interno de desarrollo con
    Docker

    View full-size slide

  45. Ejemplo Docker Compose

    View full-size slide

  46. Demo Micro Servicios
    https://github.com/microservices-demo

    View full-size slide

  47. Demo Micro Servicios

    View full-size slide

  48. Desplegando en Google
    Cloud con Kubernetes
    Engine
    https://goo.gl/GJ3PX4

    View full-size slide

  49. Desplegando en
    Azure con Kubernetes
    https://goo.gl/psRDXa

    View full-size slide

  50. Digital Ocean

    View full-size slide

  51. 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.

    View full-size slide

  52. Microservice Gateway

    View full-size slide

  53. Jhipster Registry
    1. git clone https://github.com/jhipster/jhipster-registry.git
    REGISTRY
    2. cd registry && yarn && ./mvnw

    View full-size slide

  54. 1.- https://start.jhipster.tech/jdl-studio/
    2.- https://gist.github.com/joedayz (Obtener entidades de este link para el ejemplo)
    3.- Descargar el archivo de entidades
    Crear Entidades

    View full-size slide

  55. 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

    View full-size slide

  56. Micro service

    View full-size slide

  57. 1. jhipster entity product
    Crear entidad

    View full-size slide

  58. 1. En el directorio del Gateway
    ejecutar:
    jhipster entity product
    Generar la UI de la entidad
    Producto

    View full-size slide

  59. Crear el docker compose
    1. En el directorio raiz de tu proyecto crear un directorio docker
    2. Ejecutar jhipster docker-compose

    View full-size slide

  60. 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)

    View full-size slide

  61. Construir para producción
    1. En el directorio blog y store
    ./mvnw -Pprod package (-DskipTests)

    View full-size slide

  62. Construir imágenes docker
    1. En el directorio blog y store
    ./mvnw package –Pprod docker:build

    View full-size slide

  63. Pruebas con Gatling
    1. En el directorio blog ejecutar:
    Ejecutar ./mvnw gatling:execute

    View full-size slide

  64. http://localhost:5601

    View full-size slide

  65. Kubernetes
    1. En el directorio raiz del proyecto
    jhipster kubernetes

    View full-size slide

  66. 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

    View full-size slide

  67. Desplegando en
    MiniKube
    https://goo.gl/QBDwhW

    View full-size slide

  68. 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

    View full-size slide

  69. ¿Preguntas?

    View full-size slide

  70. @joedayz
    github.com/joedayz [email protected]
    www.joedayz.pe
    https://speakerdeck.com/joedayz

    View full-size slide