Docker platform elaboration
This document is to be shared with the candidate either just before or during their technical test (check with your recruitment partner if you're not sure).
Overview
The purpose of this assignment is to assess your problem solving approach and your ability to produce idempotent and scalable solutions. The technical test is to create a cloud-based scalable solution that will receive traffic and proxy it to a given endpoint (see GitHub repository for the repository URL). We have given you a GitHub repository that includes a Docker container running Apache that forwards requests to the given endpoint.
You can use your cloud platform of choice — pick whatever you're comfortable with! We do ask that you use your personal cloud account to do the test. If this isn't possible then we will focus the pairing on the infrastructure-as-code solution, and if designed for AWS the pairer may offer to run it to assess its correctness.
You do not need to use this repository or the containers within it if you can solve the problem in another way, however you are more than welcome to use it.
The expectation of the pairing session isn't that you'll fully complete the solution, but that the interviewer will have a good understanding of your thought process and approach to problem solving, alongside your platform and infrastructure skills.
Before you attend the interview
- Clone the repo from https://github.com/infinityworks/iw-tech-test-platform
- Ensure you have a working development environment
- Ensure you understand what the existing configuration is doing
- Read all of this document and understand it
- Confirm with your interviewer your understanding of the problem
Instructions
Thank you for taking part in our Platform/DevOps Engineer tech test.
You will need to troubleshoot any issues you encounter and consider any other requirements within the user story.
If you have any issues with, or need clarification on any aspect of the assignment, please seek help from your pairing partner.
You are required to analyse the existing setup and provide:
- A scalable replacement solution with matching endpoints
- The code that builds / runs your solution
- Automated tests
- Clear instructions for running / deploying your solution
- State clearly any assumptions made (either in code comments or as a separate README file)
Assignment
Background and summary
You have been given a docker-compose
file with the current Apache configuration that runs a University's reverse proxy tier. The reverse proxy servers are unpatched and hand-built by the now retired System Administrator, so for obvious reasons, we can't give you direct access to these. Please assume that the configuration provided is both working and up-to-date. Your task is to provide a new reverse proxy solution targeting the same back-end application as the existing server.
Acceptance Criteria
- Can cope with the mid-August (A-Level results day) spike in traffic of 120 req/sec (usual daily traffic peaks at around 10 req/sec)
- Infrastructure-as-code solution
Further implementation notes
- You may use any configuration management/orchestration frameworks/tools as you see fit
- You may use whatever cloud provider/software you think best fits the solution
- The code must be idempotent
- The solution should meet the requirements and be able to support future extension
- Consider how you might test that your new solution matches the behaviour of the old Apache tier