Skip to content

Latest commit

 

History

History
38 lines (27 loc) · 5.68 KB

system-design-backend.md

File metadata and controls

38 lines (27 loc) · 5.68 KB

Секция системного дизайна в Тинькофф

Обсуждаем проектирование системы. Во время секции предложим Вам разработать дизайн системы по набору требований.

Как проходит секция

Вам будет предложен набор функциональных требований к системе. В течение часа Вам предстоит формализовать задачу, спроектировать API системы, оценить нагрузку и необходимые мощности, спроектировать модели и потоки данных.

Для визуализации процесса проектирования вам предоставят ссылку на онлайн-доску, такую как Miro, Sketchboard, Excalidraw.

Один из наших сотрудников выступил на конференции ArchDays 2021 с докладом "Дизайн секции как проверка навыков проектирования систем на собеседованиях", в котором он подробно рассказал про то, как выглядит интервью по дизайну систем, что на нем оценивается и зачем все это надо. Расшифровка выступления доступна в статье на Medium.

Материалы для подготовки

Сайты:

  • System Design Primer — базовые темы и упражнения по дизайну систем, а также упражнения по объектно-ориентированному анализу и проектированию.

  • Architectural Katas — множество примеров архитектурных задач.

  • System Design Interview и как они оцениваются - описание ожиданий от кандидатов на разные уровни проектирования, шаблон задачи и материалы для самобучения

  • Публичное System Design Interview на конференции C++ Russia 2022 - интервью по системному дизайну на проектирование Youtube. Это открытое собеседование похоже на то, как мы проводим свои собеседования кандидатов

  • Публичное System Design Interview на конференции ArchDays 2022 - интервью по системному дизайну на проектирование системы бронирования номеров в отелях. Это открытое собеседование похоже на то, как мы проводим свои собеседования кандидатов

  • Как подготовиться и пройти System Design Interview - описание фреймворка прохождения System Design Interview, ожиданий на каждом шаге, от сбора требований до масштабирования под нагрузку. И самое приятное - материалы для самообучения для каждого из шагов в рамках этого фреймворка

Книги:

  • Wiegers "Software Requirements. Third Edition" - про требования к ПО
  • Eyskens "Software Architecture for Busy Developers" - про trade-offs в архитектуре
  • Tannenbaum "Computer Networks" - про компьютерные сети и как система связана с пользователям, а ее компоненты между собой
  • Tannenbaum "Distributed Systems" - классика по распределенным системам и тому, зачем они нужны и как с ними быть
  • Hohpe "Enterprise Integration Patterns" - классика про подходы к интеграции приложений между собой
  • Kleppmann "Designing Data-Intensive Applications" - классика про приложения, интенсивно работающие с данными
  • Khononov ""Learning DDD"" - про подход к пониманию того, а что ПО собственно делает и как разделить зоны ответственности
  • Petrov "Database Internals" - про то, как работают базы данных
  • Ibryam "K8s Patterns" - про орекстрацию рабочих нагрузок (преимущественно stateless)
  • Google "Building secure and reliable systems" - про то, как проектировать надежные и безопасные системы и дальше с ними жить долго и счастливо
  • Google "SRE Book" - про подходы к эксплуатации систем и обеспечению их надежности
  • Google "SRE Workbook" - про подходы к эксплуатации систем и обеспечению их надежности