Software release management is a challenging process for big enterprises. While most enterprise applications are critical to running the business, most often we see that the process of releasing and updating the application version is a painful and inconsistent.
Let’s identify some of the causes of this situation:
Low focus on automation: In most organizations, automation efforts are invested in the delivery of virtual machines or shelf applications while the legacy monolithic apps are being pushed and updated in old manual ways.
Large, applications, big chunk of code: a lot of the organizational applications are built as a big pile of code where every change needs to be heavily evaluated and can have a global effect on the whole app.
Manual QA and test processes: in one of my customer visits, after I raised the question “How are you testing your software? ” I got an answer I didn’t expect: “We are pushing code blindly and wait for the result from the users”, no efficient and automate way to do QA got them to skip the process in order to meet the company goals.
Orphaned scripts and workflows: while some departments try to write their own solutions to build and test the code, without proper integration and a base pipeline management system this work is quarantined to the specific department and have very small effect on the whole release process.
Different Binaries in development, staging and production environments: Have you ever heard developers saying “It worked perfectly in my environment but I don’t understand why it fails in production?”
When moving code around in the organization, it’s hard to keep track of the binary and artifact structure needed to run the app. This can break application consistency and will end in hours of trying to find what went wrong.
In order to achieve better efficiency and control of the release process, a change in approach need to be taken. First, we need to have a central pipeline management system that can host all of our different scripts and workflows that take effect in the release process.
This system needs to be able to connect directly or via API’s to all the source control, artifact management software platforms and infrastructure involved in releasing software.
Then we need to build the different pipelines that will be made out of stages (test, qa, staging…), tasks (run scripts, run workflows, get the binaries..) and some gating rules to manage the process (test acceptance result, human approvals…).
And last we need to expose the pipelines as managed services to the development organization.
This is the most important part as the ability to run any pipeline in a click of a button and be able to see it running is the game changer for developers that can now build code more often while maintaining the reliability of the company software.
Visualizing and versioning the pipeline runtimes is also a huge leap as we can now expose every part of the software lifecycle to any stakeholder in the organization that doesn’t understand complex scripts or workflows.
VMware vRealize Code Stream can help enterprise organizations in achieving all of these goals.
VMware vRealize Code Stream is an application release automation and continuous delivery solution that allows developers and operations teams to release software more frequently and efficiently, all the while leveraging their investments in existing developer and operations tools.
Running Code Stream Pipeline as a service will expose the company’s release pipeline to the relevant developers, QA engineers and DevOps team in a centralized authorized and role based portal.
This pipeline can be consumed and maintained in a secure and easy way.
Click Here to learn more about how to run pipeline as a service.
DevOps thinking and strategy in a traditional enterprise can have a great effect on the business software reliability, thus helping the organization to evolve faster and step up the pace in the fast changing world.