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 Video Library
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
View Events Video Library
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

Modern Digital Website Security: Prepare to face any form of malicious web activity and enable your sites to optimally serve your customers.

Containers Trend Report: Explore the current state of containers, containerization strategies, and modernizing architecture.

Low-Code Development: Learn the concepts of low code, features + use cases for professional devs, and the low-code implementation process.

E-Commerce Development Essentials: Considering starting or working on an e-commerce business? Learn how to create a backend that scales.

Related

  • Continuous Integration and Continuous Delivery for Database Changes
  • Why Incorporate CI/CD Pipeline in Your SDLC?
  • How to Become a DevOps Engineer
  • DevOps Best Practices

Trending

  • What Is SQL Vector Database?
  • A Comprehensive Guide To Working With JSON in JavaScript
  • Advanced Content Prioritization Techniques for Web Developers
  • Using Unblocked to Fix a Service That Nobody Owns
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. DevOps and CI/CD
  4. 7 Prerequisites for Successful Enterprise CD Implementation

7 Prerequisites for Successful Enterprise CD Implementation

CD is a natural evolution from CI and Agile software development practices. However, the cultural and operational challenges to achieving it are much greater.

Cyrille Le Clerc user avatar by
Cyrille Le Clerc
·
Mar. 19, 17 · Opinion
Like (1)
Save
Tweet
Share
7.4K Views

Join the DZone community and get the full member experience.

Join For Free

Continuous Delivery as a methodology and tool to meet the ever-increasing demand to deliver software at the speed of ideas is quickly gaining the attention of businesses today. Continuous Delivery, with its emphasis on keeping software in a release-ready state at all times, is a natural evolution from Continuous Integration and Agile software development practices. However, the cultural and operational challenges to achieving Continuous Delivery are much greater.

For most organizations, Continuous Delivery requires adaptation and extension of existing software release processes. The roles, relationships, and responsibilities of people across the organization can also be impacted. The tools used to deliver, update, and maintain software must support automation and collaboration properly in order to minimize delays and provide tight feedback cycles across the business.

Organizations looking to transition to Continuous Delivery should consider the following seven pre-requisites. These are practical steps that will allow them to successfully execute the cultural and operational changes within the regulatory and business constraints they face.

1. Shared Goals and Communication Between Development, QA, and Operations 

While Continuous Integration limits its scope to the development team, Continuous Delivery embraces the testing phases of the quality assurance team and the deployments to staging and production environments that are managed by the production operations team.

This is a major transformation in software development, and to succeed in transforming a Continuous Integration platform into a Continuous Delivery platform, integrating the QA and operations teams in its governance — as well involving the development team — is critical. Collaboration and communication are vital components of successful software development today, and in a Continuous Delivery environment, they have to take center stage.

2. CI Must Be Working Prior to Moving to CD

Continuous Delivery is an extension of Continuous Integration. The prerequisite to Continuous Delivery is to have Continuous Integration in place and working during the project, including source control management, automated builds and unit tests, as well as continuous builds of the software.

3. Automate and Version Everything

Continuous Delivery involves the continuous repetition of many tasks such as building applications and packages, deploying applications and configurations, resetting environments and databases. All these tasks in Continuous Delivery should be automated with tools and scripts and be kept under version control so that everything can be audited and reproduced.

4. Sharing Tools and Procedures Between Teams Is Critical

Continuous Delivery aims to validate the deployment procedures and automation used in the production environment. To do this successfully, these procedures and automations must be used as early on as possible so that they are extensively tested when used to deploy software to production.

In most cases, the same tools can be used in all environments, i.e., integration, staging, and production. The automation scripts should be managed in shared source code repositories so that each team (development, QA, and operations)can enhance tools and procedures. Mechanisms like pull-requests can help the governance of these shared tools and scripts.

5. The App Must Be Production-Friendly to Make Deployments Non-Events

Applications should simplify their deployment and rollback procedures so that deployments in production become non-events. A major step to achieving this is to reduce the number of components and of configuration parameters deployed. The ease of rollbacks is important when deploying new versions; that is, allowing the ability to quickly rollback in case of problems. Feature toggles help to decouple the deployment of binaries from feature activation — a rollback can then simply be the deactivation of a feature, thanks to a toggle.

Special attention should be paid to any changes of database schemas, as this can make deployments and rollbacks much more complex. The schema-less design pattern of NoSQL databases brings a lot of flexibility, moving the responsibility of the schema from the database to the code. This concept can also be applied to relational databases.

6. The Infrastructure Must Be Project-Friendly

This will empower people and teams. Infrastructures should provide all the tooling (GUIs, APIs, and SDKs) and documentation required to empower the development and QA team and make them autonomous in their work. These tasks include:

  • Deploying the application version of their choice in an environment.
  • Managing configuration parameters (view, modify, export, import).
  • Managing databases (creating snapshots of data, restoring a database snapshot).
  • Allowing view, search and notification alerts on application logs.

Public cloud platforms, mainly Infrastructure as a Service (IaaS) and Platform as a Service (PaaS), are examples of project-friendly platforms.

7. App Versions Must Be Ready to Be Shipped Into Production

One of the most important goals of Continuous Delivery is to allow the Product Owner to decide to deploy into production any version of the application that successfully goes through the Continuous Delivery pipeline; not only the version delivered at the end of an iteration with a “beautiful” version number.

Reaching this target requires many changes in the way applications are designed:

  • Features that are not yet validated by the QA team should be hidden from end users. Feature toggles and feature branches are two key ways to implement this.
  • Build tools should evolve from the concept of semantic versions separated by intermediate unidentified snapshot versions to a continuous stream of non-semantic versions. Subversion repositories help provide ordered version numbers thanks to a revision number. Git, the free, open-source distributed version control system, is more complex to use for this due to its unordered commit hashes; special tooling may be useful to make this version identifier more human-readable.

The crux is that Continuous Delivery is not just about a set of tools; it is also about the people and organizational culture. Technology, people, and process need to be aligned to make Continuous Delivery successful, and a collaborative approach is fundamental to its success. Implementing these best practices can allow organizations to reap the rewards of a more fluid, automated approach to software development — and one that provides business agility, too.

Continuous Integration/Deployment Contextual design agile Software development Delivery (commerce) Relational database application Production (computer science)

Published at DZone with permission of Cyrille LeClerc, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Continuous Integration and Continuous Delivery for Database Changes
  • Why Incorporate CI/CD Pipeline in Your SDLC?
  • How to Become a DevOps Engineer
  • DevOps Best Practices

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
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: