IBM goes from deploying twice a week to 100+ times a day.
Deploying 100+ times per day, up from 2 per week
1 minute time to deployment, down from 4 hours
IBM Cloud™ Kubernetes Service is a managed container service for the rapid delivery of applications that can bind to advanced services like IBM Watson® and blockchain. As a certified K8s provider, IBM Cloud Kubernetes Service provides intelligent scheduling, self-healing, horizontal scaling, service discovery and load balancing, automated rollouts and rollbacks, and secret and configuration management. The Kubernetes service also has advanced capabilities around simplified cluster management, container security and isolation policies, the ability to design your own cluster, and integrated operational tools for consistency in deployment.
IBM Kubernetes Service team had a deployment process that was lengthy and cumbersome. On Tuesdays the team spent three to four hours running a series of complex Jenkins jobs that would build different microservices and components, and then deploy them to various clusters.
Unfortunately, treating deployments as one big monolithic block of code was not scalable for them, sometimes they would have hundreds or even thousands of changes going into a single deployment. In place of a feature flag service, they would hard code an environment variable into the deployments. In order to make changes to that, they would have to go to the system, update the environment variable, and restart the applications. This was a lengthy and complicated process they sought to replace.
In updating their stack and systems they wanted to focus on three important initiatives: improving visibility, decentralizing and decoupling services, and simplifying processes.
IBM chose LaunchDarkly's feature management platform to address two use cases. One is the familiar feature-based delivery, launching features for progressively larger audiences as your confidence increases.
The second is rather unique and specific to their requirements to simplify processes. They have created what is essentially a light-weight service mesh for deployment by using feature flags to manage deployments. They feature flag each component in an environment, and since they've begun using feature flags to control deployments, the team now thinks of every single micro-service as its own independent entity. Now they roll out and deploy these all separately, no longer having to deal with the monolith.
IBM needed to have a deployment schedule that matched the pace of the fast-growing Kubernetes community. Prior to implementing LaunchDarkly it took three to six months to deliver features added to the new versions of Kubernetes. Now, they are able to deliver those features to IBM Kubernetes cloud users before they are even finalized in the latests stable build from the Kubernetes project. By feature flagging new functionality, they're delivering within weeks, rather than months or quarters.
Now IBM can roll out updates to one, sixty, or a thousand Kubernetes clusters in sixty seconds. Before LaunchDarkly, their release process was tied to their deployment process. Now leveraging LaunchDarkly’s feature management platform they are able to decouple these two actions. Increasing their release velocity from a few deployments a month, to hundreds a day. And because the code is controlled by feature flags they have less risk and more stability.
Besides delivering more, faster, the team has found immense value in using the LaunchDarkly platform to test in production. Now, the team can allow internal IBM teams or customers to safely try new features before fully releasing to the public. And leadership has found that teams are operating more autonomously than before–there has been an increased interest in the code they actually deploy into production.