As a part of the implementation, the team created a CI/CD environment using Jenkins CI to automate the deployment and release process. The CI pipelines include SonarQube scan and static code analysis – they help to improve code quality and reduce the number of bugs. All secrets for the deployment process are stored securely in Jenkins.
The entire infrastructure was migrated to Terraform and got stored in the GitHub repository. The base infrastructure such as VPC, ECS cluster, ALB, etc. is deployed manually with Terraform CLI. The state files for Terraform are stored in AWS S3, so that they can be easily accessible from the local and CI environment. The Jenkins pipeline creates a Docker image, pushes it to the repository, and then uses Terraform
to deploy microservices. Pipelines are triggered automatically on changes in application code. All microservices are running in AWS ECS and managed by AWS Fargate.