# Секция системного дизайна в Тинькофф Обсуждаем проектирование системы. Во время секции предложим Вам разработать дизайн системы по набору требований. ## Как проходит секция Вам будет предложен набор функциональных требований к системе. В течение часа Вам предстоит формализовать задачу, спроектировать API системы, оценить нагрузку и необходимые мощности, спроектировать модели и потоки данных. Для визуализации процесса проектирования используется онлайн-доска [Sketchboard](https://sketchboard.io). Для упрощения работы с обширной палитрой данного инструмента в ходе секции рекомендуется пользоваться только элементами раздела Software Sketching. Один из наших сотрудников [выступил](https://www.youtube.com/watch?v=Cth-B4r_pf4) на конференции ArchDays 2021 с докладом "Дизайн секции как проверка навыков проектирования систем на собеседованиях", в котором он подробно рассказал про то, как выглядит интервью по дизайну систем, что на нем оценивается и зачем все это надо. Расшифровка выступления доступна в [статье](https://apolomodov.medium.com/system-design-interview-at-tinkoff-7bd97c20d082) на Medium. ## Материалы для подготовки ### Сайты: - [System Design Primer](https://github.com/donnemartin/system-design-primer) — базовые темы и упражнения по дизайну систем, а также упражнения по объектно-ориентированному анализу и проектированию. - [Architectural Katas](http://nealford.com/katas/) — множество примеров архитектурных задач. - [System Design Interview и как они оцениваются](https://apolomodov.medium.com/preparation-for-system-design-interview-66489d7a0af6) - описание ожиданий от кандидатов на разные уровни проектирования, шаблон задачи и материалы для самобучения - [Публичное System Design Interview на конференции C++ Russia 2022](https://apolomodov.medium.com/example-of-system-design-interview-7790a5569207) - интервью по системному дизайну на проектирование Youtube. Это открытое собеседование похоже на то, как мы проводим свои собеседования кандидатов - [Публичное System Design Interview на конференции ArchDays 2022](https://apolomodov.medium.com/public-system-design-interview-at-archdays-2022-2a7ea02175af) - интервью по системному дизайну на проектирование системы бронирования номеров в отелях. Это открытое собеседование похоже на то, как мы проводим свои собеседования кандидатов - [Как подготовиться и пройти System Design Interview](https://apolomodov.medium.com/how-to-prepare-for-and-pass-the-system-design-interview-78b820589e8) - описание фреймворка прохождения 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" - про подходы к эксплуатации систем и обеспечению их надежности