Micro-services are patterns of software architecture, in which complex applications are composed of small, independent processes. These independent processes communicating with each other using language-agnostic APIs. Micro-services are therefore very small, highly decoupled and focused processes targeted on doing a small task, without the programmer having to reinvent the wheel.