Cloud Native / Containers / Kubernetes / Microservices / Sponsored

What Cloud Native Apps Really Mean

1 Mar 2019 3:00am, by

CloudBees sponsored this post.

Brian Dawson
Brian is a DevOps evangelist and practitioner at CloudBees, where he helps the community and customers with the implementation of Agile, CI, CD and DevOps practices. Prior to CloudBees, Brian spent 22-plus years as a software professional in multiple domains including QA, engineering and management. Most recently, he led an Agile Transformation Consulting practice helping organizations small and large implement CI, CD and DevOps. Brian worked at CollabNet, VA Software, Sony Computer Entertainment, Sega, Namco and Apple before joining CloudBees. His roots are as a C/C++ developer, but his primary job has always been gathering and distributing knowledge and using shared solutions to solve unique problems.

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.

What’s Required

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.

If you want to hear more about Jenkins X, listen to the podcast here:

The Cloud Native Computing Foundation is a sponsor of The New Stack.

Feature image via Pixabay.

A newsletter digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.