Architecture

Glossary

  • CI/CD/CT: Continuous Integration / Continuous Deployment / Continuous Testing
  • AWS Blu age RTS: AWS Blu Age Regression Testing Snapshots

    AWS Mainframe Modernization (Blu Age engine)

    AWS Mainframe Modernization is an AWS service allowing to migrate and modernize on-premises mainframe applications to a cloud native fully-managed runtime environment. The service can migrate legacy programming languages such as Cobol, IBM RPG and others to Java. However, this code migration is not 100% efficient yet, that means, project teams need to correct, improve, and test the generated code to get back to the prior behavior of the non-migrated application.

    What is the purpose of the AWS Blu Age DevOps Pipelines project?

    AWS Blu Age DevOps Pipelines is a tool tailored for delivery teams, aimed at ensuring high-quality deliverables and achieving functional equivalence in modernization projects by providing an additional development environment layer to existing infrastructure. It enables all team members to automate building, analyzing, and testing modernized projects. The application is built and deployed, making it visible and ready for interaction. Analysis is conducted using tools such as AWS Blu Age Compare Tool, AWS Blu Age Data Migrator and other market-approved solutions. Finally, tests are run concurrently for rapid execution, leveraging scale-out capabilities, with resources promptly released afterward to avoid unnecessary utilization, ensuring a frugal approach.
    As the way we automate most of the modernized projects are quite similar, the main idea of AWS Blu Age DevOps Pipelines is to provide a common automated environment for developers of the project teams. These tools are deployed on client accounts using CDK scripts and allows developers to get started quickly on a new project. AWS Blu Age DevOps Pipelines is made up of 2 principal parts:

  • The building pipeline: these pipelines compile, generate a Docker container image of the application, and deploy it on ECS.
  • The testing pipeline: these pipelines mainly run multiple types of tests such as Selenium, Playwright or Groovy.

    General architecture

    The architecture presented below relies on AWS services, uses VPC endpoints, and does not add any firewall rules on the client or Isengard account.

    Building pipeline

    The building pipeline architectural diagram is described here → Building Pipeline Architectural Diagram

    Testing pipeline

    The testing pipeline architectural diagram is described here → Testing Pipeline Architectural Diagram

    Other pipelines

    The architectural diagram of the other pipelines is described here → Other Pipeline Architectural Diagrams

    Workflow Charts

    Building pipeline

    The building pipeline workflow is described here → Building Pipeline Flow Chart

    Testing pipeline

    The testing pipeline workflow is described here → Testing Pipeline Flow Chart

    References

    AWS services used

    This section gathers all the AWS services used and the name of the object created.

    CodeArtifact

  • Domains:
    • <PROJECT_NAME>
  • Repositories:
    • codeartifact-app
    • maven-central-store
    • npm-store

      Gitlab

  • Repositories:
    • gitlab-<PROJECT_NAME>-modern-application
    • gitlab-<PROJECT_NAME>-test-cases
    • gitlab-<PROJECT_NAME>-server
    • gitlab-devops

      CodeBuild

  • Projects:
    • codebuild-app
    • codebuild-pre-jenkins
    • codebuild-jenkins
    • codebuild-docker-image-builder

      CodeDeploy

  • Applications:
    • codedeploy-application-jenkins
  • Deployment groups:
    • codedeploy-dg-jenkins

      CodePipeline

  • Pipelines:
    • codepipeline-app-int
    • codepipeline-app-uat
    • codepipeline-jenkins
    • codepipeline-docker-image-builder

      EventBridge

  • Rules
    • eventbridge-rule-triggers-codepipeline-app-int
    • eventbridge-rule-triggers-codepipeline-app-uat
    • eventbridge-rule-triggers-codepipeline-app
    • eventbridge-rule-triggers-codepipeline-jenkins
    • eventbridge-rule-triggers-lambda-slack-notifications
    • eventbridge-schedule-codepipeline-jenkins

      CloudWatch

  • Log groups:
    • /ecs/app-int
    • /ecs/app-uat
    • /ecs/jenkins-node
    • /ecs/selenium-hub
    • /ecs/chrome-node
    • /jenkins/jobs

      Lambda

  • Functions:
    • lambda-building-pipeline-slack-notifications
    • lambda-s3-triggers-building-pipelines
    • lambda-jenkins-job-finalizer

      EC2

  • Instances:
    • ecs-eu-west-3a-app-int
    • ecs-eu-west-3a-app-uat
    • ec2-eu-west-3a-efs-test-cases
    • ecs-eu-west-3a-sonarqube
    • ecs-eu-west-3a-selenium
    • ecs-eu-west-3a-selenium-chrome-node
    • ec2-eu-west-3a-jenkins
    • ecs-eu-west-3a-jenkins-node
    • ecs-eu-west-3c-app-test-cases
    • ec2-eu-west-3a-devops-linux
    • ec2-eu-west-3a-devops-windows
  • Load Balancers:
    • ec2-alb-app-int
    • ec2-alb-app-uat
  • Target groups
    • ec2-targetgroup-app-int
    • ec2-targetgroup-app-uat
  • Auto Scaling groups
    • ec2-asg-app-int
    • ec2-asg-app-uat
    • ec2-asg-sonarqube
    • ec2-asg-selenium
    • ec2-asg-selenium-chrome-nodes
    • ec2-asg-app-test-cases
    • ec2-asg-jenkins-nodes

      ECS

  • Clusters:
    • ecs-cluster-app-int
    • ecs-cluster-app-uat
    • ecs-cluster-sonarqube
    • ecs-cluster-selenium
    • ecs-cluster-selenium-chrome-nodes
    • ecs-cluster-jenkins-nodes
    • ecs-cluster-app-test-cases
  • Task definitions:
    • ecs-task-app-int
    • ecs-task-app-uat
    • ecs-task-sonarqube
    • ecs-task-selenium
    • ecs-task-selenium-chrome-node
    • ecs-task-jenkins-node

      ECR

  • Repositories:
    • ecr-app-int
    • ecr-app-uat
    • ecr-tomcat
    • ecr-jenkins
    • ecr-jenkins-node
    • ecr-sonarqube
    • ecr-postgres
    • ecr-selenium-hub
    • ecr-chrome-node

      EFS

  • File Systems:
    • efs-test-cases

      S3

  • Buckets:
    • s3-eu-west-3-app-pipelines-artifacts-<AWS_ACCOUNT_ID>
    • s3-eu-west-3-app-test-cases-<AWS_ACCOUNT_ID>
    • s3-eu-west-3-<PROJECT_NAME>-velocity-<AWS_ACCOUNT_ID>
    • s3-eu-west-3-pipeline-archives-<AWS_ACCOUNT_ID>

      IAM

  • Roles:
    • iam-role-<AWS_REGION>-app
    • iam-role-<AWS_REGION>-codebuild-app
    • iam-role-<AWS_REGION>-codebuild-docker-image-builder
    • iam-role-<AWS_REGION>-codebuild-jenkins
    • iam-role-<AWS_REGION>-codebuild-pre-jenkins
    • iam-role-<AWS_REGION>-codedeploy-dg-jenkins
    • iam-role-<AWS_REGION>-codepipeline-app
    • iam-role-<AWS_REGION>-codepipeline-docker-image-builder
    • iam-role-<AWS_REGION>-codepipeline-jenkins
    • iam-role-<AWS_REGION>-ec2-devops-linux
    • iam-role-<AWS_REGION>-ec2-efs-test-cases
    • iam-role-<AWS_REGION>-ec2-jenkins
    • iam-role-<AWS_REGION>-ecs-jenkins-node
    • iam-role-<AWS_REGION>-ecs-sonarqube
    • iam-role-<AWS_REGION>-ecs-task
    • iam-role-<AWS_REGION>-ecs-task-execution
    • iam-role-<AWS_REGION>-ecs-task-jenkins-node
    • iam-role-<AWS_REGION>-ecs-test-cases
    • iam-role-<AWS_REGION>-eventbridge-schedule-codepipeline-jenkins
    • iam-role-<AWS_REGION>-eventbridge-triggers-codepipeline-app
    • iam-role-<AWS_REGION>-eventbridge-triggers-codepipeline-jenkins
    • iam-role-<AWS_REGION>-lambda-building-pipeline-slack-notifications
    • iam-role-<AWS_REGION>-lambda-jenkins-job-finalizer
    • iam-role-<AWS_REGION>-lambda-s3-triggers-building-pipelines
    • iam-role-<AWS_REGION>-selenium
    • iam-role-<AWS_REGION>-selenium-chrome-node
  • Policies:
    • Coming soon

      Security group

  • Security groups:
    • seg-app
    • seg-codebuild-app
    • seg-codebuild-jenkins
    • seg-lambda-jenkins-job-finalizer
    • seg-ec2-devops-linux
    • seg-ec2-efs-test-cases
    • seg-ec2-jenkins
    • seg-ecs-jenkins-node
    • seg-ecs-selenium
    • seg-ecs-selenium-chrome-node
    • seg-ecs-sonarqube
    • seg-ecs-loadbalancer-app
    • seg-efs-test-cases

      Route53

  • Hosted zone:
    • bluage.local
  • DNS:
    • app-int.bluage.local
    • app-uat.bluage.local
    • jenkins.bluage.local
    • selenium.bluage.local
    • sonarqube.bluage.local
    • efs-test-cases.bluage.local

      SecretsManager

  • Secrets:
    • /jenkins/jenkinsAgent
    • /sonarqube/admin

      Endpoints used

      This section gathers the VPC endpoints used.

  • Endpoints:
    • com.amazonaws.eu-west-3.s3
    • com.amazonaws.eu-west-3.events
    • com.amazonaws.eu-west-3.codeartifact.repositories
    • com.amazonaws.eu-west-3.codeartifact.api
    • com.amazonaws.eu-west-3.codecommit
    • com.amazonaws.eu-west-3.git-codecommit
    • com.amazonaws.eu-west-3.codebuild
    • com.amazonaws.eu-west-3.codepipeline
    • com.amazonaws.eu-west-3.ssm
    • com.amazonaws.eu-west-3.sqs
    • com.amazonaws.eu-west-3.ecs
    • com.amazonaws.eu-west-3.ecs-agent
    • com.amazonaws.eu-west-3.codedeploy
    • com.amazonaws.eu-west-3.ec2messages
    • com.amazonaws.eu-west-3.ecr.dkr
    • com.amazonaws.eu-west-3.ecr.api

Note: VPC endpoints are not created by AWS Blu Age DevOps Pipeline CDK scripts but by the AWS Blu Age DevOps Setup CDK scripts

Libraries used

This section gathers the libraries used by the pipeline scripts:

  • Python-3.9:
    • Requests-2.31.0
    • Boto3-1.34.50
    • Jinja2-3.1.3
    • xmldiff-2.6.3