The benefits of deploying software on the cloud
This highly abstracted view of running infrastructure allows individual software teams to concentrate on building software to solve business problems without having to worry about infrastructure problems.
The Helm charts used by software teams can be version controlled, providing the ability to return to any previous versions.
We take advantage of this immutable, containerised hosting environment by treating our applications and services as ‘cattle’ not ‘pets’ (in the past we’d treat our services like pets – they were special and unique and you did everything in your power to keep them up).
Now services are no longer unique because they are built from code, they can be instantly replaced if they become unhealthy. This avoids wasted time trying to diagnose the problem in production, and negates the possibility of the app going down and leaving our users without the service.
Kubernetes and Istio provide this capability thanks to the declarative principles of both. The control plane constantly monitors the service state. If a running state differs from its declared state, Kubernetes restores the requisite nodes/pods, in line with the desired configuration, in a fully automated way.
The features of Kubernetes and Istio are inherited by each software team, as they are on-boarded to the cloud platform, giving us powerful re-use of infrastructure, automation and abstraction.
Our software teams are able to stand-up new NodeJS or Java Spring applications, fully separated from existing applications on the same cloud platform, with minimal effort. There’s no need to build, design and engineer the underlying hosting infrastructure and network layer that these apps will run on. There’s no need to manage any servers or operating systems. There’s no need to engineer new deployment methods.
By conforming to the Kubernetes configuration principles, a software team can go from inception to production in a matter of weeks, where previously it would have taken months.