DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. Is Your CI/CD Keeping Up in a Cloud-Native World?

Is Your CI/CD Keeping Up in a Cloud-Native World?

Make sure that your CI/CD processes are staying in line with new focuses on developing cloud-native applications.

Krittika Banerjee user avatar by
Krittika Banerjee
·
Apr. 10, 19 · Opinion
Like (1)
Save
Tweet
Share
7.42K Views

Join the DZone community and get the full member experience.

Join For Free

Cloud-native is a concept that has now become embedded into modern software development. In a nutshell, cloud-native is an approach to building, delivering, and operating applications to fully leverage the advantages of the cloud computing delivery model. It involves a lot more than just running your existing applications using cloud instances. Cloud-native applications are typically built using microservices and run on a containerized and dynamically orchestrated platform, based on the foundational principles of creating scalable apps, resilient architectures, and ensuring the agility to make quick changes.

It is not surprising that a growing number of organizations are turning to continuous delivery workflows and DevOps as they build cloud-native applications. Continuous delivery-enabled automation can play an important role in truly transforming the application architectures of an organization; they are the basis for all of the patterns and practices that make applications run on container orchestration platforms, such as Kubernetes. However, as IT organizations try to embrace the continuous delivery model for the cloud-native paradigm, they often face challenges that they didn’t anticipate.

What Are the Challenges Associated with Cloud-Native CI/CD?

The biggest problem in most instances is intertwining the concepts of CI (Continuous Integration) and CD (Continuous Delivery). While traditional CI/CD solutions can address the “integration” part reasonably well, i.e, the process of integrating code into a mainline code base, CD is much more complicated. To achieve true CD, you need to organize your software testing, staging, and deployment processes in a way that enables automation as much as possible and makes them continuous. In a cloud-native approach, achieving CD becomes all the more challenging with several microservices running in parallel. Without a standardized, reliable method of delivering new services to production, your operational challenges will increase as you would need to manage an entire ecosystem of services, rather than just one application.

Many traditional CI/CD services were developed long before cloud became the de facto standard and fall short in this respect. The deployment features that they provide are more suitable for monolithic web application deployment, with custom scripts, manual configuration and siloed release operations. When teams move to cloud-native computing and containers, they need to spend considerable efforts tinkering with ways to ensure proper orchestration of resources in the cloud, packaging up software as Docker images, or building Kubernetes YAML files. This often leads to a situation where teams end up investing precious engineering time in handling the task of maintaining and scaling internal infrastructure, while they remain bogged down by issues pertaining to lack of stability and poor user experience.

Is There a Solution in Sight?

A whole new set of tools and best practices are now emerging to enable increasingly automated and precise deployments for cloud-native applications. Ideally, the tool of choice should allow you to set up a new pipeline for a new service, both swiftly and predictably. Having your pipeline defined as code or configuration also helps you increase the robustness of your disaster recovery strategy. Since the pipeline can be swiftly recreated, and changes to the service can be delivered with minimal delay, you can ensure faster recovery when disaster strikes.

A well-rounded CI/CD solution should also let you version control the pipeline configuration alongside the corresponding application code and container specifications. This marks a major shift from the traditional approach in which build and deployment configurations are stored in separate repositories, and solely managed by Operations teams. Storing all configurations in a single version control system will ensure a greater level of granular environment control, making all changes traceable and repeatable — just like regular application changes. With this move, autonomous DevOps teams can have the flexibility to become increasingly involved in processes that were previously owned entirely by Operations teams.

The Road Ahead

The shift to cloud-native can be a double-edged sword for many organizations, and adapting your continuous integration and continuous deployment (CI/CD) tools and practices is mandatory to keep pace. In order to realize the full promise of cloud-native, you must implement the tools and practices best suited to your unique business goals. Of course, real transformation only comes when an organization’s culture and values are aligned with the way teams work. In the book, Site Reliability Engineering: How Google Runs Production Systems, key members of Google’s Site Reliability Team provide original context and insights around how their commitment to the entire SDLC (Software Development Life Cycle) has enabled the organization to successfully build, deploy, monitor, and maintain some of the largest software systems in the world. This concept has taken hold over the past couple of years as DevOps practices have become more mainstream and concepts such as cloud-native are being increasingly discussed. Given that it’s still early days in the land of cloud-native, it will be interesting to observe its evolution, both as a culture, and as an ecosystem of supporting tools and practices in the days to come.

Continuous Integration/Deployment application Kubernetes Cloud computing

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • 5 Factors When Selecting a Database
  • Top Three Docker Alternatives To Consider
  • Key Considerations When Implementing Virtual Kubernetes Clusters
  • Bye-Bye, Regular Dev [Comic]

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: