Serverless ≠ Microservices
There are some concepts or terms in software engineering that folks often assume are either synonymous or that one implies the other, when often neither of these are true.
I read an article earlier this week describing how Test-Driven Development (TDD) ≠ Unit Tests which got a hard agree from me. The gist is that some dogmatists insist that your aren’t doing proper TDD if you aren’t writing pure unit tests. Yet the workflow that TDD advocates (the Red-Green-Refactor cycle) works really well for writing integration and E2E tests (which I’m always harping on about!).
A similar bugbear of mine is when people conflate serverless and microservices.
Now we all know that serverless is a terrible name, but many people automatically assume that if you’re building a serverless application, then it’s by definition a microservices system, primarily because the compute is distributed through multiple Lambda functions. However, a microservices architecture is more than just distributed compute. Individual microservices need to be deployed independently, yet that often isn’t the case, say with multiple functions in the same stack. And in fact, I argue that most new serverless apps should start as a monolithic single deployment, as the overhead that microservices bring often isn’t worth it at the early stages of a project.
Are you bugged by any concepts or terms that you hear being conflated but are actually orthogonal?
Paul Swail
Indie Cloud Consultant helping small teams learn and build with serverless.
Learn more how I can help you here.
Join daily email list
I publish short emails like this on building software with serverless on a daily-ish basis. They’re casual, easy to digest, and sometimes thought-provoking. If daily is too much, you can also join my less frequent newsletter to get updates on new longer-form articles.