Continuous Delivery (CD) is not a new concept, yet it is one that few companies have fully embraced.
Why?
Simply put, CD can be really hard to do well.
Increasingly complex testing requirements, shifting infrastructure and ever-changing customer needs are some of “usual culprits” to common CD speedbumps. But what are release teams to do? Customer expectations for better features, delivered faster, only grow by the year.
While continuous delivery can be difficult to truly controller in complex organizations, feature flags provide “guard rails” for teams wanting to start or grow their current CD program. Shifting from release to feature granularity will keep release teams on schedule and avoid large rollbacks due to feature dependencies.
Feature “kill switches” provide the safety of turning off any buggy features without having to redeploy code. Testing in production gives QA teams increased confidence that the code will perform as intended in real environments. Finally, providing the shipping granularity for end users based on their certain characteristics allows for increased testing or rollout granularity, experimentation and customization. Teams’ focus can move beyond moving bits from different target environments to growing customer value, with shared visibility and governance across Dev and Ops along the way.
Now, there is a misconception in the world of DevOps that feature flags are the “frosting on the cake” of CI/CD, in that they’re a “nice to have” item that teams should consider implementing after they feel they are mature enough with their CI/CD pipelines. When asked, many DevOps practitioners will say, “We can’t even consider feature flags right now. We’re still trying to controller CI, and after that, we need to look at growing CD. After that, we’ll give you a call to discuss feature flags.” That “roadmap” approach to DevOps toolchains is understandable, but anyone in this industry will tell you that these concepts are never perfectly linear. Feature flags should actually be used as a tool to expedite CD maturity versus one that should be used after CD is in place.
Traditional CD vs. CD with Feature Flags
Before looking at how feature flags alter the CD process, let’s first think about how “traditional” CD can fall short at some companies:
Incomplete testing process: Nearly all testing occurs in pre-production environments without the “real world” experience of production available to ensure the code is truly ready to go. This approach creates a slower testing process - one that can lead to unforeseen surprises to code once it hits production and the need for an emergency rollback of a release
“Big bang” releases: Typically releases contain a variety of features that are deployed to production for all users at once. If one particular feature is delayed or buggy, it impacts the entire release and the whole update must be rolled back. This scenario also means bugs impact the entire user base, creating a large “blast radius” for issues seen by users
Limited granularity in user testing: While some companies will perform smaller testing releases (such as a canary release or blue green deployment), the selection of users tends to be random and focused on moving subsets of users to different target environments. These tests don't allow for experimentation based on specific user characteristics
Disjointed teams: Business teams and developers must work in tandem to deploy a release to production on the same schedule. But how often are these teams fully on the same schedule? More commonly, developers are delayed in starting their next sprint as they try to get a release out the door
So how do feature flags change CD for the better? Remember, feature flags give the ability to turn sub-sections on an application on or off remotely in runtime without redeploying. For continuous delivery, this provides release schedule consistency, an emphasis on customers and shifting certain testing to production.
Supercharge Your CD Maturity and Software Delivery
Gaining the advantages of combining feature flags with continuous delivery is easiest when tools are natively connected to one another. CloudBees Feature Management and our industry-leading CloudBees CI and CD solutions now have native integration with one another for immediately increased CD maturity and capabilities.
For more information on how feature flags help take software delivery to the next level, download our whitepaper How feature flags can enhance traditional CD processes