Introduction¶
Welcome to the documentation pages for the lab assignments of the course Softwareontwikkeling en -beheer, commonly
referred to as DevOps. Here you will find all the information that is needed to participate in the five Lab sessions
that we have planned for you.
The Devops game¶
All five Lab sessions are linked into a continuous long-running exercise, which revolves around participating in a multiplayer game that challenges you learn certain devops concepts in a pleasant and practical way.
You are a faction?
- You control a Faction (indirectly)...
- ... by programming the decision logic for your Faction
- This logic is called by our game host at the start of each turn
- A Faction is defeated if its base is conquered
- Goal: obtain the highest score or be the last faction standing
For more details on how the game works, we refer to the Game Manual.
Setup¶
During these Lab sessions, you will be working in three different environments:
- Locally (on your own machine): for developing and testing your Faction logic. We've provided a local test setup using Docker that you can use to run the game locally.
- On a Gitlab server: for version control, CI/CD pipelines, issue tracking and communication with your team
- On a Kubernetes cluster: for hosting your Faction logic and other services required for participating in the game
Local test setup¶
We provide you with a local test setup using Docker that enables you to quickly test your faction logic with a stripped down version of the game server and web UI.
Gitlab server¶
The Gitlab server is the central component for the Devops workflows you will be practicing. It will host your Git repositories, execute your CI/CD pipelines (e.g. for running tests or deploying to Kubernetes) and provide you with an issue tracker for organizing communication (e.g. TODOs, bug reports, support requests) with your team members and the assistants.
Kubernetes cluster¶
The Kubernetes cluster is the service orchestration layer we are using to provide you with a Cloud environment for reliably hosting the services required for these Lab sessions. These include common services such as the main Game server (which will call your Faction logic services), Web UI, backend databases, Gitlab CI/CD runners and per-Faction services such as your Faction logic service, Prometheus and Grafana instances, etc...
Phase 1¶
In a first phase, you will focus on getting your faction logic service running on our Kubernetes infrastructure. Once your logic service is able to receive request from the main Game service, your Faction will automatically participate in the Devops multiplayer game.
Phase 2¶
In a next phase, you will extend your Kubernetes deployment with additional services, with the goal of enabling monitoring for your runtime environment in order to gain more insight in how your faction logic performs.
Lab overview¶
Below are the dates of lab sessions and their respective deadlines so you can start planning your work:
Lab session | Date | Deadline |
---|---|---|
Lab 1 | 10/10 | 20/10 |
Lab 2 | 24/10 | 3/11 |
Lab 3 | 14/11 | 24/11 |
Lab 4 | 5/12 | 15/12 |
Lab 5 | 12/12 | 15/12 |
Lab 4 & 5 cover the same assignment, but there will be two physical sessions for support.
Brief listing of the topics that will be handled for each Lab session:
- Docker tutorial Setup a local monitoring stack
- Lab setup
- Get your project up and running locally
- Build an initial CI pipeline on Gitlab
- Form a group! (3 students)
- Project planning and development workflow
- Implementing and testing your own game logic
- Add test section to the CI/CD pipeline
- Kubernetes deployment
- CI/CD improvements
- Devops Game starts (no direct score impact, but possible bonus point to earn)
- Improve faction logic robustness
- CI/CD improvements
- Instrumentation and monitoring
- Code coverage reports
Lab Quotation¶
Each deadline will be accompanied by a Lab quotation. For each part you will receive a score on 10 points. The total score for the Lab sessions is 40 points, which will be converted to a final score on 20 points.
Bonus points can be gained, based on the performance of your team in the devops game (more info in Lab session 3). Up to 2.5 points can be earned by the best performing team. However, the total score can never exceed 20 points.
The resulting grade counts for 50% of your total grade for this course. However, in order to pass this course, you need a score of at least 9/20.
How are the lab sessions quoted?¶
Each assignment will include a checklist of what is expected of you. This checklist contains a basic set of requirements, deliverables and extras. These extra requirements are for students that are looking for an additional challenge, but know that 80-90% of the points will be earned by completing the basic requirement list.
In addition, we will also review how you interact with the Gitlab system and how you communicate with assistants, for example:
- Use of the issue tracker: write clear and informative issue descriptions, link to related issues or CI/CD Jobs when relevant, avoid posting screenshots, etc.
- Use of conventional commits: add structure and meaning to your commits by categorizing commits using standardized
prefixes such as
fix:
,feat:
,build:
,chore:
,ci:
,docs:
, etc.
See Lab 1 and Issue tracker for more information on these topics!