Most of what we speak about at LSD OPEN is focused on either cloud native or Kubernetes – not exclusively about how cool it is or all the amazing things we can come up with using them – but we also see it as the future of where businesses that rely on scale are heading. The demand from their customers on their digital platforms has shot up even before the COVID-19 pandemic forced everyone online, and cloud native is how businesses are meeting that demand. Something that we’ve noticed is that while cloud native solves so many of the problems that developers are experiencing, there still seems to be some confusion around the difference between the cloud native approach and simply ‘lift-and-shifting’ into the cloud.
In this piece I’m going to take a closer look at cloud native to highlight why you should be looking at it too.
LET’S START AT THE TOP: WHAT DOES CLOUD NATIVE MEAN AND WHY DO WE THINK IT’S COOL?
Firstly, let’s examine cloud native as a concept. The Cloud Native Computing Foundation (CNCF) defines ‘cloud native’ as “…technologies (that) empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach”.
This means that you are able to move away from static, monolithic applications that are dependent on the underlying infrastructure to operate. Instead, you are moving to smaller, more scalable applications with microservices (or containers), enabling the same code running on your developers’ laptops to run on a VM in the datacenter, or in a public cloud. The container code is exactly the same and can be deployed anywhere, a million times over, with the exact same result.
Having your applications broken into smaller microservices means that they can be fixed, upgraded or patched one service at a time without affecting the whole application, greatly reducing the time it takes to implement changes, as well as downtime.
The most talked about ability of microservices is that you are able to scale rapidly according to the demand faced by your platform. Traditionally, adding more capacity to a giant application required you to deploy a VM, patch the operating system, install the application, add firewall rules and finally add it to the load balancer. This can take an hour with some really good automation, but most likely you are looking at days or even weeks spent by your deployment team. With a good Kubernetes platform and microservices, the entire process is reduced to seconds or minutes and is completely automated, out of the box.
Cloud native also means that APIs are crucial, because all of your services are made available to users (internally or externally) through an API. This means that each team looks after their own service and everyone can consume it easily. It also enables you to expose the API to clients who can pay to use the service. As an example, look at how some Home Affairs branches in South Africa are making ID data available to banks to check customer details in real-time. The banks pay for this service, opening up an additional revenue stream for the department.
Cloud native and containers mean that your applications are designed and optimised to work in the public cloud, but can essentially run in any environment configuration. This is important to note as many organisations are already considering the move into the cloud, and many of them are more often than not sold a ‘lift-and-shift” approach, where the entire IT environment is moved into the cloud without refactoring for anything. This means that the VMs in the datacenter are created as-is in the public cloud, which means that they are optimised for those datacenters but not for the cloud. Another shock awaits them, because as soon as the first real bill for your cloud environment arrives, your entire year’s IT budget will disappear in a single month.
The solution? Building applications in a cloud native way, on-premise first and then moving to public cloud, ensures that you get the optimal experience and actually receive the benefits of the cloud that you were after in the first place.
Cloud native computing as a concept is represented by a foundation where all the vendors, developers and partners meet to discuss the technologies and solve problems. You can learn more about the CNCF and what they’re about at https://cncf.io
WHAT’S THE CATCH TO CLOUD NATIVE?
As with most things technology related, there are some things that you should be aware of:
- Firstly, cloud native is complex. There are many tools and many moving parts in the CNCF landscape. Picking the one that you need for your specific use case can be daunting.
- Secondly, skills are hard to come by and skilled people are often headhunted.
- It requires a complete change in the way you operate. Your developers need to develop applications as microservices, understand how they work and how to troubleshoot them.
- Automation is key – not just development automation, but automating infrastructure deployments and management.
- Ensuring you secure all the relevant components including the platform, the container images, the libraries, can be time consuming and difficult. ‘Shifting left’ the security component is important and changing late in the SDLC is expensive and difficult.
However, even with these challenges, cloud native enables the digital acceleration of companies that need to reach their customers and new markets. Many of these difficulties are already being approached differently and catered for with other cloud native technologies, which means that over time these challenges are disappearing too.
Hopefully with this information and insight you have a better understanding of cloud native and why you should be paying attention to it, even if it isn’t in your immediate plans. We can talk about it for hours here at LSD and would love to hear your thoughts and ideas on it. Feel free to reach out or comment on the post below.