It is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an REST API - martinfowler.com

These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

# Philosophy

The philosophy of the microservices architecture essentially equals to the Unix philosophy of:

Each service is fine-grained to perform a single function, and should have the following properties:
- Elastic
- Resilient
- Composable
- Minimal
- Complete

# Linguistic approach

A linguistic approach to the development of microservices focuses on selecting a programming language which can be implemeted as a single software artifact - blogspot.it

A language well suited to microservices will encourage the developer to think and program in terms of microservices from the start. This avoids the tendency to refactor or retrofit a finished project so it can be deployed as a microservice - archiv

When effective, the gap between architecting a project and deploying it can be minimized. One language intended to fill this role is the (it's a java thing):
- Vision on jolie-lang.org
- About on github
- Code on github