At BMC Software, we build, test and deploy Cloud Lifecycle Management (BMC CLM) product in our devops cycle using CLM itself. This continuous integration/continuous deployment CI/CD DevOps pipeline enables our engineers to provision on demand the latest consistent application environment with a single click. We use CLM to run DevOps pipeline for CLM application itself by taking advantage of CLM’s service catalog, service offerings, deployment capabilities and “infrastructure as code”. CLM is effectively used to provision and de-provision several hundreds of development and testing infrastructures and application environments each day by our engineering team across continents. This has allowed us to build high enterprise grade quality into CLM with automated pipelines, faster agile deployments, managing infrastructure more efficiently and ability to provide a consistent latest development environment for our engineering team all available through service catalog.
We will in this part-I highlight the challenges in a typical DevOps CI/CD environment and in part-II we will show how CLM solves this challenge.
Our DevOps CI/CD pipeline is shown below in Figure 1. As you can see, CLM product development process goes through a number of stages that includes build, test and deploy of CLM product.
Figure 1. CI/CD pipeline for CLM
Early on, we faced a number of challenges implementing and automating our DevOps CI/CD process.
Challenge 1. Complex and slow manual CI/CD Process caused lack of agility and productivity
One of the first challenges we faced is that our CI/CD pipeline was manual requiring a lot of manual steps by engineers to get daily or weekly builds deployed to multiple target environments. This resulted in days to weeks to produce a good working environment. This started impacting developer productivity before we automated our pipeline using CLM and other tools.
Challenge 2. Consistent development application environments were hard to maintain without automation
As developers checked in code continually, there was a need to get a complete consistent view of multiple check-ins by the team of developers to do unit, integration and system testing. Before CLM, we had many application and test environments that were not easily reproducible and traceable that led to wastage of resources.
Challenge 3. Static infrastructure and application environment sprawl increased our costs
As a part of our CI/CD pipeline, we have a large number of infrastructure environments that need to be provisioned and decommissioned each day for unit, integration, quality, system, performance and security testing. This lead to an explosion of number of environments that we had to maintain and led to increasing costs for keeping infrastructure always available and ready when it was only used for a limited time during testing. We also experienced application environment sprawl since there was no automated reclamation of unused environments. This increased our costs as well.
In our next part-II, we will show how CLM addresses these challenges and simplifies the developer experience.