
Если в работе вы не проектируете сервис в раз неделю, ваш стек сильно ограничен, то навык рисовать и проектировать архитектуру будет западать. Что бы быть в тонусе — нужно его тренировать, либо готовиться. Я собрал небольшую заметку — как быстро привести себя в тонус, понять структуру и вспомнить базу.
Сервисы
Полезные видео
- Структура и советы — https://youtu.be/HRPcPNJ5zTg?si=VsphypLR_Sn8_ZcZ
- Мок собес https://youtu.be/qsEvKryZ5YA?si=5e0OH1lQwDatY8qJ
- Продвинутые советы https://youtu.be/RAMWRgt-3G0?si=O8rl7ZtlW-2CY3Yb
- Назаров про Системный дизайн https://youtu.be/PgC7LzIG29k?si=xGWmuVDM5v3lZF1a
- Твитер от Назарова https://youtu.be/ZCDFbrpk3WM?si=m2XsAy4kChBzb7Uy
- Кейс на тех руководителя проекта https://youtu.be/-nu4Bjufygw?si=u7hewBXRl_hiTq0b
Книги
- Алекс Сью — System Design. Подготовка к сложному интервью
- Высоконагруженные приложения. Программирование, масштабирование, поддержка — Мартин Клеппман (книга кабанчик)
Тайминги
- Сбор + нормализация требований — 10 мин
- Проверка гипотезы, а точно уже работает, провели ли АБ-тест
- Задача — собрать FR + NFR
- Возможные метрики
- Порядок нагрузки
- DAU/MAU — кол-во пользователей в день/месяц
- Кол-во действий в системе
- Трафик
- Порядок нагрузки
- Read/Write пути юзеров
- Считаем соотношение
- Таймауты и допустимость для действий
- Use-case
- Даунтаймы; Availability — 99.9
- Требования по ГЕО
- Доступность старых данных
- Подсветить возможные проблемы или особенности!
- Возможные метрики
- Приблизительная оценка нагрузки — 5 мин
- RPS — запросы в сек. R/W
- 86400 (сек в дне)
- Пик на x2 / x3
- Трафик — в байтах Gb/s
- Api — 200 мс в среднем
- Объем данных
- Кол-во данных в год/месяц
- RPS — запросы в сек. R/W
- Проектирование API — 5 мин
- Расписать API / crud
- Проектирование архитектуры + модели — 25 мин
- Начинаем с кубиков верхнеуровневых
- Прорабатываем слоями от общего к частному
- Happy path / Corner case / graceful degradation
- Кидаем сервисы кубики
- Расписываем внутри модели сущностей (в простой форме)
- Варианты диградации, отказоустойчивость + масштабируемость — 5 мин
- Расчет ресурсов для системы — 5 мин
Основные правила
- Нужно вести интервью. Действовать проактивно
- Делать свои гипотезы в спорных моментах
- Делать выбор
- Давать рассуждение
- Проговаривать детали и ограничения
Ошибки
- Неточный или медленный расчет на входе
- Нет самостоятельности
- Попытка делать все и сразу
- Проективовать слишком много всего, а не главное
- Не объяснять выбор
- Не конспектировать требования
- Не попадать в тайминг
- Зубрить решения
- Не реагировать на наводящие вопросы
- Варить давать, а не решение
- Страх спросить помощь, делать вид, что все знаешь
- Не уточнять
- Идеализировать
- Проектировать сразу, без подготовки
- Не размышлять вслух
База и основы
- Кеширование
- Балансировка и нагрузка
- Базы данных и очереди сообщений
- Репликация партиционирование шардирование
- Микросервисы
- Паттерны и подходы