Team KARV Cloud Engineering Project
present

Team KARV Cloud Engineering Project

Team KARV Cloud Engineering Project

On Cloud 9.

Building the infrastructure, relational database and continuous integration / continuous delivery pipeline for a learner management service.

The Team

  • Team member imagePreview: Team member image

    Vlad Rosu

  • Team member imagePreview: Team member image

    Ross Simpson

  • Team member imagePreview: Team member image

    Koda Kushnir

  • Team member imagePreview: Team member image

    Andrey Zachepilo

Technologies

Technologies section imagePreview: Technologies section image

We used: Terraform, AWS, Kubernetes, Docker, Grafana, Prometheus, PostgreSQL, CircleCI, ArgoCD, ZenDuty, InfraCost, Slack, Trello

Terraform: Imagine being able to sketch out your entire cloud setup with just a few lines of code. That’s Terraform for you. It was our go-to for making sure we could easily set up and tear down our project infrastructure without too much effort.

AWS: AWS was like our Swiss Army knife, packed with everything we needed: VPCs for networking, EKS for running our Kubernetes clusters, and RDS for all our database needs.

Kubernetes: This was our orchestrator, making sure our apps behaved, scaled up nicely when more folks used them, and tucked them into bed when things went south. Kubernetes had our back, ensuring everything ran smoothly.

Docker: Ever tried moving a houseplant from a pot to the garden and hoping it thrives? That’s what deploying software feels like without Docker. Docker made sure our apps could run anywhere without throwing a tantrum, making deployment a breeze.

Grafana: Imagine Grafana as our mission control centre, where we could see everything happening in our project at a glance. It turned our data into easy-to-read charts and graphs, so we always knew how things were running.

Prometheus: This tool was like our project's heartbeat monitor, keeping an eye on our app's health and working closely with Grafana to alert us if anything looked off.

PostgreSQL: Our trusty database, PostgreSQL, was like the library of our application, holding onto all our data securely and efficiently.

CircleCI: CircleCI was our assembly line, making sure our app’s build, test, and deployment processes went smoothly.

ArgoCD: With ArgoCD, updates to our app were as seamless as updating apps on your phone. It kept our deployments in sync with our code repository, ensuring we were always up-to-date.

ZenDuty: When services go down in the middle of the night and customers can’t access their precious data, ZenDuty is our on-call hero, waking up the right folks to fix issues fast.

InfraCost: Keeping an eye on the piggy bank, InfraCost showed us how much our Terraform setups would cost us, avoiding any scary surprises on our cloud bills.

Slack: Our digital watercooler, Slack, was where we chatted, shared updates, and occasionally posted a cat gif or two. Its integrations meant we got instant updates from
ZenDuty, CircleCI, and more, right in our conversations.

Trello: Our project's storyboard, Trello, was where we kept track of everything we needed to do, what we were working on, and what was up next. It’s like having a digital wall of sticky notes that never falls over.

Challenges Faced

- Group work with AWS:
We went down a bit of a rabbit-hole early on with setting up IAM credentials so that all of the team could have access to the EKS. After half a day of troubleshooting we couldn't seem to get it to work correctly, and then we decided to abandon that and instead just create our own EKS when needed for testing. This ultimately worked out to be fast enough for what we needed.

- Jenkins for Continuous Integration:
The team pursued using JenkinsCI instead of CircleCI but after a day we determined that we'd stick with CircleCI, a product we were more familiar with, until we reached MVP. After moving forward with the project and reaching MVP we determined that the time was spent adding new functionality and so we abandoned using Jenkins.

Detailed testing instructions in our README file here: https://github.com/vnrosu/learner-management-service/tree/main