Container Orchestration for IoT devices and Distributed Systems

Let’s say you started a new job as a developer at a company that created a new smart speaker (think Amazon Echo or Google home). The said device gained a lot of success and you quickly find yourself with a million clients, each with a single device at their home. Sounds great, right? Now, the only problem you have is how you handle deployments to a million devices located all across the world?

  • You could go the way most old-school vendors do by releasing a package for the end user to download and install themselves on the company website, but in this day and age, this will quickly lose your customers to the competition who doesn’t have such high maintenance needs.
  • You could create a self-updating system built into your codebase, but that will require a lot of maintenance and man-hours from the development team, and even then, it will likely lead to problems and failures down the road.
  • You could containerize the codebase, create on each smart speaker a single server Kubernetes cluster, and create a huge federated cluster out of all of them (as Kubernetes doesn’t support this scale nor latency tolerant workers, this is required), but that will lead to huge costs on all the resources wasted only to run all said clusters.
  • You could use Nebula Container Orchestrator — which was designed to solve exactly this kind of orchestration needs.

As you may have guessed from the title, I want to discuss the last option from the list.