Skip to content

Instantly share code, notes, and snippets.

@mannytoledo
Created June 9, 2016 23:32
Show Gist options
  • Save mannytoledo/962da15dd0c3247b8fe5459074139e09 to your computer and use it in GitHub Desktop.
Save mannytoledo/962da15dd0c3247b8fe5459074139e09 to your computer and use it in GitHub Desktop.
Take home test prepared for Michael Fischer

DevOps Challenge

Challenge 1: Set up a stack for a Web Application

This challenge is meant to touch on some of the technologies we use regularly at Behance. The DevOps team will regularly work on infrastructure, networking, databases, and tooling that makes up our system. The fundamental piece of any system is the application itself. For this first challenge we would like you to set up the services to run a web application.

Challenge

Use any provisioning tool or any other sdks you like to create a set of tools to automatically bring up infrastructure and deploy the application. The traffic to the web servers should be load balanced and more web servers should start up if they are under heavy load. The app needs to be able to connect to a database. Configure the database and make sure the web servers can connect to it. In general follow best security practices and lock down systems wherever possible. We expect a best-effort approach to this, it does not have to be production quality but we do expect an explanation of why you made certain tradeoffs or technology choices.

Requirements

  • Deploy any app you like written in any language but here is a suggestion. https://docs.cachethq.io/v1.0/docs/installing-cachet
  • Implement any DB that makes your app work.
  • Servers should be able to boot or reboot and start taking traffic without human interaction

Infrastructure

  • Use any compute provider you wish
  • Web servers must be load balanced
  • Only SSH, HTTP & HTTPS ports should be accessible on the webheads
  • Database should be secured from access by the outside world

Deliverables

  • Code that does the above
  • Instructions on how we can run it along with dependencies
  • Link to public github repo that contains code & instructions

Bonus Points

  • Database is highly available, i.e. it can recover if necessary
  • Including a script that tests and validates your system
  • Means to query all servers to verify a process is running
  • Infrastructure should be able to scale to handle any load
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment