Issue #40 // October 15, 2021

This week we take a look at management of distributed systems. Digital Ocean shares how scale eventually led them to rearchitect around microservices and queues instead of a centralized database. We also take a look serverless and how we can optimize performance.

Don't forget the lessons that come with 20 years of experience. Software is about a lot more than building the most scalable system.

20 Things I’ve Learned in my 20 Years as a Software Engineer
A feel good list of 20 axioms from Justin Etheredge about the vocation that is software engineering.
From 15,000 Database Connections to Under 100
[Video] In 2012, Digital Ocean created less than 100 droplets per day. By 2017 they created over 140K per day. This is a walk through of how they started with a simple architecture until it no longer worked and then rearchitected for scale.
AWS Lambda Battle 2021
Aleksandr Filichkin compares the performances of different programming languages running on AWS Lambda (NodeJs, Python, Go, Ruby, .NET Core, Java, Rust, and GraalVM). Java and .NET Core have slow cold start times. NodeJS, Ruby, Python, and Java have slow overall performance. Go and Rust are the clear winners.
.NET ReadyToRun Compilation
Piggie backing on the AWS Lambda battle, last month Microsoft announced ahead-of-time compilation. I'm really curious how this affects cold start times on serverless compute. This does require compiling for a specific architecture and leads to much larger binaries.
Trigger a Kubernetes HPA with Prometheus Metrics
This post walks you through using Keda, an open source project that uses Prometheus queries to scale Kubernetes pods.
OpenTelemetry Support in the Azure SDK for .NET
Microsoft announced experiemental support for OpenTelemetry in the Azure SDK for .NET. OpenTelemetry unifies instrumentation, collection, and export of distributed tracing data across languages, clouds, and libraries.
SRE Doesn't Scale
I didn't particularly like this article, but it gained a lot of traction this week so it's worth sharing. The group at Real Kinetic somehow thought SRE always means microservices which always means developers can choose any language, tools, platform they want. Then they say that SRE doesn't scale because you'd have to hire an army to support this type of entropy. At the end of the article they admit that Google has standards and best practices negating their arguement.