De serverless-mythe dat "je alleen betaalt voor de milliseconden dat je code draait" valt uiteen zodra je probeert een AI-agent op AWS Lambda te draaien. In de praktijk zijn de grootste kostenposten niet de Lambda-rekenkrachtkosten, maar de cold-start-latentie, retry-loops en het tokenverbruik dat deze loops genereren.
Waarom het gebruikelijke serverless-beeld AI-agents misleidt
De meeste ontwikkelaars behandelen een Lambda-functie als een pure compute-sandbox: houd de handler snel, stel een bescheiden geheugengrootte in en zie de rekening stabiel blijven. Dat werkt voor eenvoudige HTTP-endpoints, maar een agent die een taalmodel aanroept, de respons evalueert en mogelijk de hele cyclus opnieuw probeert, komt niet één-op-één overeen met een enkele Lambda-aanroep. De interne workflow van de agent vermenigvuldigt het aantal modelaanroepen, en elke extra aanroep voegt tokenkosten toe die de kosten voor rekenkracht volledig in de schaduw kunnen stellen.
Cold starts zijn de verborgen kostenpost
Wanneer een Lambda-container voor het eerst wordt geprovisioneerd, moet deze het deployment-pakket uitpakken. De betreffende agent importeert een grote set Python-libraries, waardoor de image aanzienlijk kan zijn. Het verwijderen van tools die alleen voor ontwikkeling bedoeld zijn — zoals een browser-automatisatielibrary die alleen voor lokaal testen wordt gebruikt — verkleint de omvang van de image, wat op zijn beurt de uitpaktijd verkort. Een slanker pakket betekent dat de functie sneller klaar is om een verzoek af te handelen, waardoor de wachttijd voor het opwarmen van de container wordt verkort.
Een tweede knop om aan te draaien is de plek waar de initialisatiecode staat. Door de graaf van de agent te construeren op het moment van module-import, vindt het zware werk slechts één keer per containerstart plaats in plaats van bij elk verzoek. Bij 'warm' aanroepen wordt dit werk vervolgens volledig overgeslagen. Het nadeel is een iets langere cold start, maar het voordeel is een setup-tijd per verzoek die bijna nul is zodra de container warm is.
Geheugen dient ook als knop voor latentie
Bij Lambda bepaalt de hoeveelheid toegewezen geheugen ook het aandeel CPU dat de functie ontvangt. Door de functie in te stellen op
