Plan
Формализация задачи
функциональные требования (что пользователь хочет от системы в виде сценариев, jobs to be done)
нефункциональные требования (главные архитектурные характеристики: sizing, rps)
Границы системы
выбрать правильный способ интеграции системы: files, DB, API, messaging.
✅ if (API) REST?, RPC?, GraphQL, AsyncAPI
✅ выбрать сети и протоколы (TCP, UDP)
✅ Балансировщики нагрузки (nginx, HAproxy)
обрабатываемые сценарии
NFR questions / aspects:
- DAU / MAU
- кол-во пользователей через 5-10 лет
- кол-во операций пользователем в день
- RPS, сетевой трафик, кол-во соединений
- CPU
- HDD / SSD (only 85% of disk space is available, 3-5% disks are destroyed over the year, do not forget about replication)
- $$$
~ 100_000 sec in a day (86400 accurately)
read 1MB sequentially from network ~ 10ms
read 1MB sequentially from disk ~ 30ms
Google SRE book with calcualtions (recommended to have a look)
TODO
- websocket vs long polling
Потоки данных и компоненты системы
happy path. Read / write path
corner cases (когда части системы отваливаются). Уточнить на собесе что именно т до какой глубины здесь прорабатывать
проговорить логи, мониторинг, миграцию данных
TODO:
stateless / stateful нагрузки (как разделять?)
how to store documents in document oriented dbs
✅ repeat relations in DB ( 1 to many, etc)
K/V, document oriented, column oriented, graph
по конкретным базам проработать
понять гарантии. Какой диапазон нагрузок они потянут. Дрифты часов
✅ ❓DDD
✅ Entity-Relationship diagram
twelve factor app
✅ what is failure domains
как масштабировать stateless/stateful компоненты на чтение, на запись (с использованием оркестраторов, горизонтальное, вертикальное)
✅ partitioning vs sharding
Важно:
задавать правильные вопросы
не комититься на задачи, которые не нужно решать
помнить о времени
не начинать проектировать сразу
делиться своими размышлениями на собесе
проявлять самостоятельность и проактивность в проектировании
реагировать на наводящие вопросы и уточнения
в конце спросить и почему вы именно эту задачу спрашиваете?
⭐Systems to learn
for 10 euro here there are many of below systems designed LINK
instagram
✅tik tok
✅twitter (Twitter timeline and search) LINK
✅url shortener
✅uber LINK
✅доставка еды
✅whatsup
✅tinder Example
Pastebin.com LINK
web crawler LINK
Mint.com LINK
data structures for a social network LINK
key-value store for a search engine LINK
Amazon's sales ranking by category feature LINK
✅Dropbox LINK
Back of the envelope calculations (good example LINK)
A lot of links are taken from here
Great youtube channel Crushing Tech Education; Jordan has no life
Last updated
Was this helpful?