The economics are the main draw and they are genuinely asymmetric. Workloads that are spiky, unpredictable or mostly idle cost dramatically less than a server sized for peak that runs continuously. Background jobs, webhook handlers and scheduled tasks are near-ideal fits.
The costs appear at the edges. A cold start adds latency when an idle function is invoked. Execution time limits make long-running work awkward. Database connections behave badly when hundreds of instances open them simultaneously, usually requiring a connection pooler. And at consistently high, steady traffic, per-invocation billing can exceed the cost of a reserved instance — so the model that saves money for one workload wastes it for another.
Codazz builds this in production — Cloud & DevOps.