Continuous Integration/Continuous Delivery (CI/CD) Means Continuous Improvement
by Matt Ferrari
Co-founder & Former CTO
This post focuses on CI/CD in healthcare and is the second post in Matt’s blog series on Next-Gen Managed Services. You can access the first post, Serverless Computing: An Overview, here.
If you are a software developer in healthcare, or you work with one, pay close attention because CI/CD – Continuous Integration/Continuous Delivery will provide many benefits including a better customer experience with your app, cost savings, and faster velocity of your releases and upgrades. Yes, you read that correctly: better, faster, cheaper. At last, we don’t have to choose one or two from the trifecta we all need in healthcare IT today. You get all three.
Let’s start with what CI/CD is. Continuous Integration/Continuous Delivery is a set of operating principles and collection of practices that development teams and app teams use to deliver code changes faster, and more reliably. You’ll hear the implementation referred to as the CI/CD pipeline. It can often be part of an agile methodology where every time there is a major feature or bug, developers can leverage automation and continuous delivery by integrating that code directly into the product. This means these important improvements and updates get into the hands of your customers faster.
Checking in small changes into your version control repositories helps you deploy more quickly. But it’s about more than just faster development and deployment. It’s also about testing.
With CI/CD pipelines, the developer doesn’t build the code and then have to wait for a QA team to test it. The testing (usually regression or performance testing) is automated into the process, so as the code is developed it’s being automatically tested, continuously. That means you spot errors or needed fixes long before your code is pushed to production where it takes longer and stalls the process, adding costs to make fixes.
Several sectors of healthcare have gone to CI/CD. The ones making the move in the biggest waves right now include those that develop their own apps – healthcare technology/product companies, as well as payers and pharma. The apps may be wellness apps, medical device apps, patient engagement, or doctor engagement apps to name a few use cases that are very quickly gaining popularity. The software developers at these organizations are no longer held captive to the traditional software waterfall of waiting one, two, or six months or more to develop and push code. Every time there is a substantive upgrade, new feature or bug fix, the developers can make impactful releases that speed their way to your customers.
To focus the lens a little, let’s explore these benefits a bit more.
Increase the Velocity of Innovation
When you are able to get code into production faster and with stronger accuracy, developers get more time to develop and innovate. They can gather feedback about what’s working best, what needs improvement, what the customer experience has and lacks. Then, the Dev Team has a single stream of automation from development to testing, from pre-production to production…speeding its way to customers instead of bumping around in operational silos waiting (and wondering about efficacy) as it makes its slow way through to push to production. That silo busting builds consistency across the platform and better informs the developer, resulting in improved innovation.
Gain Agility from Automation
In CI/CD, developers are leveraging containers or Kubernetes on advanced technology platforms that give them ability to tear down clusters or nodes because of redundancy, then quickly deploy the new, better code. Developers will be utilizing tools, such as Github, Jenkins, Code Deploy, and others to manage the repositories and deployments, and to help drive consistency across environments. CI/CD is often described as agility on demand. Getting your CI/CD platform to automatically test and deploy features helps codify your deployment process and streamline your costs because your developing and releasing better code.
Reduce your Risk Profile
From a security perspective (and we should all always be asking ourselves about security in healthcare), CI/CD pipelines deliver another win. Because developers are working with containers and tearing down those nodes or clusters as they redeploy, they get clean AMIs or virtual machines or in the case of serverless, Infrastructure as Code. This improves your security profile because you are not managing patches, operating systems, or ongoing intrusion detection from an infrastructure perspective, just as three examples. With CI/CD, the code is automatically tested, and you just provide the necessary security around it. Examples of that may be ongoing code vulnerability scanning, and application monitoring to identify out of band scaling issues.
Improve the Quality of your Code and App
Since you are always releasing code in a CI/CD model, bad code won’t easily make it to production. In CI/CD, the code often has automated testing running against it continuously so that it works by the time it makes it to production, in contrast to traditional software deployment where you don’t know for sure if it works until you deploy it, at which point you may have to pull it back and have down time, which is a poor customer experience and potential revenue loss. With CI/CD, the developer is with the code through development, testing, and into production so anything caught in testing is fixed, resulting in higher quality code throughout the lifecycle of the app. And higher quality code results in higher quality apps and services, which in turn result in happier and often more engaged customers.
Reduce Your Costs
Another key benefit is maintenance cost reduction. You don’t have to take down the environment or healthcare app during peak periods because of redundancy/loop built into the process. The CI/CD architecture may be leveraging containers or Kubernetes or serverless so you are always on, reducing maintenance windows and down times from a customer perspective. From a developer perspective, this means the dollars you are spending for your FTE Dev Team are spent focused on development.
A move to CI/CD does require some culture change, and certainly some training, but the outcomes are overwhelmingly positive. You’re training your developers to understand how to use containers or IaaC, teaching them to care about what that experience looks like for the customers. They are upskilling and becoming more empathic—and as anyone who has worked in pragmatic design can attest, a more skilled and more empathetic developer is going to deliver a better app. CI/CD teaches developers to have a testing mindset - building automated testing into the entire process for continuous learning and continuous improvement. They learn tools your organization needs talent to know including Chef, Puppet, Ansible, Spinnaker, Jenkins and more, increasing the intellectual capacity of your team to innovate today and tomorrow.
Instead of a log jam with the mindset of ‘at the end of this month or quarter I have this big release,’ developers are thinking ‘once I’m done with this feature set I’m pushing this code through the CI/CD pipeline into the hands of our customers for a better experience.’
If you’re using containers or Kubernetes and developing any of our own apps, CI/CD could very likely be next logical step to reduce costs, improve quality and drive your product or service faster to your customers.
If you would like to learn more about how you can have faster, safer, repeatable deployments of higher quality that scale via CI/CD, reach out for a call or consultation and we can talk about what the best path forward is for your organization.