Microservices is the latest stage of the trend to divide applications into component parts. This trend leads to separation of the user interface, business logic, storage and other elements that make up an application. It has been manifest in shared libraries and technology layers, and created greater mobility and scalability of applications.
A monolithic approach to application development contains all its functionality and is typically scaled by adding more instances of physical or virtual services.
Microservices take this logic much further. They ideally are autonomous and interact with each other through well defined protocols. Microservices may be developed in many programming languages and run in many environments, but they are compatible with each other because of standard communications protocols. When a microservice fails, a resilient microservice will restart on the same or another environment, and will not break the overall performance of the application even as upgrades are applied and maintenance is performed.
Service Fabric can run on premises as well as in the cloud, and it may include clusters with other cloud providers. It provides the overall framework for deploying microservices and orchestrating upgrades and maintenance of services.
Microsoft uses Service Fabric for many of its services, such as Azure SQL Database, Azure Cosmos DB, Cortana, Microsoft Power BI, Microsoft Intune, Azure Event Hubs, Azure IoT Hub, Dynamics 365, Skype for Business, and many core Azure services.
The most popular competitors to Azure Service Fabric are Kubernetes (a Linux container management tool from Google), Docker Swarm, and Microsoft's own Azure Container instances for managing Docker containers.