Найти в Дзене
Материалы по System Design
список может и будет пополняться Книги Designing Data-Intensive Applications. 2nd edition (2026) by Martin Kleppmann, Chris Riccomini Designing Data-Intensive Applications (2017) by Martin Kleppmann System Design Interview - An insider's guide (2020) by Alex Xu Database Internals (2019) by Alex Petrov Fundamentals of Software Architecture (2020) by Mark Richards, Neal Ford Fundamentals of Software Architecture. 2nd Edition (2025) by Mark Richards, Neal Ford Software Architecture: The Hard Parts (2021) by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani Head First Software Architecture...
3 недели назад
Экспресс-метод подготовки к System Design Interview
Мой первый опыт прохождения собеседования по проектированию систем в виде отдельной секции был неожиданным. Я к нему заранее не готовился, потому что претендовал на позицию middle/middle+ разработчика. Но по результатам пройденных секций мне сказали, что хотят посмотреть мои способности проектирования. А так как на позицию архитектора я не претендовал, решил особо не готовиться и взял только два выходных дня на подготовку. Собеседование я прошел успешно. Ниже полный план подготовки «с нуля» за 2 дня до уровня, достаточного senior-разработчику. День первый Читаем книгу Alex Xu “System Design Interview – An insider's guide” Читаем на любом языке, который вы понимаете...
3 месяца назад
Что проверяют на классическом System Design Interview (часть 2
Что проверяют на классическом System Design Interview (часть 2) ⸻ Понимание масштабирования и устойчивости Здесь начинаются hard skills. Интервьюер проверяет понимание кандидатом слабых мест системы, как она поведёт себя под нагрузкой. Кандидат должен знать, какие проблемы решают основные инструменты — горизонтальное и вертикальное масштабирование, кэширование, очереди, партиционирование, репликация, балансировка, ограничители запросов, ретраи, фолбэки. Не обязательно знать все нюансы каждой технологии, нужно понимать принципы. Умение находить компромиссы (trade-offs) Любой элемент архитектуры...
5 месяцев назад
Что проверяют на классическом System Design Interview (часть 1
Что проверяют на классическом System Design Interview (часть 1) Я разделяю критерии на 2 основных блока. Первый — это критерии, которые покрываются так называемым фреймворком System Design Interview, самим форматом и стандартом проведения собеседования, про них нужно просто не забыть. Второй блок — это непосредственно проверка качеств кандидата по soft и hard навыкам. ⸻ Структурность мышления Вы не должны начинать решение с перечисления технологий, которые у всех на слуху. И не должны сразу начинать составлять диаграмму компонентов. От вас при решении инженерной задачи ожидается последовательный...
6 месяцев назад
Что проверяют на классическом System Design Interview
Что проверяют на классическом System Design Interview На всякий случай уточню, что ниже приведено моё мнение, основанное на личном опыте прохождения и проведения собеседований по проектированию систем и на информации, почерпнутой из книг и статей. Я разделяю критерии на 2 основных блока. Первый — это критерии, которые покрываются так называемым фреймворком System Design Interview, самим форматом и стандартом проведения собеседования, про них нужно просто не забыть. Второй блок — это непосредственно проверка качеств кандидата по soft и hard навыкам. ⸻ Структурность мышления Вы не должны начинать решение с перечисления технологий, которые у всех на слуху...
6 месяцев назад
Дисклеймер
Дисклеймер Все публикации в данном блоге являются исключительно моими личными материалами, основанными на открытых источниках и на моём собственном опыте, анализе и выводах. Они не содержат и не могут содержать конфиденциальной, коммерческой или внутренней информации работодателя, клиентов, партнёров или любых иных организаций, с которыми у меня есть или были договорные либо иные юридические отношения. Любые компании и организации, с которыми я связан, прямо или косвенно, не...
7 месяцев назад
System Design Interview: Начало
System Design Interview: Начало На собеседованиях по проектированию систем проверяют, насколько хорошо вы ориентируетесь в современном ландшафте высоконагруженных систем — балансировщики, очереди, SQL- и NoSQL-базы данных, реплицирование и шардирование — и ваши способности работать с требованиями, реагировать на изменение требований, умение отсечь лишние детали. Или — как вы заучили стандартные шаблоны задач для таких собеседований… В каком-то смысле эти собеседования пришли на смену Object-Oriented Design собеседованиям. System Design собеседования более универсальны, а ещё их проводят в Google — так они и стали популярны...
7 месяцев назад
Выберите 1-2 темы
Опрос
8 месяцев назад
Выбирай сердцем
Выбирай сердцем Давно хочу написать серии постов по нескольким темам, рассказать про свой опыт. Весь этот опыт я получил примерно 2 года назад, когда последний раз готовился к смене работы. Выберите, пожалуйста, наиболее интересные вам темы. Самая залайканная тема попадет в посты в первую очередь. Голосование завершено, спасибо всем...
8 месяцев назад
Про верхние перцентили
Про верхние перцентили Или процентили, это то же самое — percentiles. Или квантили. 99 перцентиль — это 0.99 квантиль. При мониторинге систем количество ошибок или время выполнения запросов обычно рассчитывают в перцентилях. Например, время отклика для p95 равное 1с означает, что 95% запросов выполняются быстрее чем за 1с, а 5% выполняются за 1с или дольше. Насколько угодно дольше. Возможно ваша система устроена так, что пользователь с бо‌льшим количеством данных получает бо‌льшую задержку. И вероятно, что этот пользователь приносит и бо‌льшие деньги. Например, ему в премиум тарифе доступен большой объем хранящейся информации...
8 месяцев назад
Как ещё можно передать версию API
Как ещё можно передать версию API Конечно чаще всего используется префикс вида v1 в URL. Но вот вам ещё пара способов для расширения кругозора. HTTP-заголовок Клиент передает версию API, по которой хочет выполнить обмен, в HTTP-заголовке Accept: или другом подобном. Такой способ встречается в GitHub API v3 и в Stripe: Accept: application/vnd.github.v3+json Stripe-Version: <date> Хранение версии API на стороне сервера Если клиент при запросах авторизуется...
9 месяцев назад
Что такое версия API
Что такое версия API Это прям база-база. Наверняка когда вы в первый раз увидели URL вида /api/v1/item/{id}, вы задумались "что такое v1?" Даже в базовых уроках по разработке API зачастую рекомендуют при указании URL сразу добавить в него версию v1. Версия API напрямую связана с совместимость клиента и сервера при RESTful взаимодействии. Вы можете без проблем развивать свой API, пока ваши изменения обратно совместимы по запросам от клиентов к серверу и прямо совместимы по ответам сервера клиенту (см. предыдущий пост). Но когда бизнес-требования невозможно выполнить без потери совместимости — интеграция сломается без обновления всех клиентов...
9 месяцев назад