i-just-want-to-run-my-containers-avassa

“I just want to run my containers”

Developing modern cloud applications requires that the developer can handle both traditional programming, as well system operations. This is also true for applications deployed to a distributed network of edge sites (a distributed edge cloud, in our terminology) – although in that case the system operations part of the job is even more demanding and complex.

We can illustrate this with the use of Kubernetes, the dominating container orchestration platform in cloud environments. It is complex to understand Kubernetes configurations and how to interact with them (even more so in a distributed edge deployment). Developers must master system operations including networking and management of resources, secrets, volumes.

It would obviously be great if the need to care for such infrastructure-specific details could be minimized. The details of running the applications should be hidden from the developer; this is especially important in distributed edge clouds, since distributed systems are always more complex to manage. The developer should be able to focus on developing the applications and deliver them through CI/CD to the container registry.

With modern distributed edge platforms developers don’t have to be system operators. When an application is deployed to an edge site, such a platform can automatically ensure that all needed configuration, secrets, certificates, tenant configurations and images are installed at the site. An overlay network for intra-site communication, where applications are cryptographically separated from each other, is automatically created and configured. There is no need to do this manually. In addition, application-level services deployed at each edge site, such as distributed secrets management and edge-optimized event streaming, can be built into such a platform; no need for the user to install, configure, upgrade – this is handled automatically by the system.

For developers, application-centric APIs are key both in traditional, centralized clouds and in distributed edge clouds. Here the notion of container placement (or VM placement) is essential. In centralized clouds, placement is a property that should be abstracted away from user: it is up the container scheduling algorithm to implement a suitable policy to place the container instance within a datacenter. In a distributed edge cloud, however, container placement is determined by the geographical locations of the edge sites: the user explicitly specifies which container instances run in which edge sites (the placement within each edge site is trivial, since these sites typically only consists of a few hosts).

Observability, especially application observability, is another key capability for developers that “simply want to run their containers”. However, it is important enough to be the topic of another article.

LET’S KEEP IN TOUCH

Sign up for our newsletter

We’ll send you occasional emails to keep you posted on updates, feature releases and event invites, and you can opt out at any time.