Being a company founded by developers, it's in our DNA to automate as much as we can and deploy as often as possible in order to allow for rapid development, innovation, and reduced human error. Spreedly relies on many internal services for its infrastructure. Your role as a Systems Engineer at Spreedly will involve:
- Understanding how all the pieces that comprise the infrastructure fit together
- Knowing how best to maintain and secure that infrastructure
- Automating provisioning, testing, and maintenance as much as possible
- Measuring and monitoring system fitness
- Delivering services that other engineering teams can utilize in support of their development efforts
- Communicating well with the rest of the team and the wider technical community
We highly value:
- pragmatic solutions with an eye toward future, incremental improvements
- careful attention to detail
- testing before deployment
- communicating intent through code, commits, and documentation
The Infrastructure team at Spreedly is moving towards a more microservice based infrastructure. To that end, we'd like you to deploy the Spreedly Phasers application using Kubernetes or Nomad. This sample application is used to demonstrate adding a payment method and completing a purchase to potential customers.
Your task is to use a local (single-node) Kubernetes cluster or dev mode Nomad to deploy the Spreedly Phasers application via HTTPS.
Example of the application running: https://spreedly-phasers.herokuapp.com
Code for the application: https://github.com/spreedly/sample-phasers
Docker container for the application: https://hub.docker.com/r/spreedly/sample-phasers
Note: Valid Spreedly credentials set as env vars are needed for the purchase flow to function. We have not provided those as that is unnecessary complexity for this assignment
The final output of your work should include:
- The necessary configurations that enable us to deploy Spreedly Phasers served via HTTPS on Kubernetes or Nomad.
- A README that includes:
- An overview of your solution
- Instructions for deploying the application to the local Kubernetes cluster or dev mode Nomad
- Any additional thoughts or considerations on what you would do differently for production use deployment
Solution Format
Please do not post your solution to public Git repositories like GitHub or Gitlab. Instead please work locally:
mkdir solution && cd solution
git init
touch README.md
git commit -m "Initial commit"
- < ...hack, hack, hack... >
cd .. && git clone --mirror solution solution.repo
tar czf solution.repo.tgz solution.repo
Your commits should clearly communicate your intent and choices made while completing the task.
Please reply to the work sample assignment email with your attached solution.