The purpose of this repository is to evaluate the practical skills and technical competencies of DevOps Engineer applicants with regards to Containers, CI/CD, Infrastructure as Code & Cloud-based Infrastructure.
For convenience, we've included a simple Node.js application.
It requires npm and node to work locally.
To install node dependencies simply run:
$ npm install
And to run the application locally:
$ npm start
When visiting http://localhost:8080, the application should respond with Hello World!.
Your job is to
- Dockerize the application
- Set up CI/CD for the repository
- 2.1. Any push to the
mainbranch should deploy the application. - 2.2. We recommend using GitHub Actions.
- 2.1. Any push to the
- Deploy container to AWS
- 3.1. The deployed application should be accessible via the internet.
- 3.2. We recommend using AWS CloudFormation or AWS CDK.
- Adding one or more automated tests to verify that the application was deployed to AWS and is running as expected.
- Add centralized logging (We recommend using CloudWatch Logs).
- Suggest one or more alternative solutions on the CI/CD workflows, instead of simply deploying on every pushed commit to the
mainbranch. You do not have to implement the workflow, but should at least document the workflows in text in your repo. - Add a feature to the application that invokes one or more AWS services.
The assignment delivery will be evaluated based on the applicant's abilities to
- create Infrastructure as Code
- apply Docker best practices
- take security considerations into account in each task
- (Bonus points for writing automated infrastructure tests)
The solution should be pushed to a git repository and a link to the repository should be shared with Clio.