A public learning laboratory for understanding distributed systems through theory, failure analysis, backend examples, small experiments, and System Design interview practice.
This repository is part of a Learning in Public journey.
The goal is not to reproduce or summarize a textbook chapter by chapter.
The goal is to learn how to:
- reason about partial failures and uncertainty;
- state system assumptions explicitly;
- distinguish safety, liveness, availability, reliability, and consistency;
- understand time, ordering, coordination, consensus, and replication;
- design robust backend services;
- explain architectural trade-offs during technical interviews.
The main theoretical reference is:
Sukumar Ghosh, Distributed Systems: An Algorithmic Approach, Second Edition, CRC Press, 2015.
The book itself is not included in this repository.
All notes, explanations, diagrams, exercises, examples, and laboratories published here are original learning artifacts.
Each topic follows a repeatable loop:
- identify the assumptions and system model;
- build an intuitive explanation;
- formalize properties and guarantees;
- analyze at least one failure scenario;
- apply the concept to a realistic backend system;
- answer exercises and interview questions;
- verify the concept with a focused laboratory when useful;
- record lessons learned and remaining gaps.
.
├── .github/
│ ├── bilingual-docs.json
│ └── workflows/
│ └── bilingual-docs.yml
├── docs/
│ ├── glossary/
│ ├── interviews/
│ ├── lessons/
│ ├── reviews/
│ ├── progress.md
│ └── roadmap.md
├── labs/
├── project/
├── sessions/
├── scripts/
│ └── check-bilingual-docs.py
├── sources/
├── tests/
│ └── test_bilingual_docs.py
├── CONTRIBUTING.md
├── CONTRIBUTING.it.md
├── README.md
└── README.it.md
The canonical structured learning paths are available under sessions.
Session 01 repository preparation is Prepared. Active study has not yet been marked complete.
English is the canonical documentation language.
Italian counterparts use the .it.md suffix. Bilingual entry points and their
classification are registered in .github/bilingual-docs.json.
Existing study documents remain in the measurable legacy backlog until they are migrated through focused issues. Contributions must follow CONTRIBUTING.md.
- No textbook PDFs, copied chapters, or extended quotations.
- Every commit should leave behind a useful learning artifact.
- Examples should expose failures, not only the happy path.
- Technology choices must be justified by assumptions and trade-offs.
- A timeout is evidence of uncertainty, not proof of failure.
- More nodes do not automatically imply greater availability.
- Complex laboratories are split into small, observable experiments.
Repository foundation completed.
Session 01 repository preparation is Prepared. Active study has not yet been marked complete.
Canonical session navigation starts at Study sessions.