Tough question indeed…
There is probably no other term in the tech industry that is as widespread and yet as widely misunderstood as these two words strung together.
“Cloud Native” ☁️ brings thoughts of something modern. Something that has weight and deep meaning. Something that we, in the digital era and marketplace, should be striving for. Saying “your application is not cloud native!” sounds like something that is ought to bring shame upon an organization and which should be immediately rectified.
Yet, few can articulate what being “Cloud Native” actually means and more importantly - what it doesn’t.
What I wanted to do here is provide my own take on the subject and hopefully clarify it further for anyone still looking to make sense of what that term means.
Not going into elaborate details, I want to provide you with a firm grasp of what this concept means at its core.
Let’s take a step back…
The reason that we use the Cloud is to offload as many of the technical pieces that are not our core competency from our organizations and into the Cloud provider. In other words, if I am building some kind of an application, it makes sense for me to let the Cloud environment manage infrastructure, platform, and other digital services that support my application but that are not adding any value to the actual business model.
That way, I can focus on what I do best, which is building my application. The Cloud can then focus on what it does best - namely, running all the lower-level machinery on top of which my application sits and operates.
Now, the Cloud provider offers an immense number of services and their number grows seemingly by the day. It is up to me to decide which of these services I will use and which I still want to have full control of (i.e. manage myself).
The services that I choose to use also reflect the “level” of my cloud usage
✅ IaaS (infrastructure as a service)
✅ PaaS (platform as a service)
✅ SaaS (software as a service)
There are more but these are at the core levels of cloud adoption.
So, in that light, all that “Cloud Native” really means is that an application is making full use of cloud services and is 100% (or near that) reliant on those cloud services to function.
In mobile application development, if you have a native iOS app, you would often refer to it as “native to iOS” or “iOS native”. That’s because this app is making use of iOS specific functionality. That app is therefore both tied to iOS in a sense, and also is able to reap the benefits that come with leveraging iOS to its fullest.
Same thing with cloud native applications.
Now, there is of course more to it. There is the concept of 12-factors apps which adhere to a set of standard best-practices that typically characterize a well-architected cloud application. There are also many design patterns as well as supporting practices in terms of development life cycle, deployment, etc that are also typical of cloud native applications.
However, at its core, what a cloud native application does is take full advantage of the constructs that the Cloud vendor provides. By the same token, a cloud native application would need to go through a significant transformation, if - for example, we wanted to move it from a cloud environment to an on-premise and non-cloud technology stack.
To give a concrete example of such an application:
☁️ ✅ An application based solely on technologies such as Lambda, DynamoDB, IAM, Cognito, and Kinesis in AWS is a cloud native application.
☁️ ❌ However, consider the same application (in terms of its business functionality) deployed as a set of containers in a Kubernetes (EKS) cluster, and using your own database and message broker (eg - Mongo and RabbitMQ). Even if that Kubernetes cluster is deployed on cloud infrastructure, this is not a cloud native application. That’s because it does not actually make use of any of the constructs that the Cloud (AWS in this case) provider. Although it makes use of EKS - the database, compute, and messaging are all managed and administered by your team and not the cloud environment..
Hope this sheds some light onto what being “Cloud Native” means 💡
Kommentare