
Introducción al curso de aquitectura de microservicios y porque el uso de un orquestador para la implementación de escenarios complejos como SAGAS, transacciones distribuidas etc....
En esta clase se verá que es Temporal y como nos proporcionarun marco de trabajo para la orquestación de procesos y tareas en entornos distribuidos. Como su diseño ayuda a los desarrolladores a construir aplicaciones escalables y resilientes, gestionando la ejecución de actividades en un entorno distribuido de manera confiable ideal para implementar escenarios complejos de microservicios
En la clase se verá la arquitectura de Temporal y como su diseño proporciona una plataforma robusta y escalable para la orquestación de procesos y tareas en entornos distribuidos. Se verán los componentes principales y las carácterísiticas que nos proporciona para la gestión en procesos en particular el concepto de durabilidad de estado.
En la clase se verá de forma detalla con un ejemplo y diagrama de componentes como funciona y orquesta temporal.
Se verá en detalle las comunicaciones y se introducirá un ejemplo básico se comunicación entre microservicios y transacción distribuida como se gestiona con temporal introduciendo conceptos como worker, worflow, actividad etc...
En la clase se revisará casos de usos comunes en arquitectura de microservicios que es preciso la incorporación de un orquestador de procesos. Así se realiza una comparativa con orquestadores que nos ayudará a compreder como funciona temporal y usar el orquestador correcto para el caso de uso que más se ajusta a su arquitectura y propósito
En la clase se verá ya conceptos muy concretos de temporal como Workflow, Activity y Workers y se profundizará en como está implementado y orquestado por temporal y como desarrollamos nuestra lógica de negocio orientada a flujos de trabajo.
En la clase se verá como montar un entorno local de desarrollo con todo lo necesario para poder empezar a programar workflows sobre temporal.
En esta clase se verá como integrar un microservicio spring boot como worker de temporal y se proporciona un ejemplo que se irá desarrollando a lo largo del curso.
Todo el ejemplo e implementaciones irán dirigidas a usar las capacidades de temporal integradas con spring framework , es decir crearemos configuraciones y gestionaremos beans y daremos una base para poder integrar de forma eficiente spring boot con temporal.
En esta clase se verá como se implementa un workflow sobre un microservicio spring boot y es ejecutado sobre temporal. Se verá las anotaciones exenciales así como el uso de todas las clases de configuración creadas como beans integradas en un servicio y como ya es posible lanzar workflow como parte de una funcionalidad invocado desde una petición rest por parte de un usuario
En esta clase se continuará con el ejemplo anterior donde se ejecutaba un workflow inicizalido con valores por defecto y se profundizará en un aspecto muy importante que es el tratamiento de workflowId que nos servirá junto con la especificación de una política correcta poder tener un control de concurrencia sobre recursos compartidos.
En la clase se verá mediante el ejemplo el comportamiento de temporal ante diferentes configuraciones.
En esta clase continuando con el ejemplo se profundizará en aspectos de configuración para tener el control de ejecución de workflow en temporal especialmente el time out y la política de reintentos.
Se verá mediante un ejemplo como funciona temporal ante excepciones y las consecuencias de ejecutar reintentos a nivel de workflow.
En esta clase se verá dos conceptos muy importantes para poder interactuar con la ejecuciones de workflow, las señales y los Query Method.
Ampliando el ejemplo se verá como podemos apoyarnos en señales para influir sobre la ejecución de un workflow incluso ver como podemos enviar señales para que el workflow tome decisiones de control así como podemos realizar consultas sobre valores intermedios que son importantes para poder implementar una lógica de negocio mayor en funcion del estado de los workflows.
En esta clase se realiza una pequeña retrospectiva para ver lo importante que es tener un control sobre las caracterísiticas vistas en la sección y no dejar los workflow con una configuración por defecto en entornos productivos ya que tenemos que tener claro cual va a ser el comportamiento esperado.
En esta clase se profudiza más en el termino de actividad y en el uso del sdk para poder definir con anotaciones actividades y métodos que puedan ser instanciados desde el workflow y ejecutadas.
En esta clase se profundizará en las actividades y el concepto de Local o Remote y como temporal orquesta la ejecución de las mismas.
También al igual que en la sección de Workflows se verá en detalle parámetros de configuración para gestionar reintentos, envíos de heartbeat para tener un control total sobre las ejecuciones de las actividades.
En esta clase se profudizará en la parametrización de tiempos de ejecución de una actividad con el fin de tener el control sobre el tiempo de ejecución de la misma con el fin de no tener ejecuciones paradas de workflow ocupando recursos de manera indefinida debido a errores
En esta clase se verá la gestión manual del contexto de ejecución de una actividad con el fin de tener el control de los estados de ejecicón, manejo de hearbeats, manejo manual del estado de una actividad.
En esta clase se verá la ejecución asincrona y paralelas de actividades por parte del workflow para aumentar la concurrencia y mejorar los tiempos de ejecución en workflow donde las actividades pueden paralelizarse.
En la clase se profundizará sobre el concepto de namespace en temporal como forma de ailamiento físico de las ejecuciones de los workflows así como mecanismo lógico de separación responsabilidades
En la clase se verá mediante el sdk la implementación de un servicio para poder manejar los namespaces y crear nuevos teniendo en cuenta criterios como el timpo de retención y archivado del mismo
En esta clase se verá como se accede mediante el SDK a la consulta de historificación de la ejecución de un workflow y comprobar que podemos tener acceso a toda la información con el fin de poder explotarla como auditoría, sincronización de procesos etc...
En la clase mediante un ejemplo se comprobará las capacidades de temporal para recuperarse ante errores tanto en los microservicios como en el orquestador de forma que se pueda retomar la ejecución en un punto determinado proporcinado la capacidad buscada que es soporte a workflow de larga duración manteniendo un estado y un punto de ejecución
Clase de retrospectiva donde se realizará revisión de lo visto hasta ahora y volviendo a analizar las caráteríticas de temporal una vez visto en base a ejemplos.
Clase donde se expone la siguiente parte del cursos una vez entendidas las capacidades de Temporal. Se analizarán los patrones y escenarios donde Temporal puede ayudarnos a la implementación de casos de usos complejos mitigando el riesgo de errores y acelerando nuestros desarrollos
En la clase se verá de forma breve un repaso de la arquitectura de microservicios, carácterísticas y retos que son dificiles de abordar y se irá viendo de una pespectiva de diseño como encaja el uso de temporal en casos de uso complejos en arquitecturas distribuidas
En la clase se repasarán patrones en arquitectura de microservicios que son necesarios para solucionar retos como procesamiento por lotes, transacciones distribuidas y se irá viendo una visión aquitectónica de los retos que son necesarios implementar.
En la clase se verá una pespecitiva nueva de la implementeción de una aplicación siguiendo los patrones event sourcing, event driven y orquestación realizando un análisis en base a complejidad y riesgos de la toma de desión de un un modelo u otro y el impacto en una arquitectura distribuida
En la clase se verá desde una pespectiva de diseño y de definición de comportamiento de nuestra aplicación así como desde una pespectiva de arquitectura distribuida que escenarios implican una complejidad mayor y como Temporal puede ayudarnos a reducir riesgos y a tener un acelerador de desarrollo ya que sus carácterísticas encajan en la definición de patrones desde un punto de vista de diseño
En esta clase se validará la selección de un framework para facilitar la integración de microservicios spring boot con temporal con el fin de acelerar el desarrollo de aplicaciones.
En esta clase se valida el framework oficial de temporal que facilita la integración se los microservicios spring boot con Temporal y se revisa los criterios de aceptación y riesgos de usarlo
En esta clase se intenta tener una visión de como desarrollar nuestro propio framework praa tener el control total sobre las caracterísiticas de SDK y validando los riesgos y características a la hora de dar soporte a un framework propio
En la clase se verá de forma teorica los escenarios complejos de transacciones distribuidas y patrones actuales validados para implementar de forma eficiente el caso de uso complejo que se validará desde el punto de vista de SAGA orquestada implementada bajo temporal
En esta clase mediante un ejemplo de código se verá como apoyandonos en temporal cumple con todas las características para implementar el patrón y tambien el uso de abstracción que proporciona el SDK de temporal para la implementación explícita del patrón
En esta clase se analiza la complejidad de implementación del procesamiento por lotes en una arquitectura de microservicios sin comprometer las características de escalabilidad y resilencia. También se hará un análisis de los patrones para la implementación y como temporal nos ayuda en uno de los patrones para soporte al procesamiento por lotes
En esta clase se profundiza sobre las características que proporciona temporal (Scheduler Workflows y Childs Workflows) que nos ayudarán a implementar el procesamiento por lotes de forma que se pueda escalar horizontalmente y tengamos control absoluto sobre la ejecución global del proceso
En esta clase mediante código de ejemplo se explica la implementación de scheduler workflow y childworkflows de forma que podamos implementar un procesamiento por lotes paralelizando tareas y teniedo control absoluto de la ejecución y permitir la escalabilidad horizontal en el procesamiento por lotes
El objetivo de un curso es conocer la herramienta completa Temporal y sus capacidades y centrar el caso de uso hacia la integración con Spring Boot con enfoque en arquitecturas de microservicios y aspectos temporales.
Proporcionará a los participantes las habilidades y conocimientos necesarios para diseñar, desarrollar e implementar aplicaciones empresariales modernas y escalables utilizando estas tecnologías distribuidas y enfrentarse a los problemas más complejos en una arquitectura de microservicios.
Comprender los Fundamentos de Temporal:
Adquirir conocimientos sólidos sobre el marco de desarrollo con Temporal y casos de uso donde se puede aplicar la herramienta.
Comprender los Fundamentos de Spring Boot:
Adquirir conocimientos sólidos sobre el marco de desarrollo Spring Boot integrado con Temporal.
Gestionar la Persistencia de Datos:
Integrar bases de datos y utilizar tecnologías de persistencia de datos con transacciones distribuidas
Integración de Servicios con Eventos Temporales:
Coreografía y Orquestación.
Monitoreo y Gestión de Microservicios en transacciones complejas
Conocer las mejores prácticas para el monitoreo y la gestión de microservicios en producción.
Proyecto Práctico:
Aplicar los conocimientos adquiridos en un proyecto práctico que simula un escenario real.
Así permitirá a los desarrolladores y arquitectos tener un amplio enfoque de las capacidades de Temporal para la implementación de casos de uso complejos fuera de la arquitectura de microservicios e integrados con otras tecnologías.
Este tipo de curso debería proporcionar a los participantes las habilidades necesarias para trabajar en entornos de desarrollo y proyectos que utilicen Spring Boot y arquitecturas de microservicios, integrando también la gestión de eventos temporales para mejorar la eficiencia y la capacidad de respuesta del sistema.