Many organisations are facing a brick wall when it comes to delivering value and innovation. Previously, these organisations were focused on moving existing applications from a client’s on-premise infrastructure onto a cloud platform. This “lift and shift” model worked for a time; it kept downtime to a minimum and it was easy to emulate existing applications and architectures. However, the cloud has so much more value and innovation to offer than what many businesses have been using it for.
Organisations who utilise all aspects of a cloud platform will be the ones who come out on top. Their clients will experience higher speeds, agility and innovation coupled with lower costs. All the servers, databases, operating systems, etc. are dealt with by the cloud platform, leaving more time for developers to focus on their code.
However, the route to this metaphoric pot of gold isn’t all that straight-forward. Many organisations will need to rework their existing architectures and approaches in order to fully unlock the abilities of the cloud. Not only will the applications and processes be required to change, but the people within the organisation and workflows will need to adapt too.
Cloud-native technologies, then, seem to be the be all and end all. The Cloud Native Computing Foundation definitely seem to think so, claiming that cloud-native computing “empowers organisations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds” (Cloud Native Computing Foundation, 2018). However, it’s important to note that the cloud can only work for a business if they keep on top of the basics. Innovation must be a key part of the business and their marketplace knowledge is imperative to being able to use the cloud to quickly react to marketplace events.
Cloud architecture is based on the practice of loosely coupled services, componentisation and fail-fast design. These help to ensure that not only are the applications easier to develop and test, but also each team can own their own services; they can then be developed, tested, scaled and maintained individually.
To create an application in a cloud-native manner may seem confusing. Simply put, it’s based on four layers: first is the architectural style, which defines the way that the development is carried out, which in turn uses a production process, which is finally run on the cloud platform. These four layers can be stepped through very quickly. For example, instead of liaising with procurement, waiting for servers to arrive and creating databases from scratch, a simple script would be run. This enables development to become much, much faster.
Deployments were once seen as a big event with lots of risk and potential for issues. The deployment of a cloud-native application is as simple as running an API call. Deployment in this way makes it a more routine aspect for the team, reducing the stress and anxiety that so often surrounds go-lives. Not to mention the automated rollbacks which are available when in the cloud!
Like any development, cloud-native comes with its challenges. Business cases will need to be managed differently, with focus being put on cost and operational efficiency as well as on improving business agility and reducing technical risks. Cloud-native platforms are inherently complex due to their compartmentalised nature. Some of this complexity can be averted by using good code management tools, however practices such as multi-platform security do not have any shortcuts and time must be spent to ensure that all platforms, both legacy and cloud, are secure. The final, and arguably biggest, challenge that will be faced is “change”. Not only are new platforms being introduced to the business, but the way that development happens, and change processes are managed, may take some time for people to get used to.
Cloud Native Computing Foundation, 2018. CNCF Annual Report. [online] San Francisco, p.4. is available here.