Dream Team Cloud Engineering Project
present

Dream Team Cloud Engineering

Dream Team Cloud Engineering

It would be a dream if we could get this all working...

Our objectives was to deploy the Northcoders development team’s learner management system application and supporting services in the cloud using Amazon Web Services (AWS).

We employed tools and approaches - such as infrastructure as code (IaC), continuous integration/delivery (CI/CD), observability and monitoring - to support the DevOps values of flow, feedback and continual learning.

Tracking the project in Trello, with daily "stand ups" to coordinate the work and raise any issues and blockers, we employed a number of CI/CD tools and technologies to get the application deployed and monitored.

We used Terraform to provision the AWS infrastructure - networking, containerisation, database, and container repositories. Docker, Kubernetes and Helm helped us automated app deployment, and we used Jenkins to manage our CI/CD pipeline. In our sights was using Prometheus and Grafana to observe and monitor the learner management system application in operation.

The Team

  • Team member imagePreview: Team member image

    Jack McCutcheon

  • Team member imagePreview: Team member image

    Johan Aurel Botouli

  • Team member imagePreview: Team member image

    Shahadh Ismath

  • Team member imagePreview: Team member image

    Simon Lewin

Technologies

For the infrastructure - Amazon Web Services (AWS): Elastic Kubernetes Service, Relational Database Service, Elastic Container Repository, and Secrets Manager. For the CI/CD pipeline: Terraform, Docker, Kubernetes, Helm, GitHub, Jenkins, Prometheus, and Grafana.

We'd used most of these on the Cloud Engineering bootcamp and wanted to practice using these technologies on a project. Our stretch was using Jenkins for CI/CD automation instead of CircleCI and Argo CD which we'd used previously.

Challenges Faced

We spent too much time early on trying to find a way to share one EKS cluster amongst all team members with shared credentials and a Bastion host when, in hindsight, a manual workaround would have been more expedient. We also encountered difficulties getting Jenkins installed and running on EKS with Helm Charts. And in the limited time we had for the project building the Jenkins CI/CD pipeline proved challenging. We also ran out of time to properly use the metrics provided by the Java backend application to monitor this application in Prometheus and Grafana.