According to Martin Fowler, microservices "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 HTTP resource API. 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." (http://martinfowler.com/articles/microservices.html) That definition sounds very promising and makes you think about miscroservices architecture as something very easy. But is it really that simple to create such services? If you think about each of the pieces separately then maybe the answer is "yes", but what about that moment when your project grows into more than 5 tasks? What about deploying them into tens, hundreds or thousands of instances? What about rolling out a new release of a single component or even dozens of them? You can see that the problem becomes very complex, very quickly. But now can you imagine a world where doing such complex tasks will be as easy as pressing one button (or invoking one command for CLI nerds.