Je Serverless liegt tegen je over schaalbaarheid
Serverless computing belooft oneindige schaalbaarheid en nul overhead. Platforms zoals AWS Lambda of Google Cloud Run schalen je compute-lagen onmiddellijk op.
Maar je backend crasht nog steeds.
Het probleem is niet je compute. Het probleem is je database.
Wanneer je functies opschalen, veroorzaken ze een 'connection storm'. Elke nieuwe functie-instantie probeert een nieuwe verbinding met je database te openen. Als je 1.000 functies hebt, krijg je 1.000 verbindingsverzoeken die tegelijkertijd je Postgres- of MySQL-instantie raken.
Relationele databases hebben harde limieten. Zodra je die limiet bereikt, mislukken nieuwe verbindingen. Dit leidt tot hoge latentie en 5xx-fouten. Je compute is klaar voor gebruik, maar je database bezwijkt onder de druk.
Je kunt dit oplossen met drie strategieën:
Gebruik een Connection Proxy Verbind functies niet rechtstreeks met je database. Gebruik een proxy zoals AWS RDS Proxy of Google Cloud SQL Proxy. Deze laag bevindt zich tussen je functies en je database. Het beheert een kleine pool van persistente verbindingen en deelt deze onder je vele functies.
Implementeer Data Proxy-lagen Geavanceerde proxies doen meer dan alleen verbindingen beheren. Ze kunnen:
- Reads en writes splitsen naar verschillende database-instanties.
- Veelvoorkomende queries cachen om de databasebelasting te verminderen.
- Queries optimaliseren voordat ze de database bereiken.
- Stap over op asynchrone schrijfacties Maak niet van elke gebruikersactie een synchrone database-schrijfactie. Veel taken hebben geen onmiddellijke consistentie nodig.
In plaats van dit: Gebruikersactie -> Functie -> Synchrone DB-schrijfactie -> Respons
Probeer dit: Gebruikersactie -> Functie -> Event naar queue pushen -> Snelle respons
Een aparte functie kan dat event vervolgens oppakken en later naar de database schrijven. Dit beschermt je database tegen plotselinge pieken in het verkeer.
Echte schaalbaarheid vereist meer dan alleen het opschalen van compute. Je moet ontwerpen voor elastische data-toegang. Stop met het reserveren van capaciteit voor theoretische maxima. Begin met het bouwen van buffers tussen je 'bursting' functies en je data.
Bron: https://dev.to/prabashanadev/your-serverless-is-lying-to-you-about-scale-4cga