Battle of the Serverless — Part 1.5: Rust vs Go vs Kotlin vs F# vs C# vs Python vs TypeScript/Node.js

Mark Fowler
3 min readOct 22, 2019

--

Part 1 is here. This story is just a quick resume of new numbers based on a micro test including interpreted languages TypeScript/Node.js and Python 3.7. Read on if you want to see some observations and data points based on ~50,000 requests over 3 hours on AWS Lambda, API Gateway, and some compiled serverless “hello world” type services; some are with AWS provided runtimes; some are with BYOR, or Bring-Your-Own-Runtime like Rust.

Battle of the Serverless continues

This experiment continues the work done in our pretend suite of microservices exposed via API Gateway to form an API with a code name of Slipspace in a mock company called STG. Slipspace drives are how the ships in the Halo universe travel so quickly to different sectors of the galaxy through something called Slipstream Space, so thought it was cool for a name requiring awesome warp API speeds.

And the numbers are in

The values for this round of testing in table format are as follows. Go took the overall cake for being in the top 3 in each duration captured. C# and F# both showed they are very quick, but still very spiky. There’s a typo in the below table under Kotlin for Max Duration; it should be 1.16 seconds, not ms. Node.js and Python didn’t do as well as I thought they would, but we’ll see how they do under some non-hello world type workloads.

Table format for duration’s captured during 3 hours of testing

For average duration of AWS Lambda function execution, these are the data points.

Number call outs for average duration in benchmark tests
Sampling of line charts for average duration in benchmark tests

For maximum duration of AWS Lambda function execution, these are the data points.

Number call outs for maximum duration in benchmark tests
Sampling of line charts for maximum duration in benchmark tests

For minimum duration of AWS Lambda function execution, these are the data points.

Number call outs for minimum duration in benchmark tests
Sampling of line charts for minimum duration in benchmark tests

FIN/ACK

This ends the hello world tests. Next we’ll be integrating queries to a DynamoDB backend to do some CRUD ops with more realistic workloads. That’s where the real numbers will show and we can actually make some decisions about who the winners are.

--

--

Mark Fowler
Mark Fowler

Written by Mark Fowler

Continuous learner & technologist currently focused on building healthcare entities with forward-thinking partners. Passionate about all things Cloud.

Responses (1)