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 Slide

  2. View Slide

  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

    View Slide

  4. joedayzperu

    View Slide

  5. joedayz.pe

    View Slide

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

    View Slide

  7. Arquitectura Final

    View Slide

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

    View Slide

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

    View Slide

  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?

    View Slide

  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

    View Slide

  12. Modelo operacional para Micro Servicios

    View Slide

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

    View Slide

  14. Docker

    View Slide

  15. Taxonomía Docker

    View Slide

  16. Aplicaciones dockerizadas

    View Slide

  17. Soberanía de Datos

    View Slide

  18. Consistencia entre Micro servicios

    View Slide

  19. Administración de Datos
    Distribuidos

    View Slide

  20. Usando SAGAS para mantener la
    data consistente

    View Slide

  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.

    View Slide

  22. Vistas CQRS

    View Slide

  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.

    View Slide

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

    View Slide

  25. Eventuate para Event Sourcing

    View Slide

  26. Eventuate para Event Sourcing

    View Slide

  27. ¿Cómo Eventuate trabaja?

    View Slide

  28. Ejemplo de una transacción (1)

    View Slide

  29. Ejemplo de una transacción (2)

    View Slide

  30. Ejemplo de una transacción (3)

    View Slide

  31. Eventuate Tram para JPA/JDBC

    View Slide

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

    View Slide

  33. Módelos de Dominio

    View Slide

  34. Comunicación

    View Slide

  35. Comunicación Asincrona

    View Slide

  36. Tipos de comunicación

    View Slide

  37. Tipos de comunicación

    View Slide

  38. Tipos de comunicación

    View Slide

  39. Interfaz de usuario

    View Slide

  40. Interfaz de usuario

    View Slide

  41. Implementando Micro Servicios
    MicroProfile

    View Slide

  42. Implementando Micro Servicios
    MicroProfile

    View Slide

  43. Implementando Micro Servicios
    Spring Cloud

    View Slide

  44. View Slide

  45. Implementación de la Arquitectura
    con Spring Cloud

    View Slide

  46. Orquestando Micro servicios

    View Slide

  47. View Slide

  48. Orquestando Micro servicios

    View Slide

  49. Orquestando Micro servicios

    View Slide

  50. Orquestando Micro servicios

    View Slide

  51. Ciclo interno de desarrollo con
    Docker

    View Slide

  52. Ejemplo Docker Compose

    View Slide

  53. View Slide

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

    View Slide

  55. Demo Micro Servicios

    View Slide

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

    View Slide

  57. GCLOUD

    View Slide

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

    View Slide

  59. AZURE CLI

    View Slide

  60. Otros

    View Slide

  61. Open Shift

    View Slide

  62. WeDeploy

    View Slide

  63. Digital Ocean

    View Slide

  64. Jhipster

    View Slide

  65. View Slide

  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.

    View Slide

  67. Microservice Gateway

    View Slide

  68. View Slide

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

    View Slide

  70. View Slide

  71. View Slide

  72. 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 Slide

  73. View Slide

  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

    View Slide

  75. View Slide

  76. Micro service

    View Slide

  77. 1. jhipster entity product
    Crear entidad

    View Slide

  78. View Slide

  79. View Slide

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

    View Slide

  81. View Slide

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

    View Slide

  83. View Slide

  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)

    View Slide

  85. View Slide

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

    View Slide

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

    View Slide

  88. Kitematic

    View Slide

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

    View Slide

  90. View Slide

  91. http://localhost:5601

    View Slide

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

    View Slide

  93. View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  97. ¿Preguntas?

    View Slide

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

    View Slide