Rafting Trip
Course description
Read more about the course
Why This Course
Implementing Raft is objectively a challenging task that tests an engineer's maturity. Formally, the goal is to write Raft, but in fact, the task is broader: to develop a strategy for solving a complex problem. How to break down a large mechanism into manageable parts? How do these parts interact? Where to start? How to test? Working on this project makes a developer technically stronger and a more mature architect.
Prerequisites
Such a project is often undertaken as part of master's courses on distributed systems. You will need a confident command of the chosen programming language (Rust, Python, Java, Go, etc.), and the ability to test, debug, and work in the terminal. It is also desirable to have experience in network and system programming, as well as working with multithreading. All necessary concepts are covered within the course, but a basic preparation significantly helps.
Learning Format
The course is project-based and requires a significant amount of independent intellectual and practical work. There are no presentations. Each day starts with discussions, demonstrations, and analyses of examples related to specific aspects of the project. However, most of the time is dedicated to individual development.
Development Environment
You are free to choose any programming language. During discussions, examples are usually given in basic Python as executable pseudocode. However, it is important to understand that a successful Raft implementation requires attention to detail. This is why many prefer to use more "strict" and instrumented environments.
Key Topics
Throughout the course, fundamental aspects of parallelism and distributed computing are covered, including:
- Socket network programming.
- Message exchange and communication patterns (RPC, queues, etc.).
- State machines.
- Formal specifications and modeling (including TLA+).
- Multithreading.
- Asynchronous programming.
- Object-oriented design.
- Software architecture.
- Error handling and fault tolerance.
One of the main challenges is testing, monitoring, and debugging systems with nondeterminism and failures. Even in a configuration of five Raft nodes, it can run up to 60 threads in multiple processes, using timers, queues, and channels — this creates extreme cognitive load. A significant part of the course is dedicated to strategies for managing this complexity.
Are You Ready?
Probably not. But that's what makes the journey interesting.
Watch Online
All Course Lessons (10)
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | 001 Day 1 Morning Demo | 03:29:42 | |
| 2 | 002 Day 1 Afternoon | 03:24:22 | |
| 3 | 003 Day 2 Morning | 03:31:35 | |
| 4 | 004 Day 2 Afternoon | 03:28:03 | |
| 5 | 005 Day 3 Morning | 03:32:16 | |
| 6 | 006 Day 3 Afternoon | 03:15:17 | |
| 7 | 007 Day 4 Morning | 03:21:10 | |
| 8 | 008 Day 4 Afternoon | 03:31:49 | |
| 9 | 009 Day 5 Morning | 03:30:31 | |
| 10 | 010 Day 5 Afternoon | 03:21:39 |
Unlock unlimited learning
Get instant access to all 9 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionComments
0 commentsWant to join the conversation?
Sign in to commentSimilar courses
Screenflow for Screencasters
Fundamentals of Operating Systems
Supercharged Code Editing with Vim and Neovim
Atari 2600 Programming with 6502 Assembly