muy buen video, me encantaría puedas crear tu propia librería, así explicarías bien cómo crear una librería de 0 usando otras librerías como dependencia y aparte así se entiende como es crear una librería para nestjs, con su módulo, decorator, etc correspondiente. Sería un videazo
Albert! Como siempre por aquí, aún no he visto y ya se que será un videazo, gracias por aportar a la bonita comunidad de Nest, eres un grande! Además el tema de los cron jobs me cae como anillo al dedo 😂
Haha ya me dirás cuanto te lo acabes que te pareció. Yo también estuve hace poco con cron jobs y dije va voy a traer esto que seguro que le es util a mas personas :D
Sería genial hacer la librería de nestjs bulll cron y Me gustaría mucho ver más temas de ci/cd y github actions para deployments automatizados de nestjs
@@AlbertHernandez tienes un potencial segmento de audiencia y son los que queremos ver info de microservicios con nestjs, es un tema muy poco tratado y los que lo exponen solo hacen el ejemplo básico de la documentación. Esto debe complementarse con dokerizar esos servicios, balanceo de carga cuando hay más de una instancia de un mismo servicio, motorización de estos, da para una serie completa. En fin, tienes un 2024 lleno de posibilidades por delante.
Si, veo que en el tema de los microservicios siempre hay interés pero la verdad que aun no se si me siento del todo preparado para traeros buen material de calidad al respecto, aun tengo mucho que leer y que seguir aprendiendo al respecto pero conforme lo vaya haciendo os traeré todo lo que pueda
Bro me encanta como se ve tu intelliJ, podrías compartir como configurarlo como el tuyo?(tema, fuente de texto, iconos, etc...) No he encontrado muchos recursos que se vean tan bien como el tuyo, saludos!
Pues soluciones hay varias..] En el caso de kubernetes, porque no usar mejor la solucion de kubernetes de cronjobs, en caso de que no uses kubernetes pero si AWS, puedes usar AWS Batch Creo que lo importante es separa esa responsabilidad del servicio, y que el servicio solo ejecute la accion que se requiere y que un algo (sea k8s, Batch, o crontab) ejecute la tarea... Saludos, grandes videos!!!
De las últimas que estoy usando es justo la de crear un cron job de k8s que lance un evento a una cola, de esa manera lo delego todo esto a la infra y puedo tener retries y más cosas, gracias por el aporte :D
@@AlbertHernandez si justo , incluso puedes hasta usar istio para manejar los reintentos jeej.. como dices en tu video dude, hay un monton de formas de solucionar las cosas, la creatividad no tiene limites!!! Yo vengo mas de lado de platform engineering, y tus videos me han ayudado un monton a entender a los SWE :D
Si, hay muchas maneras, en los casos donde se tiene un equipo de platform engineering lo mejor es siempre preguntar a este equipo cual es el estándar ya que hay muchas piezas que se pueden usar para solucionar esto y dependerá de las soluciones que tenga el equipo. Me alegra saber que te han ayudado los videos a entender a los SWE, es muy importante que tanto miembros de platform engineer como los SWE se entiendan unos a otros y asi puedan trabajar juntos en resolver los problemas, es una pieza fundamental, un saludo!
Buen video, seria interesante lo de crear la libreria, tambien seria interesante, la integracion de graphql creo que hay pocos que hablan de graphql, tambien la generacion de reportes, manejo archivos, subscriptions de graphql, buen la verdad es que hay muchas cosas
yo podria un proxy o gateway (con node y express) que rutee , seria dos bakend como mencionaste un que gestionara solo cosas de cron y por ejemplo los post que mencionas que esos son los que se replicarian y se usaria el nativo de nestjs
Puede ser otra solución si, tener uno único para los crons, lo que pasa que si ese cron solo se va a ejecutar por ejemplo una vez al día, tener un servicio 24/7 por un único cron... quizás es demasiado
Gracias! Pues por ahora un curso entero no estoy sacando sino mas bien videos sueltos sobre tema que puedan ser interesantes, tengo pensado también hacer algunos de monorepos con NestJS y con otras herramientas como Lerna, pero si veo que hay interés podemos plantear un curso entero de todo eso
Otra cosa, yo trabajo con spring boot en java y en mi empresa tenemos ese problema, para solucionarlo hicimos que en las variables de entorno de cada pot le indicamos cual va a ser el encargado de realizar en cron job asi
Oye pues... es una solución muy buena, es una manera de tirar por lo nativo del framework sin estar lidiando con los problemas de que se repita el cron en múltiples instancias y encima sin la necesidad de meter nuevos componentes en el sistema, solo esa logica que meta una variable a un unico pod y listo. Me ha gustado, esta me la apunto tambien hehe, gracias por la sugerencia!
Yo tuve un cron con una aplicación con express y tenia el mismo problema la solución que dio arquitectura fue migrar la lógica del cron a una función que se levantaba en los jobs de kubernetes!!
Esa también es buena! Yo hace tiempo hice algo parecido, pero en lugar de tener la lógica del cron en los jobs de Kubernetes, lo que hacía es que ese cron llamara por HTTP a mi servicio, y de esa manera luego yo ya podía tener todo el control desde mi aplicación. Esto lo hacía sobre todo para poder reusar los componentes que ya tenía desarrollados en mi aplicación y no tener que replicarlos en k8s
Otra forma aunque igual algo engorrosa es guardar el estado de disparo del cron en la db, así cualquier cron consultaría cuando se disparó el último y solo se ejecutaría uno, aunque esté el cron replicado en varias instancias de nestjs, saludos.
Si, eso es prácticamente lo que hace Bull, lo guarda en un redis y va consultando cuando hay que ejecutar el handle del job según la hora, en este caso me gusta mas la opción de Bull mas que nada porque no tenemos que gestionar nosotros mismos esta DB y hacer la lógica de ir consultando los crons, marcar que ya se ha ejecutado y demás
muy buen video, me encantaría puedas crear tu propia librería, así explicarías bien cómo crear una librería de 0 usando otras librerías como dependencia y aparte así se entiende como es crear una librería para nestjs, con su módulo, decorator, etc correspondiente. Sería un videazo
Hehe yo estaba pensando lo mismo :D
Genial, no solo aprender a crear esta librería entre nestJS y Bull, si no tambien apredner a crear nuestras propias librerías con dependencia.
Sería interesante hacer la libreria. 💪
buen video, ya los usaba pero al tener siempre una instancia no sabía que me iba a topar con este problema. Gracias, gracias, gracias
Gracias! Me alegra ver que esto también os es útil, un saludo!
Albert! Como siempre por aquí, aún no he visto y ya se que será un videazo, gracias por aportar a la bonita comunidad de Nest, eres un grande!
Además el tema de los cron jobs me cae como anillo al dedo 😂
Haha ya me dirás cuanto te lo acabes que te pareció. Yo también estuve hace poco con cron jobs y dije va voy a traer esto que seguro que le es util a mas personas :D
Sería genial hacer la librería de nestjs bulll cron y Me gustaría mucho ver más temas de ci/cd y github actions para deployments automatizados de nestjs
Venga pues habrá que hacerla, aunque sea como mínimo una librería super pequeña pero que tenga todo el CI/CD con GitHub Actions :)
Muy buen video, yo me tope con el mismo problema que mencionas
Como lo solucione fue creado lambdas en AWS que se ejecutaban como cronjobs
Las lambdas de AWS son perfectas para estos casos
Sería interesante ver en un futuro como hacer microservicios con nestjs y algún transportador como kafka o redis
El mundo de los microservicios es muy interesante, me lo apunto y traeremos contenido en un futuro, gracias por la sugerencia, un saludo!
@@AlbertHernandez tienes un potencial segmento de audiencia y son los que queremos ver info de microservicios con nestjs, es un tema muy poco tratado y los que lo exponen solo hacen el ejemplo básico de la documentación. Esto debe complementarse con dokerizar esos servicios, balanceo de carga cuando hay más de una instancia de un mismo servicio, motorización de estos, da para una serie completa. En fin, tienes un 2024 lleno de posibilidades por delante.
Si, veo que en el tema de los microservicios siempre hay interés pero la verdad que aun no se si me siento del todo preparado para traeros buen material de calidad al respecto, aun tengo mucho que leer y que seguir aprendiendo al respecto pero conforme lo vaya haciendo os traeré todo lo que pueda
Bro me encanta como se ve tu intelliJ, podrías compartir como configurarlo como el tuyo?(tema, fuente de texto, iconos, etc...) No he encontrado muchos recursos que se vean tan bien como el tuyo, saludos!
Hehe si claro, me lo apunto y traeré un video sobre todo ello. Un saludo! 😁
Pues soluciones hay varias..]
En el caso de kubernetes, porque no usar mejor la solucion de kubernetes de cronjobs, en caso de que no uses kubernetes pero si AWS, puedes usar AWS Batch
Creo que lo importante es separa esa responsabilidad del servicio, y que el servicio solo ejecute la accion que se requiere y que un algo (sea k8s, Batch, o crontab) ejecute la tarea...
Saludos, grandes videos!!!
De las últimas que estoy usando es justo la de crear un cron job de k8s que lance un evento a una cola, de esa manera lo delego todo esto a la infra y puedo tener retries y más cosas, gracias por el aporte :D
@@AlbertHernandez si justo , incluso puedes hasta usar istio para manejar los reintentos jeej.. como dices en tu video dude, hay un monton de formas de solucionar las cosas, la creatividad no tiene limites!!!
Yo vengo mas de lado de platform engineering, y tus videos me han ayudado un monton a entender a los SWE :D
Si, hay muchas maneras, en los casos donde se tiene un equipo de platform engineering lo mejor es siempre preguntar a este equipo cual es el estándar ya que hay muchas piezas que se pueden usar para solucionar esto y dependerá de las soluciones que tenga el equipo.
Me alegra saber que te han ayudado los videos a entender a los SWE, es muy importante que tanto miembros de platform engineer como los SWE se entiendan unos a otros y asi puedan trabajar juntos en resolver los problemas, es una pieza fundamental, un saludo!
@@AlbertHernandez no veo el video 👀
Muy buenos videos Albert, sigue asi
Gracias! 🚀
Buen video, seria interesante lo de crear la libreria, tambien seria interesante, la integracion de graphql creo que hay pocos que hablan de graphql, tambien la generacion de reportes, manejo archivos, subscriptions de graphql, buen la verdad es que hay muchas cosas
Gracias 😁! Venga tomo nota para traer contenido de GraphQL como comentas. Gracias por la sugerencia!
yo podria un proxy o gateway (con node y express) que rutee , seria dos bakend como mencionaste un que gestionara solo cosas de cron y por ejemplo los post que mencionas que esos son los que se replicarian y se usaria el nativo de nestjs
Puede ser otra solución si, tener uno único para los crons, lo que pasa que si ese cron solo se va a ejecutar por ejemplo una vez al día, tener un servicio 24/7 por un único cron... quizás es demasiado
buen video bro, tendras algun curso de microservicios de nestjs con monorepo?
Gracias! Pues por ahora un curso entero no estoy sacando sino mas bien videos sueltos sobre tema que puedan ser interesantes, tengo pensado también hacer algunos de monorepos con NestJS y con otras herramientas como Lerna, pero si veo que hay interés podemos plantear un curso entero de todo eso
gran video, se nota que sabes mucho
Otra cosa, yo trabajo con spring boot en java y en mi empresa tenemos ese problema, para solucionarlo hicimos que en las variables de entorno de cada pot le indicamos cual va a ser el encargado de realizar en cron job asi
Oye pues... es una solución muy buena, es una manera de tirar por lo nativo del framework sin estar lidiando con los problemas de que se repita el cron en múltiples instancias y encima sin la necesidad de meter nuevos componentes en el sistema, solo esa logica que meta una variable a un unico pod y listo.
Me ha gustado, esta me la apunto tambien hehe, gracias por la sugerencia!
Yo tuve un cron con una aplicación con express y tenia el mismo problema la solución que dio arquitectura fue migrar la lógica del cron a una función que se levantaba en los jobs de kubernetes!!
Esa también es buena! Yo hace tiempo hice algo parecido, pero en lugar de tener la lógica del cron en los jobs de Kubernetes, lo que hacía es que ese cron llamara por HTTP a mi servicio, y de esa manera luego yo ya podía tener todo el control desde mi aplicación. Esto lo hacía sobre todo para poder reusar los componentes que ya tenía desarrollados en mi aplicación y no tener que replicarlos en k8s
puedes utilizar un "lock" o "leader election" para asegurarse de que solo una instancia de tu aplicación ejecute el cron job.
puede ser otra solución si, aunque es una pena que no venga nada nativo o mas sencillo en el framework de NestJS
Otra forma aunque igual algo engorrosa es guardar el estado de disparo del cron en la db, así cualquier cron consultaría cuando se disparó el último y solo se ejecutaría uno, aunque esté el cron replicado en varias instancias de nestjs, saludos.
Si, eso es prácticamente lo que hace Bull, lo guarda en un redis y va consultando cuando hay que ejecutar el handle del job según la hora, en este caso me gusta mas la opción de Bull mas que nada porque no tenemos que gestionar nosotros mismos esta DB y hacer la lógica de ir consultando los crons, marcar que ya se ha ejecutado y demás
Yo uso agenda-nest que usa agendajs, para mi la mejor lib de CJ
Esa también es muy buena, sobretodo si ya estas usando mongo como base de datos