by Sev Geraskin
—
Mon Feb 21 2022
✔️ Yes, the monolith is simple to start.
✔️ Yes, your development and deployment might be easier at the beginning.
✔️ Yes, you do not need an operational team right away to maintain the complex infrastructure.
As the monolith grows, so do the associated pains.
A monolith is hard to iterate and deploy quickly as changes in one place affect functionality in others. You must test the entire app with each change since a single error can bring down the whole application. And so, your dev teams are paralyzed by fear of making a mistake.
As your startup user base grows, a monolith scales all the components together, regardless of whether those parts require scaling.
You started with a monolith, and your startup finally grew. Your tech team says you cannot develop further and proposed a six-month rearchitecting effort that stops your feature development dead in your tracks. At the same time, your competitor is releasing a feature that you needed yesterday.
All right, you don't want to deal with those pains. So what are the advantages of microservices?
Meh, you say, who cares about the above since you are a small startup?
❓You have a few people and need to get a product out, not scale it.
❓You have one unfinished product, so what's the point of reusability?
❓You can't afford to maintain complex infrastructure.
That's all the proper reasoning. Cloud and serverless change the game, though.
🚀 Scalability becomes free. Let your cloud provider be your operational team. Why not take it? After all, you founded your startup to grow.
⚡️ You can iterate on your product lightning-fast. Putting a serverless function into production is simple, and you can use various deployment strategies offered by your cloud provider.
🧩 To prevent your software from becoming a spaghetti mess that is either thrown away or permanently frozen in time, you would use a modular architecture, whether building monolith or microservices. Serverless functions encourage a modular architecture by splitting your application into small chunks that developers can wrap their heads around.
💰 Finally, the serverless pay-for-what-you-use model plays well with services that require less scaling since you don't need to stand up and pay for servers.