Developer Diaries: Lessons from nature: containers and biology with Grace Jansen

The complexity and yet seeming simplicity of systems in nature can give us important insights into powerful constructs that we can leverage in the software systems we build today. Nature has had millennia to evolve and improve its systems’ efficiency and effectiveness, so why not take advantage of this and use nature as inspiration for our own systems? We can even look to our own bodies for this inspiration.

Cells enable our bodies to grow into more complex organisms. They are the building blocks for the organs that let us smell, see, move our arms and legs and even think about sentences like this. As a biologist-turned-software-engineer, I can’t help but notice the similarities between what cells bring to our existence and what containers bring to modern cloud development. Putting code into discrete units (containers) and orchestrating those containers opens up new possibilities for the applications we build. Here are just some of the benefits:

  • Easy replication. When we train hard, our body produces more muscle cells for us to be able to improve and sustain activity. Similarly, with container orchestration systems like Kubernetes, an app can scale to meet a surge in demand, such as a retail app that needs to service more customers on a busy holiday shopping day.

  • Portability. White blood cells enable us to remain healthy by moving around our body to fight infection wherever it occurs. Likewise, containers need to be very portable too – helping us move code between environments, such as from on premise systems to a cloud, or moving a microservice through the build, test, and production cycle.

  • Security. Through medical advances and biological sciences, we’ve learned how to replace unhealthy cells with healthy ones, such as procedures like bone marrow transplants that leukemia patients receive. The same is true for containers: when there are issues with code in a specific container (like a memory leak), we can identify and isolate the code issues and fix this by replacing the unhealthy container with a healthy one, without needing to take the entire application down.

Developer diaries

Watch more IBM Developer Diaries.

Start on your path to app modernization by using containers