Кратко
Паттерны
Самые распространенные паттерны для интервью по System Design
Используя технологии и основные понятия, которые мы уже обсудили, и комбинируя их, вы можете построить самые разные системы. Но интервью ограничено по времени и успех в нем во многом зависит от вашего умения быстро распознавать и применять паттерны проектирования. Если вы хорошо знаете паттерны, вы не только опираетесь на лучшие практики, но и экономите время, не изобретая велосипед.
Способность выявлять и применять паттерны - это навык, который часто отличает Senior кандидатов от Middle кандидатов на собеседовании по System Design. Паттерны позволяют вам определить, что может быть интересно на интервью и на обсуждении чего стоит сфокусироваться.
Подробное погружение в блокировки, транзакции и техники распределенной координации можно найти в разборе паттерна Управление конкуренцией.
Масштабирование чтения
Когда приложение растет до миллионов пользователей, первым узким местом часто становится чтение. Запись создает данные, а чтение их использует - и трафик чтения обычно растет значительно быстрее, чем трафик записи. Паттерн масштабирования чтения решает проблему большого числа запросов через оптимизацию базы данных, горизонтальное масштабирование и разумное кэширование.
В большинстве приложений соотношение чтений к записям начинается с 10:1, но часто достигает 100:1 и выше. Например, в Россграм при открытии приложения вы видите десятки фото, что требует сотен запросов в базу данных за метаданными, данными пользователей и реакциями. При этом вы, возможно, публикуете пост раз в день - то есть одна запись.
Решение должно следовать естественной траектории: сначала оптимизируйте чтение внутри базы данных через индексы и денормализацию, затем масштабируйте чтение горизонтально с помощью read‑реплик, а потом добавляйте внешние кэши вроде Redis и CDN.
Ключевые нюансы включают инвалидацию кэша, запаздывание данных в read‑репликах и проблему горячих ключей, когда миллионы пользователей одновременно запрашивают один и тот же популярный контент.