Друкарня від WE.UA

System Design Interview part 0

У цій частині я коротко розповім про найважливіше, що треба знати перед проходженням інтерв’ю з системного дизайну.

1. Числа та терміни

Почнемо з основного які числа треба знати (̶о̶ ̶н̶і̶ ̶з̶н̶о̶в̶у̶ ̶м̶а̶т̶а̶н̶)̶

📏 Одиниці виміру даних

Назва

Скорочення

Формула

У байтах

Байт

B

1 B

Кілобайт

KB

1 KB = 1024 B

1,024 B

Мегабайт

MB

1 MB = 1024 KB

1,048,576 B

Гігабайт

GB

1 GB = 1024 MB

1,073,741,824 B

Терабайт

TB

1 TB = 1024 GB

1,099,511,627,776 B

⏱ Latency Numbers

Операція

Приблизна затримка

🧮 CPU L1 cache access

0.5 ns

🧮 CPU L2 cache access

7 ns

🧠 Main memory (RAM) access

100 ns

🔁 Mutex lock/unlock (в одному треді)

25 ns – 1 µs

📦 SSD I/O (NVMe, local)

10–100 µs

🧳 SSD I/O (SATA)

100–500 µs

💽 HDD I/O (seek)

~10 ms

🔌 Network: 1 Gbps (loopback)

~0.5 ms

🌐 Data center to same-region server (ping)

0.5–1 ms

🌍 Data center to another region (US–EU)

70–150 ms

✈️ Transcontinental RTT

~150–250 ms

☁️ Lambda cold start

~100 ms – few sec

⏱ Context switch (kernel ↔ user)

~1 µs – 5 µs

💬 Redis read (local network)

~1 ms

💾 DB query (simple SELECT, indexed)

~1–10 ms

📤 Kafka publish (no replication, async)

~1 ms

💡 Висновки:

  • Пам’ять — дуже швидка, диск — дуже повільний.

  • Уникай доступів до диска без потреби.

  • Стискай дані перед передачею.

  • Міжрегіональна передача — дорога по часу.

✅ Таблиця доступності (SLA)

SLA (доступність)

Дозволений час простою на рік

На місяць

На тиждень

На день

90.0% ("одна дев’ятка")

~36.5 днів

~72 год

~16.8 год

~2.4 год

99.0%

~3.65 днів

~7.2 год

~1.68 год

~14.4 хв

99.9% ("три дев’ятки")

~8.76 год

~43.8 хв

~10.1 хв

~1.44 хв

99.99% ("чотири дев’ятки")

~52.6 хв

~4.4 хв

~1 хв

~8.6 сек

99.999% ("п’ять дев’яток")

~5.26 хв

~26.3 сек

~6 сек

~0.86 сек

99.9999% ("шість дев’яток")

~31.5 сек

~2.6 сек

~0.6 сек

~0.086 сек

SLA до 99.0%

(до ~3.5 днів простою на рік)
Підійде для внутрішніх систем, MVP або некритичних сервісів.

  • Один інстанс сервісу

  • Проста БД без реплікації

  • Резервне копіювання (раз на добу або тиждень)

  • Мінімальний моніторинг (health-check)

SLA 99.9% (три дев’ятки)

(~9 год на рік простою)
Підходить для SaaS, мобільних застосунків, бізнес-критичних API.

  • Горизонтальне масштабування (щонайменше 2 інстанси)

  • Load Balancer (наприклад, NGINX, ALB)

  • Високодоступна БД: реплікація, автоматичне відновлення (RDS Multi-AZ, Mongo ReplicaSet)

  • Моніторинг та алертинг (Prometheus, Grafana, PagerDuty)

  • Zero-downtime деплой (blue/green, canary)

SLA 99.99% і вище

