There is a lot of interest regarding implementing DevOps workflows for customer applications built on the Pega platform. Implementing a good DevOps process of course needs to incorporate people, process, specifically Continuous Integration and Continuous Delivery) and the technology. In this post I will discuss some of the choices you have around technology to implement CI/CD automation.
There are really two options here to consider
Open DevOps using third party tools such as as Azure DevOps, Jenkins and others
Pega offers the Deployment Manager product to automate your workflows. Deployment Manager is a really great option for you if any of the following apply
You haven't implemented any form of CI/CD automation to date or are just getting started
You are looking for a prescriptive process that captures the best practices and are not looking to deviate from that
You are trying to avoid adding to the set of tools and workflows that you Pega development teams have to deal with
You are looking to empower your business users to publish their changes
Deployment Manager comes with the prescriptive process and implementation that captures the workflow
It is a low-code and potentially a no-code solution providing a model driven experience to configure and implement application pipelines, it is very easy for Pega teams to self manage their pipelines and deployment workflows
It has support for all the core Pega features important for implementing the CI/CD process especially around branch handling, testing and quality measurement
There isn't any direct integration with project management & tracking tools such as JIRA
The only third party tool directly supported is Jenkins and currently there is no option to integrate with other automation tools *
Similarly there isn't native support and plugins available for the wide variety of integrations available for third party tools
Does not have direct support for provisioning and configuring environments and currently operates on the assumption that all environments in the pipeline are running *
* Many of these current limitations in the 4.x series of Deployment Manager are on the roadmap to be addressed which once available will allow for much more complex deployment pipelines, such as greater than four environments, parallel execution of stages, environment management and a wider integration with third party tools.
Open DevOps here really refers to implementation of CI/CD process using any of the available automation tools in this space, which include Azure DevOps, Jenkins and its many offerings, Bamboo, Circle CI and so on. It also refers to the use of third party test automation tools such as Selenium, Cucumber, Rest Assured Tricentis and others, however the focus in this article will be on implementing the CI/CD workflow.
For implementing an Open DevOps workflow, you should still be aware of where the third party tools should be leveraged. The diagram below shows all the places where it makes sense to incorporate third party tools
You are likely to want to implement an Open DevOps approach if the following apply
There are COE mandates to use a prescribed set of tools
The pipeline for the Pega application will be part of an existing ecosystem with other application pipelines
You already have a pipeline in place and are looking to enhance and evolve it
There are complex deployment requirements, where environments are provisioned, terminated, or restarted or other environment level tasks on a regular basis
You have needs for significantly more complex deployment pipelines than what is supported by Deployment Manager
If you already have existing tooling in place or COE mandated tools to use, you can stick with your tools of choice and adapt them to the needs of managing a Pega application pipeline
There is significantly more flexibility to create more complex deployment pipeline, including managing environments, longer and more in depth pipeline
A richer ecosystem of plugins and tools are available for third party support
The Pega application pipelines can be managed directly by a COE managing other non Pega application pipelines
Your Pega development teams will likely have to incorporate into their workflow these third party tools and won't benefit from the same seamless experience provided by Deployment Manager
Developing a pipeline the first time would like be a fairly significant effort if you are starting from scratch as you will have to implement all the integrations with the available Pega APIs
Effort needed to maintain or update this pipeline will have to be factored in, although this should be infrequent
You will not be able to take advantage of the prescriptive deployment processes that are integrated into Deployment Manager
You won't be able to take advantage of the One click deployment experience that is available through App Studio for technical Business users managing their applications
Why not use both?
There is actually a third path which can bring about the benefits of both options. Use both Deployment Manager and Open DevOps tools. The idea here is to use Deployment Manager as the primary Continuous Integration tool for Pega Application developers but use the third party tool such as Jenkins to manage the final deployment workflow where more complicated deployment workflows might be needed.
Another approach to consider would be to have the Deployment Manager pipelines be triggered by the third party automation tools, for example an Azure DevOps pipeline triggering a Deployment Manager application pipeline as part of an larger overall pipeline. Deployment Manager also provides a number of APIs that allow DM pipelines to be managed externally as shown.
Hopefully this article provides some clear guidance on when to leverage Deployment Manager compared to open DevOps and third party automation tools.