Cloud native computing is a programming approach that is designed to take advantage of the cloud computing model. It uses open source software that supports its three key elements: Containerization, orchestration of the containers, and microservices.
Containerization is foundational to cloud native computing, because containers allow you to package together everything that is needed to run an application into one executable package. This might include things like a Java VM, some kind of application server, and the software itself. The container is very portable and independent of the environment you will run it in, so it can be run in a virtualized environment. The Docker project is the most popular container product and its name is almost synonymous with containers at this point.
Orchestration of the containers is important for cloud native computing, because it allows you to automate the management and deployment of your containers for real-time load balancing, which would be practically impossible to do manually. Container orchestration lets you monitor the system, balance the load between containers, start up and shut down containers in response to specific triggers, share authentication credentials between containers, and much more. Kubernetes, Docker Swarm, and Amazon ECS are some popular container orchestration tools.
Cloud native applications are built as a series of microservices that each do one thing rather than as large traditional applications. This makes them fast to build and adapt to change, and also supports the kind of horizontal scaling needed when user requests outpace the capacity of a specific microservice. In a cloud computing model, this efficient approach can help reduce monthly costs since increasing the capacity for one microservice is much cheaper than paying for additional hardware space for the unused parts of a large program.
Products are available that enable developers to implement a cloud native programming approach.