GithubHelp home page GithubHelp logo

devops-exercise's Introduction

DevOps Exercise

Process

  • Fork this repository to your personal GitHub account. If you prefer, you may create your own private repository instead.
  • Complete your project and push your code to your repository.
  • Send a link to your public repo to [email protected] or invite @sachatememe, @Mike and @AlexeyGolubeff as collaborators if it is private.
  • We will schedule the final interview to review and discuss.

Project Requirements

Overview

Write Terraform that can be used to deploy the three-tiered "click counter" application contained in this repository. Use the front, back, and redis images detailed below.

  • Use Dockerfile in the front directory of this repo to build front image
  • Use Dockerfile in the back directory of this repo to build back image
  • Push built images to free container registry like Dockerhub, Github Packages, or AWS ECR
  • Use any version of redis from Dockerhub
  • Use AWS free-tier option(s) like EC2 and/or Lambda + API Gateway for running containers
  • Use Terraform, your choice of CI/CD solution, and/or any additional scripting to deploy the containers

If you have questions or something seems "not right", please reach out via email.

Application details

  • back app

    • Requires these ENV vars:
      • REDIS_SERVER - Address of Redis container in the form of <host>:<port>
    • Binds to port
      • 4000
    • Provides these endpoints:
      • /api/clicks - Returns current click count
      • /api/clicks/incr - Increments click count by 1 and returns new click count
      • /api/ping - Returns static "pong" response
  • front app

    • Requires these ENV vars:
      • BACKEND_API_URL - Address of the Back container reachable from the server-side in the form of http://<host>
      • CLIENT_API_URL - Address of the Back container reachable from the client-side in the form of http://<host>
      • Note: depending on how you've networked the containers, these to vars could be the same
    • Binds to port
      • 3000
    • Provides:
      • / - Click counter display/UI
      • /ping - Returns static "pong" response
  • redis image

    • Requires these ENV vars:
      • None
    • Binds to port
      • 6379

Extra credit

  • Hide the 3000/4000 ports and make the service available over port 80 using the method of your choice
  • Add healthchecks to front and back apps using the ping endpoint each app provides
  • Implement basic security measures
  • Add DNS or other customizations

Example

https://devops-exercise.tblk.us

image

Interview

During your online interview, we will:

  • Walk through your solution and use it to deploy the application
  • Discuss any challenges and successes of your implementation
  • Cover additional questions, both technical and otherwise
  • Answer any questions you may have

devops-exercise's People

Contributors

joeles avatar alexeygolubeff avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.