Categories: BlogCanonicalUbuntu

Application composability and the shipping container

The previous blog post talked about the composability of applications. The key element for composing applications is defining the relations between application elements. And supporting relations is one of the advantages of the Charmed Operator Framework – including its runtime, the Charmed Operator Lifecycle Manager.

The shipping container

The metaphor of the intermodal container or shipping container was mentioned in the previous blog post. It is a standardized transport element that’s able to be moved and stored across a logistics chain. And this is a popular metaphor for the standardised way of packaging, transferring, and running software, especially in DevOps automation. However, it lacks one aspect of software containers: When the shipping container has arrived at the destination, the goods are usually unloaded and the container is reused for the next transport.

Containerised
Sponsored
application

However, the software container will never get unloaded. Rather, it will keep its payload and continue to be part of the application. Apt real-world metaphors for this setup exist, and are not limited to a pure shipping container. There are containerised electricity generators, containerised housings, containerised desalination systems, containerised field kitchens, or even containerised batteries. These applications stay within the container and leverage the transport inter-modality at the same time – a much better analogy than the pure shipping container. Admittedly, these examples are not as popular in the real world as software containers in the software world.

This is a battery within a container at the Idaho National Grid Testbed. (Public Domain / US Government Works.)

In the world of shipping containers, not many care for the brand or type of the container. The relevant part is the payload, the goods. Customers choose to buy the goods from suppliers, and the use of containers in the logistics world is usually hidden from consumers, customers, and suppliers. This is also similar in the software world, as users of containerised applications usually do not care about the container technology. The focus of users lies in using the application.

Applications and containers

But in the software world, payload and container are bound together and stay together. So an application or software provider does indeed care about the container technology to make sure that available containers are useful to users. And since the supplier creates the software container with its payload, preparing the relations for composability with metadata must be done correctly when preparing the software container itself.

Sponsored
Mobile safety room for construction sites (Public Domain)

Application containers – the right place for composition

In order to support relations, the Charmed Operator Framework provides the toolbox to prepare the software container to support composing applications. Users employ the Charmed Operator Lifecycle Manager to compose applications by declaring relations between them. Using the metaphor of a field kitchen packaged in a shipping container, we could say that the Charmed Operator Framework standardises electric power inlets, water pipes, heating and air conditioning, and so forth.

Relations in the charmed operator framework

Transferred into the world of software containers, the Charmed Operator Framework defines how to configure the application, how to integrate the application when it’s used in a composed application context, how to handle relevant events, and much more. 

All of these elements are packaged into a Charmed Operator, which is an additional artifact for the application. A Charmed Operator is created for each application. (Read more in this article explaining framework constructs, and get an overview of how Charmed Operators cover relations.) An example of the composition of applications is Charmed Kubeflow, which provides application elements with Charmed Operators so that scientists can stand up and integrate the Kubeflow applications they need for a variety of environments – for example, a personal laptop, a workstation, or a cluster.

Further reading

Ubuntu Server Admin

Recent Posts

Kolla Ansible OpenStack Installation (Ubuntu 24.04)

Kolla Ansible provides production-ready containers (here, Docker) and deployment tools for operating OpenStack clouds. This…

19 hours ago

Canonical announces first Ubuntu Desktop image for Qualcomm Dragonwing™ Platform with Ubuntu 24.04

This public beta enables the full Ubuntu Desktop experience on the Qualcomm Dragonwing™ QCS6490 and…

2 days ago

The long march towards delivering CRA compliance

Time is running out to be in full compliance with the EU Cyber Resilience Act,…

2 days ago

Extra Factor Authentication: how to create zero trust IAM with third-party IdPs

Identity management is vitally important in cybersecurity. Every time someone tries to access your networks,…

3 days ago

Ubuntu Weekly Newsletter Issue 889

Welcome to the Ubuntu Weekly Newsletter, Issue 889 for the week of April 20 –…

4 days ago

From pidfd to Shimanami Kaido: My RubyKaigi 2025 Experience

Introduction I just returned from RubyKaigi 2025, which ran from April 16th to 18th at…

5 days ago