Microservices

A microservice is an architectural style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs - wikipedia

YOUTUBE mBectpk89ow So-so panel on microservices. See microservices.io

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:

Do one thing and do it well.

The social organisation of the delivery of a microservice architecture should: - Embrace automation of Software testing - Embrace automation of Software deployment - Embrace failure and faults - Anti-fragile systems

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