Обсуждаем проектирование системы. Во время секции предложим Вам разработать дизайн системы по набору требований.
Вам будет предложен набор функциональных требований к системе. В течение часа Вам предстоит формализовать задачу, спроектировать 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" - про подходы к эксплуатации систем и обеспечению их надежности