It’s autonomous: self-contained unit of functionality. A unique location (URL) identifies it.
It’s isolated, so we can modify it, test it and deploy it without impacting other areas of the solution
It’s elastic. Can be scaled independently of other services.
It’s resilient. Is fault tolerant and highly available.
It’s responsive, it responds to requests in a reasonable amount of time.
It’s message oriented. Rely on asynchronous message-passing to establish a boundary between components.
It’s programmable. Thanks to API’s for access by developers and administrators and Applications are composed from multiple microservices.
It’s automated, the lifecycle of a microservice is managed through automation that includes dev, build, test, staging, production and distribution.
Divide and conquer – The Microservice approach
Docker Load Balancer Demo