Brussels / 3 & 4 February 2024


A microkernel-based orchestrator for distributed Internet services?

In the recent years I have worked a lot on building community Internet services using distributed systems, in the context of Deuxfleurs, a French self-hosting collective. We use distributed systems with nodes in different physical locations to help us tolerate temporary failures such as Internet links going down, as well as hardware failures of our low-cost, second-hand servers.

We built our platform as a set of microservices, taking the form of Docker containers orchestrated by Nomad (a smaller Kubernetes). This allows us to divide our workload in pieces that can be ran on one or many machines simultaneously, and that can in most cases be automatically moved from one geographical region to another in case of failure. This approach works relatively well, however I am frustrated to no end by the idiosyncraties of containers and the Linux/UNIX ecosystem in general which contains huge piles of legacy and is massively getting in our way for building a clean, declarative and resilient dynamic microservice architecture.

I have a dream that one day we can build an orchestrator for microservices that is built on a microkernel, component-based operating system. We just need a way to simply multiplex fundamental resources such as storage and networking (NOT a filesystem, and NOT a full TCP/IP stack with iptables or whatnot), and to schedule and run unikernels or tiny Linux VMs in a cluster of machines. How hard can that be?

I will do a brief talk at the beginning but I'm hoping for this session to be mostly just talking of what can be done in this direction.


Alex Auvolat