People seem to be talking more and more about cloud-native apps, and cloud-native development. But what does this mean?
Today, many applications are hosted on public cloud resources. However, this alone doesn’t mean they are cloud-native.
A cloud-native app is one which has been designed solely for the cloud. It means cloud computing has been leveraged in every element of its design. This separates it from an application that has been moved onto the cloud or merely ‘cloud enabled’ (partially built on cloud).
There are many benefits to a more cloud-based design approach which incorporates the latest technologies and practices. For example DevOps, microservices and containers. This method is what’s known as cloud-native development.
DevOps is a delivery/development philosophy which holds that the ops and dev teams. It should be incorporated for faster, more reliable developments.
In practice, this means employing cloud automation technologies to reduce manual work and guard against human error. The result of DevOps is to reach constant delivery/intergeneration, in which new features can be tested and implemented with negligible human input.
A cloud architecture approach in which applications are made up of many smaller cloud-based services. This contrasts with monolithic architectures, where all elements of an application are hosted centrally, and are generally inseparable.
Although a Microservice application is more costly to develop in the short term, once achieved, it offers far more flexibility and scaling options than monolithic architecture don’t.
The name would suggest these are totally Serverless. Instead, an on-demand serve provision performs the application’s requests, as opposed to running on permanent cloud servers.
The benefits of this includes reduced latency, faster time to market, and lower cost of production; completely avoiding the traditional costs of infrastructure provisioning.
Containerised applications run off containers, which are a newer form of the traditional cloud server – the Virtual Machines (VM).
In terms of required compute resources, Containers are much lighter than VMs, and are more environment agnostic and can be deployed on a greater range of infrastructures without undergoing too much change. Therefore, containers offer increased flexibility and lower total cost.
Cloud-based applications, particularly microservice-based applications, can scale more easily. In the case of microservices, the ability to scale one service without scaling another is especially impactful, avoiding the costs of scaling all other elements in tandem, as would be the requirement for a monolithic application.
Cloud-native infrastructure is geared towards automation and reduced management costs. The most obvious example of this trend is Serverless, with applications being uploaded as functions only, and provisioning handled automatically.
DevOps are more suited to Cloud-native applications, which seeks to automate testing, building and deployment. In term resulting in shorter overall time to market.
Increasingly, Cloud-native is seen as the required target for competitive development. Although, many may cut corners with ‘cloud-ready’ or ‘cloud-enabled,’ the clear advantages of true cloud-native development and applications will ensure it becomes the norm in the future.
Date: April 12, 2021