FS26 - Distributed Systems (DSy)
This lecture series focuses on distributed systems, which are computer systems made up of multiple autonomous components, or nodes, that are linked and communicate with one another to achieve a common goal.
By the end of the series, you should have a good understanding of the various components and technologies involved in distributed systems and blockchain, as well as their implementation and deployment considerations.
Lecture Topics
The following topics are preliminary and may change or be shifted during the semester.
| Nr | Date | Topics for this Week |
|---|---|---|
| 01 | 16.02.2026 | Admin, Introduction / Motivation - Scaling |
| 02 | 23.02.2026 | Introduction / Motivation, Location and Redundancy |
| 03 | 02.03.2026 | Containers and VMs, Docker |
| 04 | 09.03.2026 | Monorepos / Polyrepos, Debugging Containers |
| 05 | 16.03.2026 | Load Balancing |
| 06 | 23.03.2026 | Web Architectures |
| 07 | 30.03.2026 | Categorization |
| - | - | - |
| 08 | 13.04.2026 | Authentication |
| 09 | 20.04.2026 | Protocols |
| 10 | 27.04.2026 | Application Protocols |
| 11 | 04.05.2026 | Exam preparation |
| 12 | 11.05.2026 | Deployment, Performance, Blockchain, Bitcoin |
| 13 | 18.05.2026 | Challenge Task Presentations |
| - | - | - |
| 14 | 01.06.2026 | Challenge Task Award Winner Announcement, Q&A |
Online Lectures & Offline Exercises
The Distributed Systems (DSy) lectures will be pre-recorded and uploaded by Friday evening. The length of the videos will be ~ 80 - 100 minutes divided into segments. The news segment (~10 min) will cover news around the topics distributed systems and blockchain and are not part of the exam. It should serve as an overview of current topics in this field. On Mondays, only exercises take place.
I will be in room FZ.0332 from 08:10 - 09:50 in St.Gallen and in room 1.257 from 13:10 - 18:40 in Rapperswil on Mondays. During exercises, you can work on your challenge task. You do not need to be present on Monday, but it is highly recommended to discuss your ideas, issues, and problems with the challenge task. On request, you can also join the exercises remotely via MS Teams.
The online lectures and PDFs can be accessed from outside the OST network (also on Youtube), the exercise and admin material only with VPN.
Lecture
Lecture 1
The admin part gives an overview over this lecture and presents the challenge task for this course (Slides: FS26-DSy-01-admin.pdf). The second video (news) reports on distributed systems and blockchain news. The first article describes a startup rebuilding its workflow around AI coding agents, a shift I experienced myself. The next article provides a mathematical framework for compression in databases, backing up my lecture point about optimizing for bandwidth. The third topic covers Discord's architecture using the Actor Model to handle trillions of messages at scale. The final article presents Backblaze's 2025 drive stats with a 1.36% failure rate across 340'000 drives, reminding us why we need redundancy and distributed systems. (Slides: FS26-DSy-01-news.pdf). The third video shows the first part of the motivation why distributed systems are necessary (Slides: FS26-DSy-01-intro-scaling.pdf). [100min]
Lecture 2
The admin part is about the lecture content and the challenge task repository invitations (Slides: FS26-DSy-02-admin.pdf). The second video (news) reports on distributed systems and blockchain news. The first article covers an incident where GPT 5.3 Codex wiped an entire drive due to a PowerShell escaping bug, reminding us that AI coding agents must be sandboxed and paired with version control. The next article describes building a startup entirely on European infrastructure for data sovereignty, feasible but slower, with thinner ecosystems and some unavoidable US dependencies, illustrating how sovereignty requirements requires distributed architectures. The final article introduces WebMCP, a browser-native API letting websites expose structured tools to AI agents directly, potentially replacing complex scraping pipelines with simple tool invocations (Slides: FS26-DSy-02-news.pdf). The third video covers the second part of the motivation for distributed systems: location (Slides: FS26-DSy-02-intro-location.pdf). The fourth video addresses fault tolerance and redundancy (Slides: FS26-DSy-02-intro-hw.pdf). [93min]
Lecture 3
The admin part is about the lecture content and the challenge task (Slides: FS26-DSy-03-admin.pdf). The second video (news) reports on ... The third video covers the introduction of containers and VMs (Slides: FS26-DSy-03-container.pdf). The fourth video dives into docker (Slides: FS26-DSy-03-docker.pdf) [XYmin]
Challenge Task FS 2026
Starting this semester, the challenge task (CT) is individual work. With the availability of generative AI tools, a single student can now design, build, and implement what previously required a group of 2-3. This also means every student must understand the full stack.
This semester's challenge task is the design and implementation of a distributed system (of your choice) from scratch where a service instance can fail. The system needs to have the following components:
- Simple Frontend (e.g., HTML, Vue, React, Svelte)
- Load balancer (e.g., Traefik, Nginx, HAProxy, Caddy)
- Two instances of a service (your choice), and during the challenge task presentation, one instance will be shut off
- JWT-based authentication (login/registration required to use the application, API endpoints protected with JWT)
- Database (persistent storage, does not need to be scalable)
Requirements
All requirements below must be met in order to pass this lecture.
- Load balancing with multiple instances with failover of a service instance
- Containerized (e.g., with docker)
- Simple frontend
- JWT-based authentication
- Persistent storage
- Use latest stable releases of chosen libraries and frameworks
- A fresh clone of the repository + a single command (e.g., docker compose up) must bring up the entire working system (or using Kubernetes), including database seeding/migration if needed. No manual setup steps allowed.
- Perform a load test against a JWT-protected endpoint of your system (e.g., using ab, wrk, hey, or k6) and document the results. During the presentation, show how your system behaves under load, what the bottleneck could be, and how many requests/second it can handle.
- The use of AI coding assistants (e.g., Claude Code, GitHub Copilot, Cursor, or similar) is highly encouraged. You are expected to understand and be able to explain all code in your project, regardless of how it was produced.
- The solution may use existing libraries and code, but those must be open software software
- You are allowed to use any language, framework, and platforms. However, the supervisors are familiar with those: Java, Golang, JavaScript, Linux.
Milestones
- 02.03.2026 - 1st hand-in of your initial plan and project idea. Invitation to github/gitlab repository
- 30.03.2026 - 2nd hand-in of your initial commit of your challenge task and current progress (initial state, does not need to run)
- 04.05.2026 - 3rd hand-in of your current progress (what works, what is still open)
- 18.05.2026 - final hand-in / presentation
- You are expected to understand and explain your code
- Presentations will take place during the week starting 18.05.2026, with slots available throughout the week in both St.Gallen and Rapperswil to accommodate the higher number of individual presentations
- You should show the architecture, components, and design decisions in 5 min, a demo in 5 min, and the Q&A will be 5 min
- After your presentation, you need to hand in your PDF presentation.
If all requirements are fulfilled, you are encouraged to hand in before the respective deadlines.
Individual Work
There are no groups this semester. Each student works individually on their challenge task. During exercise hours, you can work on your task and discuss ideas, issues, and problems with the supervisor. You do not have to be present at the exercises, but it is highly recommended. You shall utilize homework time to work on the challenge task besides the exercise time slots. Your submitted source code and presentation will be only accessible via VPN.
For a reference of previous work, go to FS25.
| Nr | Name | Project | Milestone 1 |
|---|---|---|---|
| 01 | Tobias M. | Watchlist | ✓ |
| 02 | Yves F. | Lernkarte (tbd) | |
| 03 | Marco S. | Dart Helper | ✓ |
| 04 | Bjoern S. | Priority Manager | ✓ |
| 05 | Dominik B. | URL Shortener | ✓ |
| 06 | Assvin S. | Todo | ✓ |
| 07 | Kevin S. | FranzFinance | ✓ |
| 08 | Aron B. | Logging Dashboard | ✓ |
| 09 | Lars T. | Drello Light | ✓ |
| 10 | Fabian L. | Reservationstool | ✓ |
| 11 | Michael S. | Ideenfriedhof | ✓ |
| 12 | Silas K. | Game of Life | ✓ |
| 13 | Till S. | AV Light | ✓ |
| 14 | Rafael D. | TCGManager | ✓ |
| 15 | Joris H. | Cahoot Light | ✓ |
| 16 | Jerome K. | Kalaha | ✓ |
| 17 | Jonas N. | Fractal Generator | ✓ |
| 18 | Tiago D. | Rate Limiter (Convert App) | ✓ |
| 19 | Ethan B. | Distributed Chess | ✓ |
| 20 | Gaëtan A. | 2Password | |
| 21 | Linus G. | MyTrip | ✓ |
| 22 | Katharina T. | ExpenseTracker | ✓ |
| 23 | Claude B. | Doctopus | ✓ |
| 24 | Olha S. | Hand System Management | ✓ |
| 25 | Finn S. | PixelCanvas | ✓ |
| 26 | Stefanie J. | MathGame | |
| 27 | Mario B. | PetRock | ✓ |
| 28 | Luca S. | ThreatWatch | ✓ |
| 29 | Ramon S. | VotingSystem | ✓ |
| 30 | Colin V. | Crawler | |
| 31 | Marco C. | tapper | ✓ |
| 32 | Aurel K. | Multiplayer Quiz | ✓ |
| 33 | Pietro L. | ||
| 34 | Mikail Y. | FamilyTreeManager | ✓ |
| 35 | Yanick E. | holiday expense tracker | ✓ |
| 36 | Andrej E. | Interactive Classroom | ✓ |
| 37 | Lukas Z. | CalledIT | ✓ |
| 38 | Luca G. | FitnessTracker | ✓ |
| 39 | Leon R. | TV Watchlist | ✓ |
| 40 | Fabio F. | LDNS | ✓ |
| 41 | Severin N. | QuizTune | ✓ |
| 42 | Nico R. | MeTube | ✓ |
| 43 | Loris P. | 0Chat | ✓ |
| 44 | Leo V. | distributed_stock_provider | ✓ |
| 45 | Jovin R. | Dashboard / Metrics | ✓ |
| 46 | Jasmin F. | SocialMedia pOST | ✓ |
| 47 | Cedric C. | Habit Tracker | ✓ |
| 48 | Mirco D. | TCG Deck Builder | |
| 49 | Lenny M. | forum2000 | ✓ |
| 50 | Jonas G. | SiteLog | ✓ |
| 51 | Marc F. | CoffeeCluster | ✓ |
| 52 | Jeriel F. | URL & Bookmark Manager | ✓ |
| 53 | Manuel B. | Distributed Notes App | ✓ |
| 54 | Raphael L. | MoneyPilot | ✓ |
| 55 | Diego S. | AnkiGenerator | ✓ |
| 56 | Josias B. | Aurora Engine | ✓ |