staytus-interview-question

**System Admin / DevOps Engineer Test

IMPORTANT:**

Deadline is usually +3 days (12NN +4GMT) from the moment the test was sent to you (Example: If sent on Monday, deadline is Thursday at 12NN +4GMT). Ouput that needs to be sent to us:

Working URL of the app that can be accessible online. Upload the project to your own repo and send us the link (optional but highly recommended as this will be discussed during the next phase of the interview).

Describe extra step that you took to make your output outstanding compare to other candidates (Example: setting up SSL, LB, etc...)

Test assignment A: Docker and Microservices Objective: To assess the candidate’s ability to work with Docker and microservices architecture. Task Description:

This app includes App (PHP), MySQL and Redis services. Containerize these services using Docker. Each service should have its own Dockerfile. Write a docker-compose.yml file to orchestrate the services. Ensure that the services can communicate with each other and are scalable. Document the steps to build and run the containers, and any assumptions made in the process. Send us the repo link (optional but highly recommended).

Evaluation Criteria:

Understanding of Docker concepts and containerization. Ability to set up a microservices architecture. Quality of the Dockerfiles and docker-compose configurations. Documentation and clarity of instructions.

Test assignment B: Continuous Integration/Continuous Deployment (CI/CD) Objective: To evaluate the candidate's experience with CI/CD pipelines and version control systems. Task Description:

Using the output from Test A. Create a CI/CD pipeline using a tool like Jenkins, GitLab CI, or GitHub Actions (The pipeline should include stages for building, testing, and deploying the application). Document the CI/CD setup and provide instructions on how the pipeline works, including how to trigger builds and deployments.

Evaluation Criteria:

Proficiency in using version control (Git). Ability to set up and configure CI/CD pipelines. Understanding of automated testing and its integration into CI/CD. Documentation quality and the ability to explain the CI/CD process.

Test assignment C: Deployment to a Cloud or Server Environment Objective: To assess the candidate’s ability to deploy applications to a cloud or server environment, integrating the work done in Test B. Task Description:

Take the CI/CD pipeline and the web application developed in Test B (If you are not familiar with CI/CD, you may use output from Test A instead). Extend the CI/CD pipeline to include a deployment stage that automatically deploys the application to a cloud provider (AWS, Azure, GCP) or a server environment of your choice. Ensure the deployment includes necessary environment configurations (like virtual networks, security groups, etc.) and is scalable. Implement basic monitoring and logging for the application in the cloud/server environment. Document the deployment process, including any scripts or configuration files used, and instructions on how to access the deployed application.

Evaluation Criteria:

Ability to integrate deployment into an existing CI/CD pipeline. Understanding of cloud services and server management (depending on the deployment target). Implementation of security best practices in the deployment. Setup of basic monitoring and logging for the application. Quality of documentation and ease of accessing the deployed application.