Although there is no standard definition of Microservices architecture, but put it simply Microservices is a method of software development with follows service oriented architecture approach to build an application. The application consists of multiple loosely coupled services which together make up the entire functionality of the application. One of the major advantage of Microservices best architecture is that it makes the entire process of software development highly modular which allows developers to write better code. Since each service is self contained, so it allows multiple teams to work, deploy and scale individual services independent of each other enabling higher productivity within the team.
Microservices based architecture has recently become highly popular in recent years. This type of architecture is particularly suited when you have to support multiple platforms and devices such as mobile, web, IoT etc or any other new platform in the future. The mechanism through which these services interact with each other depends upon the requirement of the application. However REST/HTTP with JSON is the most popular way preferred as all the modern browsers support it.
In Microservices based architecture, one of the major advantages that it allows you to scale individual services independently while in case of a Monolithic application, even if certain parts of the system have to be scaled the developers have no choice but to scale up the entire application. Many of the biggest sites and web applications have transitioned their architecture to service oriented architecture using microservices. Amazon, Netflix, Google are great examples of high traffic web applications who have broken their architecture into smaller service modules.
Each microservice usually focuses upon a business function unlike monolithic architecture where separating teams were dedicated to different parts of functionality of the application such as database, UI, backend et cetera. Microservice in 3 steps first is to receive the request, to process the request and thirdly to return a response accordingly. Microservices can help prevent large outages as even if the single service fails the entire system doesn't break down due to siloed or compartmentalised approach of deployment.