Microservices sound more impressive in a pitch deck. That doesn't mean they're the right call for a five-person team shipping their first product.

Every few years, a new architectural pattern becomes the thing serious engineering teams are supposed to be doing. Right now, it's still microservices — and it's been that way long enough that plenty of early-stage founders assume it's simply the correct way to build a backend, full stop. It usually isn't, at least not yet.
A monolith is a single application: one codebase, one deployment, one running process (even if it's scaled across multiple servers). Your API, your business logic, your database access — all of it lives together and ships together.
Microservices split that same functionality into separate, independently deployable services — a user service, a payments service, a notifications service — each with its own codebase, its own deployment pipeline, and often its own database. They talk to each other over the network instead of through direct function calls.
The pitch is genuinely compelling on paper: teams can work independently without stepping on each other's code, individual services can scale based on their own load rather than scaling the entire application, and a bug in one service is less likely to take down everything else.
All of that is true — at a certain scale, with a certain team size, solving a certain kind of pain. The problem is that most startups reach for microservices before any of those conditions actually exist.
Every one of those benefits comes with a matching tax. Independent deployments mean you now need a deployment pipeline per service, not one. Independent databases mean you've traded simple database transactions for distributed consistency problems — updating two related pieces of data across two services without one succeeding and the other failing is a genuinely hard problem that a monolith with one database simply doesn't have.
Debugging gets harder too. In a monolith, a stack trace tells you exactly where something broke. In a microservices system, a single user action might touch six different services, and tracing what actually failed means correlating logs across all of them — which requires its own tooling and discipline that many small teams haven't built yet.
None of this is a reason to never use microservices. It's a reason to be honest about whether your team currently has the operational maturity to pay that tax.
Team size is the clearest signal. If you have fewer than, say, eight or ten engineers, the coordination problems microservices solve (multiple teams needing to ship independently) mostly don't exist yet — you don't have multiple teams, you have one team, and splitting one team's code into artificially separate services just adds network calls and deployment overhead without the benefit.
Uneven scaling needs are the other real signal. If one specific piece of your product genuinely needs to scale independently — a video processing pipeline that spikes unpredictably, for instance — carving that specific piece out as its own service can make sense, while everything else stays in the monolith. This is sometimes called a "majestic monolith with strategic extractions," and it's a far more common real-world pattern than a pure microservices architecture from day one.
Start with a well-organized monolith. Not a tangled one — a monolith with clear internal boundaries between modules, so that if you ever do need to extract a piece into its own service, the code is already organized in a way that makes that extraction straightforward rather than a rewrite.
This gets you to market faster, keeps your infrastructure bill lower, and — critically — means the two or three engineers you have can actually reason about the whole system at once. Split too early, and you'll spend your limited engineering time managing distributed systems complexity instead of building the product features that actually determine whether you have a business.
Microservices aren't wrong. They're just a solution to a scaling and organizational problem most startups haven't earned yet. Build for the team and traffic you have today, with enough discipline that you're not boxed in when you grow into the problem microservices actually solve.