FS21
Challenge Task Winner Distributed Systems & Blockchain FS 2021
The winning group is: Andy Pfister, Leandro Ceriani, Michael Brändli
Andy, Leandro, and Michael implemented MegaMeme, which is a voting meme platform with Svelte and Ruby on Rails. They used 3 locations to run their platform redundantly, used docker swarm, and for a unified filesystem GlusterFS. For the database they used CockroachDB. (Announcement)
The price is sponsored by Axelra, a tech venture builder that accelerates digital business models.
Important dates
- Lecture dates: 22.02.2021 - 04.06.2021
- Q&A week: 09.08.2021 - 13.08.2021
- Exam sessions: 16.08.2021 - 17.09.2021
- Deadline Challenge Task: 17.05.2021, 23:59 (CET)
Distributed Systems & Blockchain (DS1)
| Nr | Date Lecture | Date Exercise | Topics | Slides | Milestones |
|---|
| 01 | 23.02.2021 | - | Admin, Introduction | - | Group forming, idea for services |
| 02 | 02.03.2021 | 02/03.03.2021 | Protocols, Basics | - | Group forming, idea for services |
| 03 | 09.03.2021 | 09/10.03.2021 | Containers and VMs | - | Information flow, setup dev environment |
| 04 | 16.03.2021 | 16/17.03.2021 | Distributed Applications: load balancing | - | Load balancer |
| 05 | 23.03.2021 | 23/24.03.2021 | Authorization (basic, digest, session-based, JWT, OAuth) | - | JWT Authorization |
| 06 | 30.03.2021 | 30/31.03.2021 | Application Protocols and RPC | - | Storage backend |
| 07 | - | - | Eeaster Vacations | - | |
| 08 | 13.04.2021 | 13/14.04.2021 | Distributed Version Control : git | - | |
| 09 | 20.04.2021 | 20/21.04.2021 | Deployment I, Blockchain, Bitcoin I | - | |
| 10 | 27.04.2021 | 27/28.04.2021 | Deployment II, Blockchain, Bitcoin II | - | Frontend |
| 11 | 04.05.2021 | 04/05.05.2021 | Blockchain, Bitcoin, Ethereum III | - | Connecting everything |
| 12 | 11.05.2021 | 11/12.05.2021 | Real-world examples | - | |
| 13 | 18.05.2021 | 18/19.05.2021 | Challenge Task Presentations I | - | |
| 14 | 25.05.2021 | 25/26.05.2021 | Challenge Task Presentations II | - | |
| 15 | 01.06.2021 | - | Challenge Task Award Winner Announcement, Q&A | - | |
| 16 | 10.08.2021 | - | Beratungswoche | | |
Online lectures
Due to COVID-19, the DS1 lecture will be held online. I'm preparing online videos as a replacement for the lectures on Tuesdays 13:10 - 14:50. The length of the videos will be ~ 80 - 100 minutes (2 x 45min. lectures) divided into segments. For the exercises, I will be available online on Tuesday from 15:10 - 16:50 and Wednesday 10:10 - 16:50 on MS Teams. Team code: ngh0p3h. Please contact me if you have any questions regarding the challenge task or also just to say Hi :) During exercises, you can work on your challenge task.
The online lectures and PDFs can be accessed from outside (also on Youtube), the excercise material only with VPN.
Lecture 1
Lecture 2
Lecture 3
Lecture 4
Lecture 5
Lecture 6
Application Protocols and RPC
The admin part shows the current planning and gives an update on round-robin load-balancing with Traefik and Nginx. (Slides: DS1-FS21-06-Admin.pdf).
The second video is the segment "distributed systems in the news" with more NFTs and DeFi news and articles (Slides: DS1-FS21-06-News.pdf). The third video presents application protocols and RPC mechanisms. (Slides: DS1-FS21-06-App-proto.pdf). [118min]
Lecture 7
Easter Vacations...
Lecture 8
Lecture 9
Lecture 10
Lecture 11
Lecture 12
News
Jani Helin, Moflix
Dr. Guilherme Sperb Machado, AxLabs
Axelra Team
The first video is the segment "distributed systems in the news" with the Chia blockchain, some critical thoughts about the crypto world, and the Pinecone overlay network for P2P communication. (Slides: DS1-FS21-12-News.pdf). The second video is the interview with Jani Helin, Technical Director at Moflixgroup, where Jani talkes about the architeckure of the Swype platform. The third video shows swype in action. The fourth video is the interview with Guilherme Sperb Machado, who is the founder of AxLabs. The fifth video is the interview with the Axelra team.[85min]
Lecture 13
Lecture 14
Lecture 15
Lecture 16
Challenge Task FS 2021
This semester's challenge task (CT) is the design and implementation of a simple distributed system, with the following components:
- Simple Frontend (e.g., HTML, Vue, React, Svelte)
- Loadbalancer(e.g., traefik, nginx, HAproxy, Caddy)
- Two instances of a service (your choice)
- One storage backend (Postgres, simple KV memory storage)
- JWT Authentication
VirtualBox Image
You can deploy on any machine you want (AWS, Azure, or your own machine). If you don't want to deploy on your maschine, you can use the following VirtualBox image (139MB). The alpine image is a VirtualBox image, that can be imported. Install VirtualBox and click on "File -> Import Appliance" to import the ova image. Once the image is started, you can login with root/ost12345 or ssh into the image with ssh root@localhost -p 2222. Since docker and docker-compose is already installed, you can try the command docker run hello-world. You should see a "Hello from Docker!".
To use password less login, use ssh-copy-id -p 2222 root@localhost, which copies your public key to your VM and on the next login, you don't need to provide a password.
Requirements
All requirements below must be met in order to pass the challenge task.
- Load balancing
- Scalable service
- JWT authentication
- Dockerized
- Use latest stable releases of chosen libraries and frameworks
- Storage does not need to be scalable (you can build it scalable if you want)
- The solution may use existing libraries and code, but those must open software software
Deliverables: 17.05.2021, 23:59 (CET) - well documented infrastructure, presentation (slides) of the application, also showing the architecture and design decisions via email to thomas.ost-at-bocek.ch (the OST mailserver cannot handle attachements with source code). The code and configuration should be easy to read and/or well documented, the presentation (slides or text) should show the architecture, components, and design decisions. During the weeks 18.05./25.05., you will present and demo your solutions via MS Teams.
You are allowed to use any language, framework, and platforms. However, the supervisors are familiar with those: Java, Golang, JavaScript, Linux.
Groups
There will be groups of 2 - 3 for the challenge task. During the challenge task, the group shall meet every week during exercise hours to work on the task and discuss the next steps. The groups shall utilize their homework times to work on the CT, besides the exercise time slots assigned on Tuesday/Wednesday. You do not have be physically present at the exercises. The groups shall determine and set-up an internal project plan and shall distribute the workload so that each group member gets a fair load of work. Results are only accessible via VPN.