DevOps Tracks For Multi-Module Trains

Transforming the way people build, test & deliver software

DevOps Tracks For Multi-Module Trains

Lets us get on the journey of problem statement associated with the multi-module maven projects that were assigned to the team at BrioZing. What considerations were taken when the DevOps process was designed and implemented?

Problem Statement

  • Multiple multi-module Java projects with the maven build system
  • Angular UI with the npm build system
  • Some of the services have two flavors- cloud, and on-prem, and some have only cloud
  • Every Java projects emit more than one deployable artifacts and shared artifacts
  • All emitted deployable artifacts are deployed in multiple environments
  • Each environment is shared by the deployable artifact of different services
  • Each deployable artifact have a lot of properties, and there are two versions of it – cloud, and on-prem

Problems

  • Manual triggers for artifacts creation for each service
  • Manual handling of properties of different services for multiple environments, easier said than done
  • Executions of build and deployments are sequential, too much time consumption
  • Manual Executions of Automated Tests
  • No Isolation tests (System Tests) to validate commits
  • Manual triggers for security scans

Business Goals

  • Commit based Continuous Integration for maven based multi-module Java & Angular
  • Static Code Analysis for every commit
  • Multibranch branching strategy
  • Automated artifact creations based on the type of branch
  • Automated deployment of artifacts with property management
  • System tests are part of every commit
  • Version management of artifacts
  • Parallel execution of different flavors – cloud, and on-prem
  • Significantly reduce the overall process time
  • Continuous Feedback in the form of emails and chats
  • Automated nightly deployment of all services with the latest successful artifacts for end2end automated tests
  • Nightly automated security scans

Solution

  • Commit pipelines using centralized Jenkins based library
  • Support for multibranch git-flow, i.e. branch-based workflows
  • Support for multi-module maven and angular build
  • Multi-module SonarQube analysis
  • Ansible based automated artifact deployments for different environments
  • Ansible based property management of each service for different environments and flavors
  • TestNG based Isolation test executions for every commit
  • Parallel execution of both or one of the flavor based on property
  • Continuous Feedback for every commit on any failure at any stage
  • Centralized Jenkins based library pipeline for nightly deployments
  • Ansible based deployments of the latest successful artifacts on End2End setup
  • Automated executions of TestNG end2end tests after nightly deployments
  • Versioning of artifacts using JFrog artifactory
briozing-multi-module-devops-architecture
briozing-multi-module-parallel-pipeline-tracks
briozing-multi-module-non-parallel-pipeline-tracks

Important Stats

  • 80% reduction in time to build, deploy, test and property management
  • 2 person team designed and implemented the entire process in 25 working days
  • Single pipeline handles parallel and non-parallel use-cases
  • Properties of different environments reside in the same repository as code
  • Ansible playbooks to deploy service also reside in the same repository as code

Tags: , , , ,

Leave a Reply

Your e-mail address will not be published. Required fields are marked *