Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

A take home challenge for potential platform and devops engineering candidates at Mobimeo. Please fork this repo and share a link to your PR when you're finished. Please don't spend more than 4-6 hours on your solution. We're mostly interested in seeing how you work and discussing style and further developments.

Notifications You must be signed in to change notification settings

mobimeo/infra-take-home-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Take Home Challenge

Our objective here is to understand the candidate's knowledge about Kubernetes, Helm, and Terraform. The Infrastructure and Operations Team at Mobimeo uses these tools heavily in our day-to-day work.

In ./lib/terraform-modules you'll find sub-directories for different components of a Kubernetes cluster - ./lib/terraform-modules/prometheus and ./lib/terraform-modules/loki for observability, ./lib/terraform-modules/postgres and ./lib/terraform-modules/app for some kind of simple backend service. These directories are skeleton modules that can be updated by you. There are no configurations, secrets, deployments, or even pointers to safe Docker images. This is your challenge.

You might also be wondering where the K8s cluster is. This is also your challenge!

Tasks:

  • Fork this repo and submit your results as PR from your own Github account

  • Create a Kubernetes cluster with Terraform and any additional tooling/scripting of your choice or own devising. You can use any Kubernetes distro you like - minikube, kind, a Vagrantfile and some fancy kubeadm scripting, etc. If you want to use a public cloud, please use AWS. The objective here is to give us something we can run here at Mobimeo to review the rest of your work. And we don't have a GCP or an Azure account that we can use for this. We do have both Mac and Linux laptops.

  • Fill in the app Terraform module to Deploy a basic application on the cluster you created. This can be a simple 'hello world' container or a vanilla 'Welcome to nginx!' server. But if you find a cool containerized app to deploy, we appreciate creativity and exploration!

  • Ensure an ingress is created and that the Mobimeo engineer who reviews your implementation knows how to access it/curl it in order to see 'hello world' or 'welcome to nginx' or the echo server.

  • Update main.tf and this README in the root directory. You may also need to update the providers that you find there. Make sure that the engineer reviewing your work has all the information they need to run your scripts, build your cluster, and repeat the setup you did.

Additional Challenges

Note: These are stretch goals for a junior or mid-level engineer. A candidate for a senior engineer or staff engineer position should consider at least some of these mandatory to be considered further.

  • Test your module(s) using Terratest https://terratest.gruntwork.io/
  • Create a Terraform module to bootstrap a basic observability setup with Prometheus and Grafana.
  • Create a Terraform module to setup basic logging with Loki.
  • Replace your 'hello world' or 'welcome to nginx' app with something more complex, like a containerized sudoku webapp you may have found
  • Create a Grafana dashboard that monitors your application
  • Create a load-testing script for your application

Additional Additional Challenge

  • Implement the postgres module, a volume or two, and a CRUD app of your own devising. We use Python and Go in the infrastructure team. The company's APIs are written in Scala or Node.

About

A take home challenge for potential platform and devops engineering candidates at Mobimeo. Please fork this repo and share a link to your PR when you're finished. Please don't spend more than 4-6 hours on your solution. We're mostly interested in seeing how you work and discussing style and further developments.

Topics

Resources

Stars

Watchers

Forks