Summary: Take our stubbed out ceros-ski infrastructure and make it functional.
Contained within is a stubbed-out infrastructure for the ceros-ski nodejs game. It is not currently functional. What we'd like you to do is take this stub and make it work, so that the ceros-ski game can be loaded successfully in the browser on the deployed infrastructure. We'd like the resulting infrastructure to be highly available.
Additionally, take some time to pull out any Terraform modules that you think it would make sense to abstract. Take a look at the Dockerfile and optimize it to the best of your abilities. As you are working, keep an eye out for security vulnerabilities. Fix any that you find, and make sure new code does not introduce any.
Please document your code and your choices. If you make any techdebt decisions in the interest of time, please ensure they are also well documented. Update the provided usage documention and architecture documentation to account for any changes you make.
You will be graded on the cleanliness of your code, the quality of your documentation, and your architectural choices.
The challenge is structured to take about one working day's (8 hours) worth of effort. But it's not timed, and you can take as much time with it as you want to.
You should be able to complete it sticking to the AWS free tier - and please do so, because we won't compensate you for any charges incurred.
Note: You can ignore the code in the /app
directory other than the Dockerfile
and any work necessary to get it deployed. That's the challenge we give to
prospective full stack devs - it has some bugs and missing features, including
a crash that can happen right off the bat. You don't need to worry about
fixing those.
You can consider the challenge "done" when each of these has been achieved.
- The infrastructure is functional: the ceros-ski game can be loaded successfully in the browser.
- The infrastructure is highly available: the ceros-ski container is running in two or more availability zones.
- Changes to the ceros-ski game can be deployed to the infrastructure with out any downtime.
- The Dockerfile in the
/app
directory has been optimized. - Any logical modules have been refactored out.
You will be graded on the following criteria.
- How readable, organized, and documented your code is
- How well optimized the Dockerfile is
- What has been pulled out into terraform modules, and how well structured those modules are
- How well security concerns have been handled
- The quality, detail, and clarity of your usage and architecture documentation
- How well documented and reasonable tech debt decisions are
Note: You won’t be marked down for excluding any of this, it’s purely bonus. If you’re really up against the clock, make sure to focus on writing clean, well organized, and well documented code before taking on any of the bonus.
If you find yourself with time to spare, are enjoying yourself, and really want to impress us, add in one or more of the following.
- Implement autoscaling in the ECS Cluster and Autoscaling Group
- Write and document an automated deployment system for the Docker image
- Add monitoring to the infrastructure
- Implement some form of shared terraform state
- ??? Suprise us with something new and interesting ???