-
Notifications
You must be signed in to change notification settings - Fork 125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Trabajar todo como servicio. #157
Comments
Con el poco tiempo que hay, es practicamente imposible montar una estructura de microservicios |
Dejo algunas ideas, para lograr aprovechar herramientas disponibles para ahorrar implementar algunos servicios y para escalar: En cuanto a la seguridad, se podría utilizar Keycloak para manejar la gestión y autorización de usuarios, o bien AWS Cognito en combinación con Cerbos.dev (https://cerbos.dev/ecosystem/cerbos-aws-cognito). De esta manera, se implementaría una solución ya existente sin necesidad de reinventar la rueda. Para el procesamiento por lotes y tareas, se podría utilizar OptimalBits/Bull junto con Redis (https://github.com/OptimalBits/bull). Además, se podría iniciar con un Microlito (https://www.paradigmadigital.com/techbiz/microservicios-vs-microlitos-vs-monolitos-ventajas-desventajas/), desarrollado en NestJS+Fastify (https://docs.nestjs.com/techniques/performance) o utilizando HapiJS con plugins (https://hapi.dev/, desarrollado por Walmart para gestionar el volumen de carga en un Black Friday). En cuanto al autoescalado, si no se utiliza Kubernetes y la posibilidad de escalado horizontal, se podría utilizar PM2 con autoscaling (https://vexell.medium.com/autoscale-node-js-applications-with-pm2-and-pm2-autoscale-module-3129582dc72c). Sin embargo, hay que tener en cuenta que PM2 tiende a reiniciar el servicio si un proceso de NodeJS alcanza el límite de memoria asignado. Creando varias instancias del microlito que contiene todos los módulos sería una forma de gestionar la carga utilizando clustering con PM2, dentro del límite de escalado vertical del servidor (memoria, caché en disco y procesadores). Finalmente, una arquitectura CQRS sería lo ideal, ya que permite manejar las altas escrituras por un lado y gestionar las lecturas (aunque sea con retraso) por otro. Espero les sirva esta información para facilitar la implementación del backend y la infraestructura. |
A esto me refiero que todo sea un servicio divido, es decir, un servicio para el usuario, para registrarte loguearte cosas asi, después otro servicio aparte que se encargue de la subida de lo datos, y otro servicio para hacer el analisis, cada servicio, deberia tener un servidor aparte, es como una api en microservicios, las comunicarias por rest, aparte podrian agregar un sistema para controlar las caidas de esos servidores, esto con el objetivo de descentralizar y sea un poco mas dificil de tumbarlo, es mas o menos una propuesta para seguridad, quisiera saber que piensan.
The text was updated successfully, but these errors were encountered: