Atomazing News

Containers In Pega: How To "Make Friends" With Them. Best Practices.

PegaBPM is one of the largest platforms aimed at developing business solutions using Pega Build for Change technology, which allows you to work with the platform without writing code.
On prepared environments a small development team is able to create enterprise-class applications in a fairly short time (compared to the classical development). At the same time, Pega is constantly developing the user experience and upgrading its product with an aim to simplify the interaction with the system and make the process of setting up and deploying smoother.
Initially, to prepare a Pega’s environment, users must follow a rather cumbersome engineering instruction. The actions they needed to complete:
  • Configure the database
  • Configure the application server
  • Install the platform on the application server
  • Configure PRPC
Given the specifics of the platform, all this configuration work was not simple and required both special skills and time investment.
The result was a system with the following architecture:
Installing a Pega version for personal use was also not a piece of cake, despite the prepared installer from the Pega Support. Various problems associated with trying to set up a virtual server on a working machine, especially on Windows OS, appeared constantly and could seriously slow down the work.
Everything changed when Pega introduced the containerization.
Containerization involves the creation of self-contained software packages that run stably, regardless of the computers they run on. Developers create and deploy container files that possess the necessary data to run a containerized application. The next logical step is to use containerization tools for creating container images based on the Open Container Initiative (OCI) imaging specification. OCI is an open-source group that provides a standardized format for creating container images.
Docker, or Docker Engine, is a popular open-source container that enables software developers to build, deploy, and test containerized applications on various platforms. Docker containers are self-contained packages of applications and related files that are built with the Docker framework.
Kubernetes is a popular open-source container orchestrator that is used for deployment, scaling, and management a huge number of microservices. It has a declarative model that makes it easy to automate containers. This model ensures that Kubernetes takes the appropriate action to fulfil the requirements based on the configuration files.
Pega, starting from PRPC 8+ versions, has been actively working with containerization and provides solutions for deploying a development environment based on Docker and Kubernetes technologies.
For Docker solutions, Pega offers the following workflow and provides the necessary images for the system’s deployment:
If you need to support a large number of containers, Pega suggests using the Kubernetes orchestrator and recommends using the following system deployment scheme:
Over the last years we have witnessed a rise of containerization technology in Pega, so we introduced a set of activities that we believe would have the most positive impact on our clients’ projects.
On our projects, the use of docker images with the Pega infrastructure is quite common, thanks to which the deployment of the environment can be handled by one team and takes only 5 minutes. The process of setting up new test environments or transferring these environments to different network segments is handled significantly faster. At the same time, we have the opportunity to deploy environments to just in a "clean" state, but also with pre-installed dependencies, data and tools specific to a particular project.
Also, working with containers greatly saves the resources of the infrastructure maintenance team and allows you to automate the most common actions with the environment. For example, to restart the environment basic knowledge of working with Docker is now enough, which allows the testing team to perform such operations without involving developers and support engineers.
The use of environments in Docker allowed us to separate testing environments into individual teams’ environments, minimizing the impact of teams on each other. At the same time, in the CI process, you can use "temporary" environments that are launched during the process of deployment testing and turned off after all the tests. This approach allows for:
  • Artifact UT testing
  • Build deployment testing
Using environments for development and testing can help teams work faster and make improvements to tools more easily. It is enough updating one image that all environments are based on, so teams can avoid the hassle of updating each physical environment individually. This approach not only saves time but also makes it easier to implement engineering improvements and updates to tools.
Using container versions of Pega for personal use
For non-project activities (employees’ growth/non-commercial purposes), container versions of Pega can also be used. Lightweight environments’ images can be deployed on employees' personal computers and used locally, even without Internet access.
Our company widely used such a mechanism for working with personal Pega-environments for:
  • Exploring the capabilities of the platform
  • Conduct demos
  • Conduct PoC
  • Employee training
And the ability to run the necessary containers allows you to work with different versions of the platform without compromising system performance.
The possibility of using local environments for work and training has never been something unique, we have been using virtualization approaches for a long time, but they were mainly aimed at onboarding and employee training, since such environments were not very convenient to support.
With environment containerization approach the disadvantages of using virtual machines are removed and the following improvements are introduced:
  • Unification of development and testing infrastructure
  • Reduction of the bus factor in the administration of environments
  • Ability to apply new solutions to the CI process
  • Reducing the time of entry into new projects