webMethods Microservices Runtime - Continous Integration & Delivery

Disclaimer: This article is based on my professional experience. I acknowledge the trademarks and IPs owned by others. 
 
This article describes the basic concepts of continuous integration using webMethods Microservices Runtime.
 

Prerequisites

  • You have some familiarity with Docker, Kubernetes/OpenShift
  • A fair amount of understanding of CI/CD concepts related to webMethods products.

CI/CD - Containerized vs Non-Containerized Deployments

Regular Deployment for webMethods Integration Server requires Asset Build Environment to create builds (known as composites), Deployer and Deployer CLI to deploy the composites to the CI, target environments and webMethods Unit test framework to run unit tests. Below diagram depicts the CI/CD process for this model.

CI/CD practice with Containers is different from regular deployments. Containers are loose the state when they are expired and hence one should not deploy onto a running container. 

12-factor app principles (https://12factor.net/) would help in this kind of practice.

Keeping process (principle#6) as stateless as possible would help to scale (up or down) dynamically whenever required. Principle#5 - https://12factor.net/build-release-run forms the basis for CI/CD practice with Containers.

webMethods Microservices Runtime follows the 12-factor app principles for implementing Cloud Native Microservices. App-specific configuration can be passed onto webMethods MSR during CI/CD process of stage promotion (Dev/Test/Prod) on to the same Docker Image. Refer to https://documentation.softwareag.com/webmethods/microservices_container/msc10-3/10-3_MSC_PIE_webhelp/index.html#page/integration-server-integrated-webhelp%2Fto-configuration_variables_for_docker_2.html%23 understand this feature better.

Application specific parameters like Adapter Connections, JMS/Native messaging endpoints, WS endpoint alias, Extended settings, Global Variables, JDBC Pools, etc can be passed as either Config Maps or Secrets to webMethods MSR.

General CI/CD practice with Containers does not require the Docker Image creation from scratch but instead, a Base Image can be created on a program level and then the images for microservices can be derived.

From version 9.12 webMethods provides scripts for creating Dockerfile and Docker images. These scripts are located in <SAG_Installation_Dir>/IntegrationServer/docker/ directory and would help in creating the Base Docker images. Below diagram depicts the CI/CD Practice with Containerized deployments.

Sample

https://github.com/SoftwareAG/webmethods-msr-okd-sample-buildpack provides sample Jenkins pipeline and scripts for practicing CI/CD with OpenShift (either OKD or OCP).