{"id":24869560,"url":"https://github.com/catho/infra_devops_exam","last_synced_at":"2025-03-26T21:42:54.034Z","repository":{"id":86983242,"uuid":"236757647","full_name":"catho/infra_devops_exam","owner":"catho","description":"DevOps Exam","archived":false,"fork":false,"pushed_at":"2020-01-28T15:28:50.000Z","size":135,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-01T03:31:42.018Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-28T14:43:27.000Z","updated_at":"2023-07-07T07:01:49.000Z","dependencies_parsed_at":"2023-03-02T14:00:21.926Z","dependency_job_id":null,"html_url":"https://github.com/catho/infra_devops_exam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Finfra_devops_exam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Finfra_devops_exam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Finfra_devops_exam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catho%2Finfra_devops_exam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catho","download_url":"https://codeload.github.com/catho/infra_devops_exam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245743327,"owners_count":20665090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-01T03:30:23.984Z","updated_at":"2025-03-26T21:42:54.025Z","avatar_url":"https://github.com/catho.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to Catho Challenge\n_Please read these instructions carefully._\n\n## Purpose\n\n**There are 3 challenges in this project:**\n\n#### 1. Development Skills\n\nWe have an API Application called [devopsExam](devopsExam/devopsExam.py), it based in Python3.7 and it has 2 main routes _/users_, _/user/\\{id\\}_. The route _/users_ has 2 methods (_GET_ and _POST)_, the method _GET_ return all users on database (in this application, database is a ElastiCache Redis) and the method _POST_ create a new user. The route _/user/\\{id\\}_ has only 1 method (_GET_), this method returns a specific user based on _id_.\n\nThe main objective in this challenge, is solve a problem in application code (really basic problem).\n\n**OBS: It is not necessary has advanced knowledge in development, our expectations are about your development skills;**\n\n#### 2. Terraform\n\nThe main objective here, is create an AWS Environment using Terraform, where the application **devopsExam** must be deployed, ensuring _High Availability_, _Scalability_ and _Resilience_.\n\nThe architecture must have the following resources:\n\n- VPC\n\t- Network: 10.253.0.0/16;\n- 2 Private Subnets Multi A-Z (Only LAN Traffic)\n\t- Networks: 10.253.0.0/24 and 10.253.1.0/24;\n- 2 Public Subnets Multi A-Z (Only WAN Traffic)\n\t- Networks: 10.253.2.0/24 and 10.253.3.0/24;\n- SecurityGroup\n\t- Granting access to the application **(Only HTTP)**;\n- ElastiCache Redis Cluster\n\t- Application's Database;\n- Lambda Function\n\t- To host application **devopsExam**;\n- API Gateway\n\t- Integrated with Lambda function (According routes described on challenge 1).\n\n#### 3. CICD\n\nThe main objective here, is create a pipeline (Jenkins _**[Preferred]**_, Code Pipeline or Github Actions) to deploy all AWS Environment (Terraform) and Application **devopsExam**.\n\n## Expectations\n\nOur expectations about all challenges are:\n\n1. Perform the pipeline to create entire AWS environment, including deploy the Application **devopsExam** ;\n2. If there isn\u0026#39;t pipeline, the repository must have a **README.md** with the procedure to run terraform and deploy application;\n3. We\u0026#39;ll perform a _curl_ in the API Gateway DNS and the returns must be:\n\t- In Route _/users_ with method _POST_\n\t```Return 201 HTTP Code and create a user;```\n\n\t- In Route _/users_ with method _GET_\n\t```Return 200 HTTP Code and all users saved in database (Redis);```\n\n\t- In Route _/user/{id}_ with method _GET_\n\t```Return 200 HTTP Code and specific user saved in database (Redis);```\n\n## Submissions\n\nYou should send us a git patch file with your solution. To do so follow these steps:\n\n**Clone (do NOT fork) this repository to your machine:**\n```$ git clone https://github.com/catho/infra_devops_exam.git```\n\n_Implement your solution_\n\n**Take a look at your changes:**\n```$ git status```\n\n**Add some new file/dir:**\n```$ git add -N terraform/main.tf```\n\n**Take a new look at your changes and confirm if it's everything ok:**\n```$ git status```\n\n**check the diff:**\n```$ git diff```\n\n_Make sure that it looks like your solution, otherwise repeat the steps above. If everything looks ok, move to the next step._\n\n**Commit your changes locally:**\n```$ git commit -am \"My solution\"```\n\n**Create a patch file containing your changes:**\n```$ git format-patch origin/master --stdout \u003e result.patch```\n\n_Check result.patch, it should look like git diff output. To check the diff after committing, use git diff origin/master HEAD.\nIf something looks wrong, run git reset origin/master and go to step 2.\nIf everything looks right Email us the result.patch file._\n\n**Please do not fork this repository and do not publish your solution online!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatho%2Finfra_devops_exam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatho%2Finfra_devops_exam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatho%2Finfra_devops_exam/lists"}