What is cloud native development? Those who think that it’s simply a development process hosted in the cloud or a development operation for apps that run in the cloud, may not quite understand what cloud native development really means.
Indeed, it’s easy to have a number of misconceptions about how cloud native development works. Below, we walk through common misunderstandings about cloud native apps and the development processes behind them.
1. Cloud native development means developing apps in the cloud
For starters, using cloud-based development tools – such as a cloud IDE, or a hosted application release pipeline, like Azure Pipelines or AWS Beanstalk – doesn’t necessarily mean you’re doing cloud native development.
You certainly can use cloud-based development tools for cloud native development, if you wish. But you can also use traditional, on-premises development toolsets. Cloud native development does not imply a specific type of development tool or process.
2. Cloud native development means developing apps that run in the cloud
Along similar lines, simply developing apps that are going to be deployed into the cloud does not mean you are doing cloud native development.
Indeed, one of the biggest misconceptions about cloud native technology in general is the idea that cloud native apps have to run in the cloud. What cloud native actually means is that your app is scalable, distributed and (usually) modular from an architectural perspective. Although applications hosted in cloud environments often have these characteristics, not all do. You could deploy a non-scalable, monolithic application inside an EC2 instance, for example, which means you would be running the app in the cloud but it would not be cloud native.
Likewise, you could deploy cloud native apps on-premises using a platform like Kubernetes, which allows you to operate distributed, scalable, microservices-based applications anywhere – whether in your own data center or in the cloud.
3. Cloud native development requires containers
Speaking of Kubernetes – and, by extension, containers, which are the type of resource that Kubernetes hosts – it’s a mistake to assume that cloud native development has to focus on containers. It’s true that containers are one of the technologies at the center of the cloud native world. It’s also true that plenty of cloud native apps run in containers.
However, containers don’t have a monopoly over cloud native apps. You could also develop and deploy a cloud native application using serverless functions, unikernels, or even conventional applications that run directly on a host operating system. As long as your application is scalable and distributed, it’s cloud native.
4. A microservices app is a cloud native app
Cloud native apps use a microservices architecture. Microservices, which break application functionality into discrete units and codebases, make it easy to deploy applications efficiently, because you can deploy each microservice independently. In addition, because the microservices run independently, they increase fault-tolerance; one microservice’s failure won’t bring down the entire app.
That said, just because you’re using microservices doesn’t necessarily mean you’ve developed a cloud native app. You could create microservices that are difficult to scale, or that are all required to run on the same host, for example. In these cases, you’d be failing to operationalize the principles of scalability and distribution that are at the core of cloud native development.
5. Cloud native development is faster
In most cases, cloud native apps are developed using DevOps CI/CD pipelines, which enable rapid application development and delivery. However, there’s no guarantee that moving to a cloud native development strategy will make your development process faster. On the contrary, it can create complexity that leads to slower releases, if your pipeline isn’t well managed.
The point here is that while cloud native development should be fast, it takes effort to ensure it actually is.
6. Cloud native development is less secure
There’s a longstanding myth that the cloud is inherently less secure than on-premises infrastructure. It may be easy to assume that, by extension, cloud native development is also less secure.
Neither of these is true. Just as you can build a very secure cloud environment, you can create a very secure cloud native development operation. To do so requires you to understand where your cloud native code lives, who accesses and manages it, which artifacts you generate within your software delivery pipeline and how you can keep all of this secure.
7. Development can pivot instantly to cloud native
It may be tempting to think of cloud native development as something that you implement and then call complete. In fact, however, it makes more sense to view cloud native development as a journey, not a destination. There’s always room for improvement within cloud native development processes; they can be made more efficient, faster and more secure, for example.
So, even if you’re doing cloud native development already, don’t think of it as a challenge you’ve conquered and can move past. Focus on finding ways to double-down on the benefits of cloud native development.
So, what is cloud native development?
Now that we’ve discussed what cloud native development isn’t, we can explain what it actually is.
There is no official definition of cloud native development. But in general, you can define it as any development practice that focuses on building scalable, distributed, resilient applications. As we’ve noted, there’s no “one right way” to go about building such an app. Nor is there a specific way to deploy cloud native apps. It’s up to you to decide how you’ll create your cloud native development strategy – and to find ways to improve that strategy continuously once you’ve implemented it.