Terraform was used to set up the infrastructure and the pipelines were set up using GitHub Actions. The docker containers were build using pipelines and stored in ECR the repository. Semantic versioning was enabled to enable efficient deployment and tracking of the rollbacks.