  To date, cloud applications have used datacenter resources through manual
configuration and deployment of virtual machines and containers. Current trends
see increasing use of microservices, where larger applications are split into
many small containers, to be developed and deployed independently. However,
even with the rise of the devops movement and orchestration facilities such as
Kubernetes, there is a tendency to separate development from deployment. We
present an exploration of a more extreme point on the devops spectrum: Fractal.
Developers embed orchestration logic inside their application, fully automating
the processes of scaling up and down. Providing a set of extensions to and an
API over the Jitsu platform, we outline the design of Fractal and describe the
key features of its implementation: how an application is self-replicated, how
replica lifecycles are managed, how failure recovery is handled, and how
network traffic is transparently distributed between replicas. We present
evaluation of a self-scaling website, and demonstrate that Fractal is both
useful and feasible.
