What is Continuous Delivery?Continuous delivery is a development model where software is continually built, tested, and packaged for release to get it into the hands of users quickly. It requires that engineers share code to a central code repository. The goal is to always have a deployment-ready product. Multiple pipelines of continuous delivery can be running at the same time to allow for more complex features. This is different from the closely related practice of continuous deployment, where release happens automatically when code is committed. Continuous delivery requires the additional step of manual approval. Software is moved to a testing or inactive environment after completion but is ready to deploy on approval.
Agile Delivery for Agile ProcessesContinuous delivery is right in line with Agile methodologies.The process is dynamic, responsive, and iterative with lots of room to accommodate user feedback. It has a laundry list of benefits, including:
Shorter time to marketA minimum viable product (MVP) gets to market quickly, with updates released as they’re finished. The constant activity keeps the product fresh and exciting. It allows for feedback sooner than would be possible with traditional delivery.
Highly responsive to feedbackWhen feedback arrives earlier in the development process, developers have more options for improving future releases. They can also tweak new features to maximize their effect while the post-release excitement is still high.
Lower riskSmaller releases have less disruptive potential if something goes wrong. Plus, with the product always ready for deployment there’s no high-pressure release dates to stress over.
Better productAnother advantage of smaller regular updates is more frequent testing, which translates into fewer bugs. Errors are easier to fix when caught early. There’s also the fact that incorporating feedback earlier leads to an end that’s more closely aligned with market demand.
Higher team satisfactionContinuous delivery is an easier development process overall, with less stress and more interaction with customers. When developers get fast reactions to their work they have a better idea of exactly what does and doesn’t work for end users.
Getting Around the LimitationsThere are some drawbacks to continuous delivery, but these can be minimized with careful planning and strong leadership support.
Problem: Organizational hurdlesBuilding out a new continuous delivery pipeline can be complex. There may be organizational barriers that make continuous delivery difficult, like assets only one department can access. From a human perspective, some managers resent taking time that could be spent building features on reorganization. Solution: Make a clear case with employees for the value of continuous delivery and demonstrate executive commitment. Actively foster a culture of collaboration, to include breaking down operational bottlenecks wherever possible to enable richer cross-departmental cooperation.
Problem: Feature branchingSome developers have had trouble with “feature branching”, where they don’t want to merge their current work with the main code because the full feature is too large to finish in one session. Solution:Build in the ability to turn a feature on or off, like activator genes in DNA. This way engineers can still merge their code, but the feature under development is hidden as a default. It doesn’t go live until intentionally activated.
Problem: Initial InvestmentExecutives may hesitate to commit the resources necessary to change workflows and build continuous delivery pipelines. Solution:Compare the cost of restructuring with the savings from lower cost deployments and faster time to market. In many cases the potential benefits will get the team on board.
When Continuous Delivery Doesn’t FitUsing continuous delivery is harder- even entirely unsuitable- in some cases. It’s very hard to develop monolithic architectures this way. Some companies don’t have the resources to invest in workflow reorganization. Finally, special care is needed when using continuous delivery in fields with heavy legal or regulatory standards. Those limitations aside, however, continuous delivery has a lot to offer. It’s a practical way to allow the kind of constant collaboration and iterative development that lies at the heart of Agile development. In the right hands, it can make the difference between an app that does okay and an app that shoots past the client’s most optimistic goals.
Curious about continuous delivery? Wondering how it would affect your next development project? Set up a free consultation with one of Concepta’s experienced developers to learn more!