M

Mikhail Shilkov

mikhail.io · Personal blog · on HN since 2016

Mikhail Shilkov writes about serverless platforms, especially AWS Lambda cold start measurements, plus Temporal workflows, F#, and Claude Code behavior.

What HN saysHN commenters cite his cold start benchmarks as the best reference on the problem, using them to compare languages, runtimes and invocation costs.
23HN people shared it
11linked it in comments
18stories submitted
313story points
1 year agolast shared
2016people per year2026

Most-shared posts

  1. 1
  2. 2
    AWS Lambda cold start during per language (2021)
    5 people · 2 points · first shared 2019 · discussion on HN
  3. 3
    Cold Starts in AWS Lambda
    4 people · 2 points · first shared 2019 · discussion on HN
  4. 4
    Serverless: Cold Start War
    2 people · 278 points · first shared 2018 · 109 comments on HN
  5. 5
  6. 6
    Comparing Scala to F#
    1 people · 4 points · first shared 2016 · discussion on HN
  7. 7
    A practical approach to Temporal architecture
    1 people · 3 points · first shared 2020 · discussion on HN
  8. 8
    Temporal: Open-Source Workflows as Code
    1 people · 2 points · first shared 2020 · discussion on HN
  9. 9
  10. 10
  11. 11
  12. 12
    Monads explained in C# – Mikhail Shilkov
    1 people · 1 points · first shared 2017 · discussion on HN
  13. 13
    Santa brings cloud to every developer
    1 people · 1 points · first shared 2019 · discussion on HN
  14. 14
    Aws lambda warmer as pulumi component
    1 people · first shared 2018
  15. 15
    Monads explained in csharp again
    1 people · first shared 2019

What HN people wrote when they linked it

soren1 · 2022-04-27
My experience has been the opposite, with simple python docker containers showing noticeably slower cold starts than python zips. I've also found the size of the zip package matters (smaller is faster). However things change over time, maybe there have been recent improvements? Specifically regarding cold starts of lambda instances, I recall this excellent article from Jan 2021 which measures cold start latencies for a variety of AWS lambda runtimes: https://mikhail.io/serverless/coldstarts/aws/languages/ I would love to see a 2022 update.
ozten · 2018-11-30
I found this to be the best update on the cold start problem. https://mikhail.io/2018/08/serverless-cold-start-war/
abalone · 2018-09-11
Two things. 1- It's amazing that Java has the fastest cold start time! Faster than Nodejs.[1] That's exactly the opposite of what I've heard before. 2- I am so tired of hearing about cold start times for dormant apps as if that is the only cold start scenario. It is arguably a worse problem to have cold starts when scaling! What do I mean by cold starts when scaling? You adopt serverless. Things go great. Your app is never dormant. You're not serverless because you want to shave costs for infrequently unused apps. You're serverless so you have infinite scale and pay by the millisecond and minimal devops and so on. But whenever you have a burst of scale and Lambda needs to spin up more instances... some of your unlucky users are going to hit that cold start. And this hack of keeping an instance warm would do nothing to solve that. I mean, do they? Do we know? It's possible that AWS warms up instances before throwing traffic at them but.. has anyone looked at this? [1] https://mikhail.io/2018/08/serverless-cold-start-war//coldstart-depend…
gabereiser · 2023-09-16
I’ll just leave this with you. 0.1 difference may not seem like a lot until you start hitting 100M invocations. https://mikhail.io/serverless/coldstarts/aws/languages/
tyingq · 2022-02-27
It has always had much slower cold start times than other choices: https://mikhail.io/serverless/coldstarts/aws/
aaronbwebber · 2021-01-15
Very important caveats from the paper review at https://mikhail.io/2020/03/infinicache-distributed-cache-on-aws-lambda… > Mind that the workload was selected to be a good match for InfiniCache properties (large objects with infrequent access). > The hourly cost increases monotonically with the access rate, and eventually overshoots ElastiCache when the access rate exceeds 312 K requests per hour (86 requests per second). So this is not a replacement for the most common use cases for Elasticache. It is interesting as a cache in front of S3, but if you want a cache in front of S3...just use Cloudfront? Honestly if I was AWS I would be ecstatic if people used this, AWS probably breaks even or maybe loses a little bit on optimal usage of this, and makes an absolute killing if someone using this has a traffic spike and ends up hitting their lambda millions of times.
ElFitz · 2019-11-06
First, caching. Can be done via API Gateway or Cloudfront. Second, minimizing the function's code size. Both by making small functions and then optimizing them (there are plugins for the serverless framework to do that) Third, using a language with a minimized cold start. Some can have cold start latences lower than 1 second [^1] [1]: https://mikhail.io/serverless/coldstarts/aws/
laumars · 2019-09-23
...and the language choice has a measurable impact on the cold start time. I've measured it - as have others[1][2]. You're right that it's not just about the language runtime though. I must admit I'd forgotten about the container spin up et al as well (thankfully the recent ENI fix for VPC lambda's has been released because that was threatening to bite us hard on one project). [1] https://mikhail.io/serverless/coldstarts/aws/languages/ [2] https://levelup.gitconnected.com/aws-lambda-cold-start-language-compar…
james_s_tayler · 2019-07-22
Abstract Algebra makes it way into code sometimes... https://mikhail.io/2018/07/monads-explained-in-csharp-again/
throwaway894345 · 2020-12-01
> You're mixing arguments here. It's not the occasional 5-second long request, it's "the app doesn't start serving requests for 5 seconds". Lambdas cold-start during requests. So the unlucky request that triggers a cold start eats that cold start. > Using data science tooling in a lambda seems iffy, especially ones that are not production ready. Nonsense, there are a lot of lambdas that just load, transform, and shovel data between services using pandas or whathaveyou. Anyway, don't get hung up on data science; it was just an example, but there are packages across the ecosystem that behave poorly at startup (usually it's not any individual package taking 1-2s but rather a whole bunch of them scattered across your dependency tree that take 100+ms). > And good luck getting such libraries in go. Go doesn't have all of the specialty libraries that Python has, but it has enough for the use case I described above. > Python cold booting an interpreter 3 seconds faster than Go is a big deal, especially if your target execution time is <50ms and you've got a large volume of invocations According to https://mikhail.io/serverless/coldstarts/aws/languages/, Go takes ~450ms on average to cold start which is still up a bit from Python's ~250ms. To your point, if you're just slinging boto calls (and a lot of lambdas do just this!) and you care a lot about latency, then Python is the right tool for the job. > not being silly and importing ridiculously heavy dependencies into a…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close