A few years ago, I was asked to deploy vCAC (as it was known then). Soon after I found myself part of a team dedicated to creating a new Service Catalog for an SDDC based Private Cloud offering. It was a huge learning curve for me and I was soon immersed in a world of Cloud development with decisions to make based on these new VMware Cloud tools. The one thing that I did learn very quickly was the importance of version control. Coming from an infrastructure background, this was alien to me but it soon became one of the most critical things I learnt about successfully developing a Private Cloud and more importantly – maintaining it!
At the heart of our Service Catalog was vRealize Orchestrator and as requirements for automated Catalog items grew, so did the team. This caused a lot of issues, with many developers working simultaneously on the same product and as a result changes to the same Workflows occurred and relevant changes lost. It soon became apparent we where lacking a sensible way to ensure our final packages was bug free and not overwritten unintentionally. Natively in vRO we can export a package containing Workflows, Actions, Configuration Files etc, but this is not in an ideal format to efficiently review or track changes. It was becoming impossible to keep tabs on what was happening.
In order to resolve this, proper DevOps processes and version control where introduced. We used BitBucket as a repository for our code and created package lifecycle documentation to ensure standards where clearly defined for any new team members. This allowed developers to check out a “branch” which is a full copy of our master package. From there, they can modify part of the existing package and then send for review. This ensured that any conflicts where resolved and also the team of reviewers become aware of what is going on day-to-day.
As you can see, if the request is approved then the changes where merged to the main package and using products such as Jenkins and Nexus, the existing package is incremented and we are able to import the latest package into our environment. We now had an efficient cycle, whereby we are developing in vRO, merging the code to bitbucket which used a webhook to Jenkins to increment the package and then finally Nexus to produce the latest package in a format that we can re-import to vRO.
Of course, at this point we also had to ensure done correct Unit Testing with the new package to validate it. If indeed, bugs where spotted by testers then these where recorded and tracked to allow developers to go around this cycle again until we had bug free source code.
Hopefully you can see how critical it is to have these processes in place in order to achieve successful cloud development. Of course, having the above diagram fully automated would the Nirvana but for now having the processes in place will accelerate your release to production – bug free 🙂