Before the days of agile, scrum, and devops, software development was often done over many-month release cycles. This was largely because complexity in functional requirements, integrations, application architecture, development tools, and infrastructure made it difficult to operate faster development cycles. Even when agile development became a mainstream development process and development tools improved, organizations focused on release cycles that were on the order of several weeks to a few months.
Today, development teams that have implemented continuous integration and delivery (CI/CD) pipelines are taking steps to shorten their application release cycles. Continuous integration automates the build and kicks off test automations while continuous delivery automates code pushes and delivery processes to a targeted development or testing environment. The two processes—when managed with tools like Jenkins, TravisCI, CircleCI, Azure Pipelines, or AWS CodePipeline—automate the collaboration and plumbing that’s required for faster and more frequent application delivery.
But having CI/CD in itself is not sufficient. It also requires changes in business processes, culture, and other technical practices. Let’s look at some specifics.
Determine why shorter development cycles are needed
Going faster has some business and technical advantages. It enables faster time to market, especially where applications provide competitive value, enable significant productivity improvement, drive a happier workforce, or provide other usability improvements. It can also reduce risk when deployments have fewer changes and less likely to have unforeseen issues or dependencies. Organizations with very mature devops practices and operating in hypercompetitive areas may operationalize continuous deployments, the added practice of deploying to production multiple times per day.
But going faster comes at a cost in maturing the technical and business processes that enable driving safely at a faster speed. In addition, continuous deployment may not be the right answer for your business or application especially if they affect mission-critical workflows, operate in regulated environments, or are life-impacting technologies.