Sincronizar serverless functions con CosmosDB

Cuando utilizas serverless (Azure Functions en mi caso) uno de los problemas recurrentes es cómo sincronizar el acceso a ciertos recursos para que dos "functions" no se ejecuten a la vez sobre el mismo recurso.

Por ejemplo:

Supongamos que estamos implementando una aplicación serverless donde en un momento determinado múltiples usuarios pueden acceder a la misma.

Dependiendo del número de ellos, de la capacidad de la aplicación, etc la infra nos puede crear otra instancia ( en otra máquina diferente, e incluso en otra región) para permitir que nuestra aplicación escale sin interrupción del servicio.

En un escenario típico, donde tenemos el control de las instancias, usaríamos algun mecanismo de bloqueo para que cada ejecución pueda tomar el control sobre el recurso. Por ejemplo si sólo es una instancia usaríamos variables estáticas, o semáforos en memoria. Si es en un cluster usaríamos Redis (entre muchas otras opciones), etc

Pero en el caso serverless es más complicado porque no tenemos el control y además las instancias no tienen porqué "verse"

En el mundo Azure contamos con CosmosDB como base de datos distribuida …​

Este texto ha sido escrito por un humano

This post was written by a human

2019 - 2025 | Mixed with Bootstrap | Baked with JBake v2.6.7 | Terminos Terminos y Privacidad