Definition
Microservices are a way of building software as a set of small, independent services, each responsible for one business capability such as billing, user accounts or notifications. Each service has its own code and often its own database, and the services talk to each other through APIs (Application Programming Interfaces). The opposite approach is the monolith, where the whole application lives in one codebase and is deployed as a single unit.
In a company, microservices let separate teams own separate parts of the product and release them on their own schedule. The billing team can ship a change without waiting for the search team. Each service can also be scaled independently: if image processing is the bottleneck, you add capacity only there. The cost is complexity. You now run dozens of deployments, network calls that can fail, and a distributed system that is harder to debug and monitor.
The common misconception is that microservices are the modern default and monoliths are legacy. In practice most companies under a few million in revenue are better served by a well-structured monolith, and several well-known engineering teams have publicly consolidated microservices back into fewer services to cut cost and complexity. Microservices pay off when you have many teams working in parallel, not because your product is ambitious.
In practice
A marketplace with 5 engineers adopted microservices from day one and spent more time on infrastructure than on the product. A competitor with a single well-organised codebase shipped twice as fast and split services only when the team passed 30 engineers.
Why it matters
The architecture decision sets your engineering cost for years. If a CTO proposes microservices for a small team, ask what problem they solve today, not in a hypothetical future with 10 times the traffic.
Frequently asked questions
- Microservices vs monolith: which is better for a startup?
- For most startups a monolith is better. It is simpler to build, deploy and debug, and a small team can move fast in one codebase. Move to microservices when independent teams are blocking each other or when specific parts of the system need very different scaling.
- What are the disadvantages of microservices?
- Operational complexity, more infrastructure to run and secure, harder debugging across network calls, data consistency challenges when each service has its own database, and higher cloud costs. They also demand mature DevOps practices such as CI/CD and monitoring that small teams often lack.