An overall theme of Cloud computing and the specific practices within it is fundamentally one of automation. The core value of technology is to continually automate low level procedures to free up people to work on more value add activities, ultimately leading to the utopian goal of full Autonomic Computing.
For example a great way to define your plan for DevOps tool chain adoption is through this lens. In this TechTarget article they outline a simple maturity model for planning this.
Self Aware Containers and Microservices
As we start to examine the principle applied to the Cloud Native field of containers and microservices this begins to highlight some tremendously powerful ideas and vendor innovations.
One in particular that seemed particularly challenging to me is the concept of self-contained microservices, where not only should monoliths be decomposed to small units but also those units should be autonomous.
Baking self-intelligence into a small piece of code seems somewhat oxymoronic, burdening it with such a heavy workload, however when you further consider the idea that containers are the ideal delivery method for implementing them this doesn’t seem so illogical.
For example as they describe Joyent is one vendor approaching this with a very novel architecture, where this self-aware automation is built into the container, via the Autopilot approach. They explain how they embed this helper app into each container, where it manages all the infrastructure relationship aspects, like autonomic capacity management. The microservice can enjoy autonomous benefits without being burdened with the requirement to achieve them itself directly.
As Bernard Golden describes containers are the ideal way to implement microservices and with this kind of automation built into this layer of computing, then the vision of self managing microservices is both practically possible as well as highly scalable, setting the scene for a new age of Autonomic Computing.