Microservices are small, independent processes that can be combined into a larger application.
These smaller building blocks focus on doing small tasks, so that they can easily be decoupled or combined to make more complex applications.
Advantages are that individual services can be easily replaced and can be implemented using different programming languages, hardware and software according to requirements.
Microservices can also be developed independently by different teams and are loosely coupled.
By comparison, a monolithic application is built as a single unit. This will be split into three main parts, including a user-interface, a database and server-side application.
The microservices-based architecture is useful for continuous delivery in software development, since changes to a small part of the application require only a small number of services to be rebuilt and redeployed.
It differs from a service-oriented architecture, which integrates business applications.
There are also disadvantages: a small number of services can become a much larger number of processes.
The complexity can also have impacts on "network latency, fault tolerance, message serialization, unreliable networks, asynchronicity, versioning, varying loads within our application tiers etc," according to the article Microservices – Not a Free Lunch! by Benjamin Wootton, CTO of Contino.
He also wrote that there could be code duplication, asynchronicity between different microservices and that DevOps would be required for any microservices deployment.
The term first gained prominence in 2014.
Large-scale websites and applications that have evolved from monolithic architecture to microservices include Netflix, eBay, Amazon, the UK Government Digital Service, Real Estate, Property & Homes For Sale, Forward, Twitter, PayPal, Gilt, Bluemix, Soundcloud and the Guardian, according to Martin Fowler, Chief Scientist at ThoughtWorks.
In the early 2000s, Amazon transformed from the Obidos monolithic application to a service-oriented architecture which used encapsulated databases and smaller teams. While the company did not use the term ‘microservices’ to describe this, this has been a key case study for microservices.