Tu arquitectura serverless te está mintiendo sobre la escalabilidad

La computación serverless promete una escala infinita y cero sobrecarga. Plataformas como AWS Lambda o Google Cloud Run escalan tus capas de cómputo al instante.

Pero tu backend sigue fallando.

El problema no es tu cómputo. El problema es tu base de datos.

Cuando tus funciones escalan, crean una tormenta de conexiones. Cada nueva instancia de función intenta abrir una conexión nueva a tu base de datos. Si tienes 1,000 funciones, tienes 1,000 solicitudes de conexión golpeando tu instancia de Postgres o MySQL al mismo tiempo.

Las bases de datos relacionales tienen límites estrictos. Una vez que alcanzas ese límite, las nuevas conexiones fallan. Esto provoca una alta latencia y errores 5xx. Tu cómputo está listo, pero tu base de datos está colapsando.

Puedes solucionar esto con tres estrategias:

  1. Usa un proxy de conexión No conectes las funciones directamente a tu base de datos. Usa un proxy como AWS RDS Proxy o Google Cloud SQL Proxy. Esta capa se sitúa entre tus funciones y tu base de datos. Gestiona un pequeño grupo (pool) de conexiones persistentes y las comparte entre tus múltiples funciones.

  2. Implementa capas de proxy de datos Los proxies avanzados hacen más que solo gestionar conexiones. Pueden:

  • Dividir las lecturas y escrituras en diferentes instancias de base de datos.
  • Cachear consultas frecuentes para reducir la carga de la base de datos.
  • Optimizar las consultas antes de que lleguen a la base de datos.
  1. Pásate a las escrituras asíncronas Deja de convertir cada acción de usuario en una escritura de base de datos síncrona. Muchas tareas no necesitan una consistencia instantánea.

En lugar de esto: Acción de usuario -> Función -> Escritura síncrona en DB -> Respuesta

Intenta esto: Acción de usuario -> Función -> Enviar evento a una cola -> Respuesta rápida

Una función separada puede entonces tomar ese evento y escribir en la base de datos más tarde. Esto protege tu base de datos de picos repentinos de tráfico.

La verdadera escalabilidad requiere algo más que simplemente escalar el cómputo. Debes diseñar para un acceso a datos elástico. Deja de aprovisionar para máximos teóricos. Empieza a construir buffers entre tus funciones con ráfagas de tráfico y tus datos.

Fuente: https://dev.to/prabashanadev/your-serverless-is-lying-to-you-about-scale-4cga