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?

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.

    View Emails Archive

    Free Intro Call

    Book a free 30-minute introduction call with me to see how I can help your team with serverless.

    Select a time for our call

    🛫 Serverless Launchpad

    Ready to start building your new AWS serverless project but need help with getting everything setup?

    The Serverless Launchpad is a done-for-you DevOps service installed in under a week. You get a leading-practice multi-account AWS environment, a scaffolded codebase and architecture including the common AWS serverless services, isolated cloud environments for individual developers, automated delivery pipelines right through to production and much more. Everything is IaC, extensively documented and handed over to your developers.

    Learn more >>