{"id":23819827,"url":"https://github.com/kth/devops-course","last_synced_at":"2025-05-15T07:06:58.579Z","repository":{"id":32278920,"uuid":"131834720","full_name":"KTH/devops-course","owner":"KTH","description":"Repository of the DevOps course at KTH Royal Institute of Technology DD2482","archived":false,"fork":false,"pushed_at":"2024-11-25T10:52:18.000Z","size":255353,"stargazers_count":197,"open_issues_count":28,"forks_count":423,"subscribers_count":33,"default_branch":"2024","last_synced_at":"2025-04-11T18:25:04.900Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/KTH.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,"zenodo":null}},"created_at":"2018-05-02T10:22:58.000Z","updated_at":"2025-03-24T01:11:55.000Z","dependencies_parsed_at":"2023-01-14T20:53:45.106Z","dependency_job_id":"32aea6e2-1d40-44ca-8c4b-35886798f0fa","html_url":"https://github.com/KTH/devops-course","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTH%2Fdevops-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTH%2Fdevops-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTH%2Fdevops-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KTH%2Fdevops-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KTH","download_url":"https://codeload.github.com/KTH/devops-course/tar.gz/refs/heads/2024","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254292042,"owners_count":22046426,"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-01-02T07:16:03.615Z","updated_at":"2025-05-15T07:06:53.563Z","avatar_url":"https://github.com/KTH.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KTH DevOps Course\n\nThis repository contains the material and content of the DevOps course at KTH Royal Institute of Technology [DD2482](https://www.kth.se/social/course/DD2482/).\n\n## Schedule\n\nThe schedule is at \u003chttps://www.kth.se/social/course/DD2482/calendar/\u003e\n\n*If you can't see any schedule events on the HTML page*  \n*Change course rounds/groups in [My settings](https://www.kth.se/social/course/DD2482/subscription/) or change the time period above so that it conforms to the course round.*\n\n## Program\n\n### Week 1: Introduction (mandatory)\n* Preparatory reading: [DevOps principles](https://www.atlassian.com/devops/what-is-devops) and [demo](https://youtu.be/qcm0rG8EKXI)\n* Course introduction [Martin Monperrus](https://www.monperrus.net/martin/) (Teaching philosophy, [flipped classroom](https://en.wikipedia.org/wiki/Flipped_classroom), Expectations, Team, Agenda, Grading, Communication, Infrastructure, Master's theses and Research)\n* Goals: watch the repo, register one first task as a pull request on this repo.\n\n### Week 2: [Testing automation](https://github.com/KTH/devops-course/issues/9), [Continuous Integration](https://github.com/KTH/devops-course/issues/3), [Feature flags](https://github.com/KTH/devops-course/issues/21)\n* Preparatory material [Testing at scale](https://increment.com/testing/testing-at-scale/), [Harvesting Production GraphQL Queries to Detect Schema Faults](https://arxiv.org/pdf/2112.08267), [The Rituals of Iterations and Tests](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9238653)\n* Student presentations, demonstrations\n\n### Week 3: [Continuous Deployment / Delivery](https://github.com/KTH/devops-course/issues/12)\n* Preparatory material [An Introduction to Continuous Integration, Delivery, and Deployment](https://www.digitalocean.com/community/tutorials/an-introduction-to-continuous-integration-delivery-and-deployment), [The Top 10 Adages in Continuous Deployment](https://zlmonroe.com/CSE566/Readings/5.The_Top_10_Adages_In_Continuous_Deployment.pdf)\n* Student presentations, demonstrations\n\n### Week 4: [MLOps/AIOps/LLMOps](https://github.com/KTH/devops-course/issues/1016)\n* Preparatory material: [Short intro to MLOps](https://www.databricks.com/glossary/mlops), [Building Machine Learning Models Like Open Source Software](https://cacm.acm.org/magazines/2023/2/268952-building-machine-learning-models-like-open-source-software/fulltext), [What is A/B testing?](https://medium.com/is-that-product-management/what-is-a-b-testing-bc964ecd99b4)\n* Student presentations, demonstrations\n\n\n### Week 5: [Infrastructure as Code](https://github.com/KTH/devops-course/issues/2)\n* Preparatory material: [Best practices for container compliance](https://increment.com/containers/container-compliance/), [Building on-demand staging environments](https://increment.com/containers/on-demand-staging-environments-kubernetes/), [Gang of eight: a defect taxonomy for infrastructure as code scripts](http://www.chrisparnin.me/pdf/GangOfEight.pdf)\n* Student presentations, demonstrations\n\n\n### Week 6: [Dependency Management](https://github.com/KTH/devops-course/issues/24) \u0026 [DevSecOps](https://github.com/KTH/devops-course/issues/18)\n* Preparatory material: [A 'Worst Nightmare' Cyberattack: The Untold Story Of The SolarWinds Hack](https://www.npr.org/2021/04/16/985439655/a-worst-nightmare-cyberattack-the-untold-story-of-the-solarwinds-hack), [The supply chain of software](https://increment.com/apis/apis-supply-chain-software/), [Successes, challenges, and wombat behind npm](https://increment.com/development/interview-with-isaac-z-schlueter-ceo-of-npm/), [A comprehensive study of bloated dependencies in the Maven ecosystem ](https://arxiv.org/pdf/2001.07808)\n* Student presentations, demonstrations\n\n\n### Week 7: Other topics\n* incl. [Monitoring and Observability](https://github.com/KTH/devops-course/issues/8), [cultural aspects](https://github.com/KTH/devops-course/issues/7) and [legal aspects](https://github.com/KTH/devops-course/issues/1557), [Software bots](https://github.com/KTH/devops-course/issues/310), , [Misc DevOps topics](https://github.com/KTH/devops-course/issues/13)\n* Preparatory material [Chaos Engineering](https://ieeexplore.ieee.org/iel7/52/5204063/07436642.pdf) [A Chaos Engineering System for Live Analysis and Falsification of Exception-handling in the JVM](http://arxiv.org/pdf/1805.05246) \n* Student presentations, demonstrations\n\n\n## Rules\n\n\nTo pass the course, the student has to complete and pass between 3 and 5 tasks:\n* The tasks are in category: \"[presentation (mandatory)](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#presentations)\", \"[demo (mandatory)](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#demos)\", \"[scientific paper](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#scientific-papers)\", \"[executable tutorial](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#executable-tutorials)\", \"[contribution to open-source](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#open-source-contributions)\", \"[feedback](https://github.com/KTH/devops-course/blob/2024/grading-criteria.md#feedback)\" (presentation and demos are mandatory, at most one in the same category, it is not necessary to cover everything).\n* The [grading criteria page](grading-criteria.md) is the unique reference which explains how to pass each task category.\n* The student proposes a category and a topic, which is discussed and accepted by the TA. The proposal is made as a [structured pull-request](https://github.com/KTH/devops-course/blob/2024/.github/pull_request_template.md) on this repository. The 3-5 graded contributions must have little overlap.\n* The same student cannot choose the same topic for two different tasks. The 3-5 tasks should cover different aspects of DevOps.\n* Deadlines:\n  * Deadline for presentations, demos, paper: the day and time they are given in person\n  * Deadline 1 for async tasks: Oct 1 2024, 17h Stockholm time\n  * Deadline 2 for async tasks: Oct 8 2024, 17h Stockholm time\n  * Deadline 3 for async tasks: Oct 15 2024, 17h Stockholm time\n  * Deadline for feedback on async tasks: 48 hours after delivery for a given deadline\n  * Deadline for repeated tasks (all): **Nov 5 2024, 17h Stockholm time**.\n  * The deadlines are strict and cannot be extended. Not meeting a deadline means failing the task / the repetition.\n* Final grading scheme\n  * E: 3 completed tasks (excluding feedback)\n  * C: 4 completed tasks \n  * B: 5 completed tasks \n  * A: 5 completed tasks + active participation in all but one lectures\n* Active participation: attendance to all but one lectures, a traceable record of questions asked during lectures (through GitHub issues) and the answers you received to them.\n* Group work is encouraged (max 2 persons) but you cannot be with the same person for more than 2 individual tasks. As a general rule, you are not allowed to work alone.\n* A failed task requires to pass it again at the end of the course (repeat), based on the feedback from the failure. A task can only be repeated once.\n* If the whole course is failed, no grades are kept if the student registers again to the course the year after. \n* After a proposal has been merged, the topic of that proposal cannot be changed.\n\nGroup Rules\n* When you send a pull request for registration, please follow the name convention of using email addresses of two members to create the folder: email-email.\n* We recommend 2 students. Three is also possible for ambitious demos or contribution to open-source.\n\n## Communication\n\n* All communication for the course DD2482 should be sent to \u003cdd2482@eecs.kth.se\u003e.\n* you create issues here if you think the question is good to be discussed publicly, the rules of [netiquette](https://en.wikipedia.org/wiki/Etiquette_in_technology) fully apply.\n\n## Participation\n\n**Lectures** The lectures are held on campus (no hybrid / no video link). The lecture locations are given on KTH Social \u003chttps://www.kth.se/social/course/DD2482/calendar/\u003e. The first lecture is mandatory, the other ones are strongly encouraged.\n\n**Lab sessions**\n\n* Lab slots are not mandatory. They are given in person (preferably) or videoconf.\n* During the planned lab time slot, please use this [Queue](https://queue.csc.kth.se/Queue/DD2482) for booking online meetings\n* Specify your zoom meeting link when you register the queue\n\n**Examinations**: Some tasks require physical presence (presentation, demo, scientific paper), others do not (open-source, feedback).\n\n## Team\n\n* [Prof. Martin Monperrus](http://www.monperrus.net/martin/) (Examiner)\n* [Javier Ron](https://www.kth.se/profile/javierro?l=en) (TA)\n* [Deepika Tiwari](https://www.kth.se/profile/deepikat) (TA)\n* [Sofia Bobadilla](https://www.kth.se/profile/sofbob) (TA)\n* [Aman Sharma](https://www.kth.se/profile/amansha) (TA)\n\n\n## Prerequisites\n\n* A software engineering course (eg [DD2480](https://www.kth.se/student/kurser/kurs/DD2480))\n* A networking course (eg [IK2218](https://www.kth.se/student/kurser/kurs/IK2218?l=en))\n\n## See also\n\n* KTH Social URL: \u003chttps://www.kth.se/social/course/DD2482/\u003e\n* Kopps URL: \u003chttps://www.kth.se/student/kurser/kurs/DD2482?l=en\u003e\n* Past editions:\n  * [KTH DevOps Course 2019](https://github.com/KTH/devops-course/blob/master/attic/2019/)\n  * [KTH DevOps Course 2020](https://github.com/KTH/devops-course/blob/master/attic/2020/)\n  * [KTH DevOps Course 2021](https://github.com/KTH/devops-course/blob/master/attic/2021/)\n  * [KTH DevOps Course 2022](https://github.com/KTH/devops-course/blob/master/attic/2022/)\n  * [KTH DevOps Course 2023](https://github.com/KTH/devops-course/blob/master/attic/2023/)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkth%2Fdevops-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkth%2Fdevops-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkth%2Fdevops-course/lists"}