(<1 год простою на рік)
Вимагається у банківських, медичних системах, хмарних платформах, біржах.

  • Мультирегіональна розгорнута інфраструктура

  • Автоматичне виявлення збоїв + самовідновлення

  • Розподілені черги (Kafka, SQS) + ретраї

  • DB Failover + шардінг

  • Кешування для захисту від “thundering herd” (Redis, CDN)

  • Chaos Engineering: імітація відмов для тестування стійкості (Netflix's Simian Army)

  • Бізнес-логіка, що вміє "гречно падати" (graceful degradation)

  • SLO/SLA дашборди + регулярний аудит доступності

🔤 Популярні терміни

  • QPS — queries per second

  • DAU — daily active users

  • SLA — service level agreement

  • RPS — requests per second

2. Інструменти для малювання архітектури

Де б̶л̶*̶ть̶ малювати? 👀
  • Excalidraw — рекомендую. Простий, з готовими бібліотеками (System Design Components → Browse Libraries. Або просто пере ходиш за цим посиланням 🙂).

  • Draw.io

  • Miro

  • Figma

3. Етапи інтерв’ю

  1. 📋 Знайомство з задачею

  2. 🔍 Збір вимог (функціональні й нефункціональні)

  3. 🧱 Високорівневе проєктування

  4. 🔬 Занурення у складні компоненти

  5. 📑 Перевірка сценаріїв

  6. Q&A по схемі

  7. Фіналізація

Зазвичай інтерв’ювер дає якесь абстрактне завдання наприклад імплементуй твітер. Твоє завдання на цьому етапі це зібрати функціональні та нефункціональні вимоги.

Наприклад

Функціональні вимоги:

  1. Постити твіти

  2. Читати твіти

На цьому функціональні вимоги не закінчуються потрібно дізнатися скільки постів буде робити людина в день, яка кількість активних користувачів, який розмір твіта, як довго потрібно зберігати твіти?

Нефукціональні вимоги:

  1. Доступність або консистентність? Я думаю ти здогадався що в цьому випадку краще мати високу доступність а ніж консистентність. Нічого страшного якщо Іван отримає твіт через 5 хвилин а Сергій через 5 секунд.

  2. Продуктивність - яка має бути API latency?

  3. Масштабованість - скількох активних юзерів має підтримувати система?

  4. Надійність - тут можна запитати про репліку, підтримка failover короче наш SLA

Коли ти це все зібрав можна зробити оцінку та почати малювати схему.

4. Типові помилки на інтерв’ю

1. ⚠️ Зібрав вимоги — і забув про них

Кандидати часто задають правильні питання: про навантаження, обсяг даних, SLA. Але після цього — жодного використання зібраної інформації.

Наприклад: кандидат питає, скільки буде RPS на читання і на запис. Якщо відповідь: читання — 10k RPS, запис — 100 RPS, то логічно проєктувати окремі entry points, кешування на читання, пріоритетність ресурсів, можливо навіть відмовитися від синхронного запису. Якщо ж ці цифри не використовуються — питання було даремним.

Навіть запит типу: «Який час життя даних?» може дати багато: якщо дані можна видаляти через 30 днів — це знімає частину обов’язків зі зберігання. Якщо можна втрачати дані — можлива агресивніша оптимізація. Ігнорування таких відповідей призводить до архітектури, що не відповідає задачі.

2. 🤯 Намагання зробити все і одразу

Стрибки від теми до теми, надмірне говоріння, відсутність структури. Без чіткого плану кандидат "захлинається" в деталях. Тож дотримуйся структури інтерв’ю.

3. 🚀 Розширення меж системи без потреби

Іноді кандидат вирішує: "О, я знаю як зробити ще краще!" — і починає проектувати фічі, про які не йшлося у вимогах. Це розфокусовує. Краще зосередитися на вирішенні поточної задачі, а додаткові ідеї — записати в окремий список «на потім». Це дозволяє показати широту мислення без шкоди глибині рішення.

4. 🚫 2 RPS

Бізнес не завжди потребує гугл-архітектури. Часто — це MVP або модульний моноліт, що росте поступово. Якщо проектувати систему одразу як "мільярдний" продукт — це показує нерозуміння еволюційної природи систем.

5. 🤔 Цитування книжок без розуміння

Фрази типу: "використаємо консистентне хешування" — але без здатності пояснити, як воно працює. Оперуй знаннями якими володієш.

6. ❌ Втрата даних між системами

Якщо сервіси спілкуються напряму або черги додані без гарантій — є ризик втратити події. Варто одразу продумати ідентіфікатори, ідемпотентність, логування, підтвердження доставки.

7. 📃 Довгострокове зберігання

Через роки система буде містити архіви, логи, старі записи. Без плану архівації, розділення гарячих/холодних даних — система перестане масштабуватись. Шардування, cold storage, lifecycle policy — необхідні речі.

8. 📁 База даних — для всього

PostgreSQL не має зберігати зображення, обробляти повнотекстовий пошук і ще бути основною OLTP системою. Кожен інструмент має своє призначення. Наприклад: зображення краще зберігати через CDN (S3 + CloudFront), для пошуку використати Elasticsearch або OpenSearch, для черг — Kafka або RabbitMQ. Не зловживати універсальністю — обирайте інструмент за потребою.

9. ⚖️ Абстрактні компоненти

Система наче складається з "сервісів", але де вони будуть запущені? У хмарі? У Kubernetes? Bare metal? Який CI/CD, як деплоїти, які залежності? Інтерв'юер хоче бачити реалізовувану архітектуру.

10. ❗️Тільки технічний моніторинг

Моніторити CPU — це добре. Але користувачу байдуже. Треба бачити кількість твіти, які не дійшли, або час реакції на натискання кнопки. Важливі метрики — продуктові.

11. 🔢 Рішення у лоб

"Так, тут Redis, тут Kafka, тут Postgres, і все працює" — ок. А чому Redis, а не Memcached? Чому Kafka, а не SQS? Відсутність порівнянь і trade-offs — це мінус. Очікується аналітичне мислення, оцінка варіантів.

Підписуйся на мене і ми разом пройдемо еволюцію від цього:

До цього:

Мені було ліньки малювати щось більше :) в наступних статтях намалюю краще

Хочеш мене підтримати підписуйся на мій патреон:

Список джерел
  1. Alex Xu, System Design

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Сергій Барабаш
Сергій Барабаш@sbarabash

669Прочитань
1Автори
12Читачі
На Друкарні з 30 березня

Більше від автора

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: