Microservices are highly modular and scalable Service Oriented Architectures.
They underpin automated deployment practices like Continuous Deployment and
Autoscaling. In this paper, we formalize these practices and show that
automated deployment - proven undecidable in the general case - is
algorithmically treatable for microservices. Our key assumption is that the
configuration life-cycle of a microservice is split into two phases: (i)
creation, which entails establishing initial connections with already available
microservices, and (ii) subsequent binding/unbinding with other microservices.
To illustrate the applicability of our approach, we implement an automatic
optimal deployment tool and compute deployment plans for a realistic
microservice architecture, modeled in the Abstract Behavioral Specification
(ABS) language