Giter Club home page Giter Club logo

devops-assignment's Introduction

DevOps Engineer Home Assignment

Below is a home assignment for the position. You are requested to:

  1. Understand the requirements and use case. You may contact the interviewer for further clarification.
  2. Develop and run your deployment plan for backend environment using the most efficient tools.
  3. Present your deployment and result in the next interview session.

Requirements

You are a DevOps engineer in a project of building an online order system. Your task is to deploy a prototype created by the development team and make it available on the public internet.

Below is the information given by the development team.

Global Environment Requirement

  • Start a MongoDB instance, it should be reachable by the prototype code and the development team

Backend Requirements

  • NodeJS LTS version
  • Set environment variable MONGODB_URL="<mongodb connection url>", where <mongodb connection url> must match the official mongodb node driver uri
  • Navigate to package(s) directory cd packages/<package>
  • Build using npm npm install
  • Start using node node index.js

Cloud Infrastructure Requirement

Your deployment must meet the following criteria:

  • A working deployment which reachable through internet
  • IAC (Infrastructure as Code) deployment for the created AWS resources. You may use Cloudformation, Terraform or AWS CDK for that purpose
  • Documentation for the deployment plan and the resources created

Guidebook on completing the assignment

  • Your implementation should be commited to your own public git repository, including any IAC, documentation, etc (fork this repository)
  • Create dockerfiles to match the deployment needs
  • Create all resources using IAC (Infrastructure as Code) tools
  • Use Amazon Elastic Container Registry to push the images to a private repository
  • Create a Kubernetes cluster
  • Use helm to deploy the service(s)
  • Create a MongoDB instance and make it reachable for the deployed service, update the MONGODB_URL environment variable to match the mongodb connection url
  • Expose the services to the internet using AWS Load Balancer, AWS Elastic IP, and Network Interface
  • Document the deployment steps and the resources created in the deployment as clear and detailed as possible
  • Bonus (implement or write detailed plan):
    • Supply the deployment with CI/CD automated process to push the image to ECR and deploy it to the cluster
    • Monitor the service and handle recovery for different resources
    • Maintain and handle the scaling of the service
    • Maintain and handle high availability of the service according to best practices
    • Secure the deployments according to best practices (rate limits, relevant security groups, etc)
    • Consider multi-tenant and multi-environment deployment
    • Documentation for disaster recovery plan
    • Any other improvement that you think is relevant for this project

How will the assignment be evaluated

When evaluating the assignment, we will consider the following:

  • The deployment plan and the resources are created and working. we will trigger the API and will expect a valid response
  • The documentation is clear and detailed, we will follow the documentation to understand the deployment process
  • Best practicies are followed across all functional and non-functional requirements (for example: security, cost optimization, reliability, etc)

General Notes

  • For performing the assignment, you will be given with aws credentials (console and programmatic) to a dedicated account
  • Make sure to create small tier resources, as the poc demands minimal working loads
  • This assignment can be implemented in more than one way, if any further permissions are required for your implementation, contact us
  • If you have any other questions, please do not hesitate to ask

devops-assignment's People

Contributors

roytal 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.