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. Despliegue de Microservicios en Kubernetes - Cloud José Díaz @jamdiazdiaz

  2. None
  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
  4. joedayzperu

  5. joedayz.pe

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

  7. Arquitectura Final

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

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

  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?
  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
  12. Modelo operacional para Micro Servicios

  13. Docker Otras opciones: Amazon Web Services, Google Cloud, Oracle Cloud,

    WeDeploy, Open Shift, etc.
  14. Docker

  15. Taxonomía Docker

  16. Aplicaciones dockerizadas

  17. Soberanía de Datos

  18. Consistencia entre Micro servicios

  19. Administración de Datos Distribuidos

  20. Usando SAGAS para mantener la data consistente

  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.
  22. Vistas CQRS

  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.
  24. El problema de modificar la base de datos y publicar

    mensajes atómicamente.
  25. Eventuate para Event Sourcing

  26. Eventuate para Event Sourcing

  27. ¿Cómo Eventuate trabaja?

  28. Ejemplo de una transacción (1)

  29. Ejemplo de una transacción (2)

  30. Ejemplo de una transacción (3)

  31. Eventuate Tram para JPA/JDBC

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

  33. Módelos de Dominio

  34. Comunicación

  35. Comunicación Asincrona

  36. Tipos de comunicación

  37. Tipos de comunicación

  38. Tipos de comunicación

  39. Interfaz de usuario

  40. Interfaz de usuario

  41. Implementando Micro Servicios MicroProfile

  42. Implementando Micro Servicios MicroProfile

  43. Implementando Micro Servicios Spring Cloud

  44. None
  45. Implementación de la Arquitectura con Spring Cloud

  46. Orquestando Micro servicios

  47. None
  48. Orquestando Micro servicios

  49. Orquestando Micro servicios

  50. Orquestando Micro servicios

  51. Ciclo interno de desarrollo con Docker

  52. Ejemplo Docker Compose

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

  55. Demo Micro Servicios

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

  57. GCLOUD

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

  59. AZURE CLI

  60. Otros

  61. Open Shift

  62. WeDeploy

  63. Digital Ocean

  64. Jhipster

  65. None
  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.
  67. Microservice Gateway

  68. None
  69. Jhipster Registry 1. git clone https://github.com/jhipster/jhipster-registry.git REGISTRY 2. cd registry

    && yarn && ./mvnw
  70. None
  71. None
  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
  73. None
  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
  75. None
  76. Micro service

  77. 1. jhipster entity product Crear entidad

  78. None
  79. None
  80. 1. En el directorio del Gateway ejecutar: jhipster entity product

    Generar la UI de la entidad Producto
  81. None
  82. Crear el docker compose 1. En el directorio raiz de

    tu proyecto crear un directorio docker 2. Ejecutar jhipster docker-compose
  83. None
  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)
  85. None
  86. Construir para producción 1. En el directorio blog y store

    ./mvnw -Pprod package (-DskipTests)
  87. Construir imágenes docker 1. En el directorio blog y store

    ./mvnw package –Pprod docker:build
  88. Kitematic

  89. Pruebas con Gatling 1. En el directorio blog ejecutar: Ejecutar

    ./mvnw gatling:execute
  90. None
  91. http://localhost:5601

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

  93. None
  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
  95. Desplegando en MiniKube https://goo.gl/QBDwhW

  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
  97. ¿Preguntas?

  98. @joedayz github.com/joedayz informes@joedayz.pe www.joedayz.pe https://speakerdeck.com/joedayz