¿Cómo puedo superar los problemas de escalamiento sin servidor y MongoDB?
Estoy familiarizado con Serverless y MongoDB y me gustaría saber si hay formas escalables de conectar los dos mundos. Hasta donde yo sé, no puedes interactuar con MongoDB de forma RESTful. En su lugar, abre una conexión que se supone que debe reutilizarse.
Digamos que estoy usando AWS Lambda como parte de una API sin servidor. Cuando la lambda está fría tienes que abrir una nueva conexión a MongoDB y mientras la lambda todavía está caliente, la conexión permanece abierta. Esta solución está bien, pero cuando tenga un aumento de tráfico en la API, alcanzará un límite de conexión impuesto por MongoDB.
¿Hay alguna forma de superar este límite de conexión en un mundo sin estado como lambda?
Respuestas
Las funciones de Lambda no tienen estado y son asincrónicas, y al usar el grupo de conexiones de la base de datos, le agregará un estado y anulará el propósito.
Si desea una agrupación de conexiones, ejecutar su servidor sobre EC2 es la mejor opción adecuada en AWS.
Sin embargo, si aún desea la agrupación de conexiones con lambda, puede crear una agrupación normalmente usando MongoClient.connect(uri, { poolSize: 10 })
y mantener su lambda caliente usando eventos de observación en la nube creando un disparador ficticio.
Definitivamente verá una mejora en el rendimiento.
La idea en la que pensar: puede usar Kinesis para activar su Lambda. Limitará el número de ejecuciones simultáneas al recuento de fragmentos, por ejemplo, 8 fragmentos por 8 al mismo tiempo.
De esta manera, puede mantener su conexión abierta y obtener un límite de su conexión abierta para evitar problemas de escala.
Este tipo de cosas (para una sola invocación, ya sea que la conexión sea nueva o reutilizada) que puede monitorear con algunas herramientas de monitoreo que lo ayudarán a mantener su estado de escalado a lo largo del tiempo, lo ayudará a administrar la antigüedad del iterador de MongoDB y Kinesis. Como:
- AWS X-Ray
- Métricas de AWS Cloudwatch
- Datadog
- Lumigo
Como divulgación, trabajo para una empresa llamada Lumigo, tenemos una herramienta de monitoreo distribuida que puede ayudarlo a rastrear sus problemas de escala de producción