Microservices

In classical software architecture, the architecture is often layered. There is one layer for the user interface, another for the application logic, and yet another for accessing persistent data (such as a database). In classical software architecture, an application server is used, which will run the different services (such as different entry points of a web site, or different parts of the business application). The problem with this approach is that such application servers often do not scale very well, they need a lot of resources, and services are often tightly coupled.
Microservices are patterns of Software architecture: The approach is similar to the pattern described above, but the services are very small: very often they only provide one or two very specific functions. To get the same situation as above, these services must interact with each other. Very often they do this using RESTful service calls. Each microservice still has the parts of the user interface layer, the application layer, and the layer to access persistent data. Very often, microservices run in an application container. When the load requires it, special software in the application container can be used to run several instances (or copies) of the specific service.
Microservices is a specialization of an implementation approach for service-oriented architectures (SOA) used to build flexible, independently deployable software systems. The microservices approach is a first realisation of SOA that followed the introduction of DevOps and is becoming more popular for building continuously deployed systems.