Every year, Datadog analyzes anonymized data from its platform. Datadog's wide variety of customers and breadth within a company's infrastructure make the insights interesting. For example, this year, they looked at serverless adoption. You can read the full report here.
Serverless has gone from a punchline "there are still servers in serverless" to a generally accepted fact of infrastructure. As cloud matures and the "knobs" become more apparent, the distinction between serverless vs. not is.
Some highlights
- API Gateway and SQS (message queue) are the two main entrypoints to lambda function invocations. API Gateway makes up more than 50% of Lambda calls.
I missed API Gateway/Lambda when thinking about Interface Decomposition in Cloud, but it's a great pair.
- 80% of Lambda invocations from API Gateway are single-purpose functions.
On the one hand, it's the logical extension of Unix Philosophy to the cloud. But, on the other hand, deploying, observing, and maintaining version skew between hundreds of specialized artifacts seems challenging. Is this a symptom of adopting current front-end frameworks that operate this way or the start of a larger trend?
- Nearly 20% of Lambda users package their function as a container image.
This reinforces my belief in container maximalism. Containers are not the perfect deployment target, but they are better than anything else. WebAssembly as an alternative server-side packaging mechanism will find it hard to compete for the majority of workloads outside of smaller edge functions.
- Python and Node.js are the most common languages deployed on Lambda.
While this could just be a result of the underlying language adoption, I think there's something to be said about interpreted languages and functions. I'd imagine in many cases, these languages are being used as glue – scheduled jobs and basic orchestration. For example, the click-to-run button for Lambda gives a basic low-code UI that can be useful for maintenance tasks.
Additionally, packaging up and deploying containers or binaries for other languages can be cumbersome for small tasks. Taken together with trend of single-purpose functions, it's likely that we'll see more adoption of Lambda languages that are dead simple to deploy – just ship the code.