Microservices split an application into small independent services that each handle one job.
Microservices is an approach to building software in which a single application is split into many small, independent services, each responsible for one specific job. Instead of writing all the functionality into one large program, a team builds separate services for distinct concerns, such as user accounts, payments, search, notifications, and inventory. Each service runs on its own, can be developed and deployed by its own team, and communicates with the others over well-defined interfaces, usually network calls made through APIs. The result is an application that behaves as one product to the user but is internally a collection of cooperating parts.
The mechanics rest on independence and clear boundaries. Every microservice owns its own logic and often its own database, so a change to how payments work does not require touching or redeploying the search service. Services talk to each other by sending requests and responses, commonly as JSON over HTTP or through message queues that pass events between them. Because each service is deployed separately, teams can update, scale, or even rewrite one piece without taking the whole system offline. If the recommendation service needs more capacity during a sale, only that service is scaled up, rather than duplicating the entire application.
The term combines "micro," from the Greek word for small, with "services," and it gained real traction around 2014 as a name for the practice of decomposing large applications into small, independently deployable parts. It grew popular as companies running big, tightly coupled systems looked for ways to move faster, and as container and cloud tooling made it practical to run many small services reliably.
For a business, microservices matter because they can make a growing product easier to change and scale. When different teams own different services, they can ship updates in parallel without stepping on each other, which speeds up the pace of new features. Individual services can be scaled to match their own demand, which can use infrastructure more efficiently. And because services are isolated, a failure in one, such as the reviews feature, can be contained so it does not take down checkout or the entire site. For a company expecting to grow its engineering team and its traffic, this flexibility can be valuable.
The nuances and common mistakes are significant, though. Microservices introduce real complexity: a system of dozens of services is harder to test, monitor, and debug than a single program, and network calls between services can fail or slow down in ways that are difficult to trace. Splitting an application too early, or into too many pieces, often creates more overhead than benefit, which is why many teams start with a monolith and break out services only when a clear need appears. Microservices relate directly to that monolithic alternative, and they pair naturally with serverless functions, containerization tools like Docker, and API design. The right choice depends on the size of the team, the scale of the product, and the organization's ability to operate distributed systems well.
Microservices let large systems scale and evolve piece by piece, so teams ship changes without risking the entire application.