Comparing Deployment Manager vs open devops tools such as Azure DevOps, Jenkins, Bamboo and others
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
- Deployment Manager
- Open DevOps using third party tools such as as Azure DevOps, Jenkins and others
Deployment Manager
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
Advantages
- 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 is seamless integration with branch merge experience for developers working in Dev Studio
- Support for one click deployment through App Studio enables business users to publish changes to a DevOps pipeline
- Integration with Jenkins allows tasks not currently supported through Deployment Manager to be integrated with a custom Jenkins task
- Provide a great experience to manage multiple application pipelines from one landing page
- If you are on Pega cloud, a preconfigured Deployment Manager is provided for you allowing you to get started with Deployments almost right away
- Even on prem or for Cloud Choice, the relative effort to get Deployment Manager configured and running is relatively quick even for those without experience managing CI/CD automation tools
Limitations
- There is limited options to completely customize the application pipeline, such as a limited number of stages per pipeline, or supporting for custom tasks to be executed in the pipeline *
- 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
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
Advantages
- 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
Limitations
- 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.