Editor’s Note: This blog post was originally posted on The New Stack.
Talk to anyone in the DevOps community nowadays and the words “cloud native” pop up again and again. If you’re new to the world of continuous integration and continuous delivery, you may have heard the phrase “building cloud native apps.” But seriously, what does it mean? Is it just another buzzword for what we are already doing?
At its most basic, cloud native applications contain key elements. DevOps teams take a microservices-design approach, and they orchestrate those services on containers. To deliver these applications and the multiple microservices, DevOps leverages automation and continuous delivery. They are built on the cloud, developed for the cloud and deployed to the cloud. The result? Cloud native apps are composed of fault-tolerant blocks that enable agility and can be delivered and iterated on quickly.
You can also see how the Cloud Native Computing Foundation (CNCF) defines cloud native apps:
- Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds;
- Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach;
- These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
So, why is all of this so important? As a developer, you need to understand the basics of cloud-native applications if you want to build them. To guide you, there are a few must-haves:
- Resiliency. Cloud-native apps need to guarantee services, no matter what. Developers need to architect the apps for failures. Assume the worst;
- Reusable services. Architect services so that they can be across applications and by other services. This will also require you have interface contracts and discovery mechanisms;
- Scalability. Horizontal scalability is critical in order to function effectively. Ensure that the underlying compute, storage, database and networking resources, as well as the application logic. support scaling to multiple instances of services to meet demand.
Cloud native apps exploit the world of cloud technology, so they’re designed specifically to work in a cloud environment. The inherent benefits of scalability and resiliency make the move towards building cloud native apps an attractive proposition for developers.
In the world of CI/CD, building cloud native applications can be an intense process that requires a variety of tools. Among them, they require a DevOps approach where developer and operations needs are aligned and complementary. Either Dev and Ops collaborate, or the pipeline, infrastructure and tools support full-stack development, in which developers can code, build, test and deploy to production without cross-functional dependencies.
The technology also requires microservices. Individual microservices tend to be smaller and more manageable than traditional applications while communicating across the services, as well as managing the life cycle of the services, can be complex and challenging.
Now that you understand what the buzz is about and you want to begin developing cloud native apps, how do you get started? If you are an individual or part of a small team, the most obvious place to start is with Jenkins X. A Jenkins sub-project developed and introduced by a number of CloudBees team members including James Strachan, Jenkins X is a way for developers to get up and running building cloud native apps in the Kubernetes environment. Built on GitOps, Jenkins and best-of-breed tools from the Kubernetes eco-system, Jenkins X allows you to get started tackling cloud native development in minutes versus weeks or months when trying to just figure out how to port your applications to the cloud yourself or with Jenkins alone.
If you are part of a larger team and need to support cloud native apps development in enterprise environment CloudBees Core for Kubernetes CD is available, which extends Jenkins X with a graphical interface, enhanced access control and additional enterprise-level features.
- Read about important concepts in cloud environments
- Download an ebook on using Jenkins X to build cloud native apps
- Learn about pluggable storage and ephemeral Jenkins masters
Brian is a DevOps evangelist and practitioner with a focus on agile, continuous integration (CI), continuous delivery (CD) and DevOps practices. He has over 25 years as a software professional in multiple domains including quality assurance, engineering and management, with a focus on optimization of software development. Brian has led an agile transformation consulting practice and helped many organizations implement CI, CD and DevOps. Follow Brian on Twitter.