Технические менеджеры продуктов (ТМП) в крупных технологических компаниях (FAANG) и стартапах обязаны обладать фундаментальными знаниями в области системного проектирования. Исторически сложилось так, что основы системного дизайна обычно требовались для инженеров-программистов во время собеседования, а ТПМ были освобождены от этого требования. Однако сейчас тенденция меняется. Как TPM, вы должны хорошо разбираться в системном дизайне на собеседованиях и в процессе работы, когда вы руководите командой разработчиков.
В этой статье мы обсудим 5 наиболее распространенных основ системного проектирования, которые вы должны знать, чтобы преуспеть в роли технического менеджера продукта, возглавляя команду инженеров и выпуская отличные продукты.
Мы рассмотрим:
- Что такое системный дизайн, и почему он должен быть вам важен как TPM?
- 1. Балансировка нагрузки
- 2. Хранилища ключей и значений
- 3. Ограничители скорости
- 4. Сети доставки контента (CDN)
- 5. Базы данных
- Куда двигаться дальше в области системного дизайна
- Что такое системный дизайн, и почему это должно волновать вас как TPM?
- 1. Балансировка нагрузки
- Преимущества балансировки нагрузки
- Почему TPM должен знать о балансировке нагрузки?
- 2. Хранилище ключей-значений
- Преимущества хранилищ данных типа «ключ-значение
- Почему TPM должен знать о хранилищах ключевых значений?
- 3. Ограничители скорости
- Преимущества ограничителей скорости
- Почему TPM должен знать об ограничителях скорости?
- 4. Сети доставки контента (CDN)
- Преимущества CDN
- Почему TPM должен знать о CDN?
- 5. Базы данных
- Преимущества баз данных
- Почему TPM должен знать о базах данных?
- Куда двигаться дальше в Системном проектировании
- Продолжить изучение системного проектирования на сайте Educative
- Начать обсуждение
Что такое системный дизайн, и почему это должно волновать вас как TPM?
Проектирование системы — это процесс создания архитектуры системы таким образом, чтобы были выполнены все функциональные и нефункциональные требования, включая API, сценарии использования и интеграции. Даже если вы не отвечаете непосредственно за сложные детали этой архитектуры в качестве TPM, вы должны понимать общую картину, как различные компоненты системы поддерживают цели вашей организации и отвечают требованиям ваших продуктов.
Чтобы хорошо выполнять свою работу, TPM должны обладать фундаментальными знаниями в области системного проектирования.
Фахим уль Хак, генеральный директор компании Educative, восемь лет работал над распределенными системами в компаниях FAANG. Проведя большое количество интервью с TPM, он согласен с этим.
«TPM должен понимать все основные концепции того, как работают масштабируемые системы и как различные части распределенной системы взаимодействуют друг с другом на абстрактном уровне, чтобы правильно направлять разработку. Они должны знать основные концепции и строительные блоки систем, которые они создают». — Фахим уль Хак (бывший системный инженер, генеральный директор компании Educative)
TPM должен знать основы системного проектирования, чтобы принимать обоснованные проектные решения для своих продуктов. Например, если бы вы разрабатывали систему хранения фотографий для Facebook, вам нужно было бы присвоить каждому изображению определенный идентификатор и иметь систему, позволяющую однозначно идентифицировать каждую загруженную фотографию. Если вы знаете системный дизайн, то вам известно, что для выполнения этой функции вам понадобится генератор последовательности.
Поэтому, как эффективный TPM, вы должны стремиться к созданию гибких, масштабируемых, надежных, обслуживаемых и прочных систем, которые отвечают требованиям пользователей в любой момент времени.
Далее мы рассмотрим пять фундаментальных концепций проектирования систем, которые являются абсолютной необходимостью для того, чтобы вы, TPM, преуспели в своей работе.
1. Балансировка нагрузки
Балансировка нагрузки является неотъемлемой частью жизненного цикла проектирования системы и означает перераспределение задач между различными вычислительными серверами для повышения производительности и надежности системы.
При миллионах запросов в секунду балансировщики нагрузки равномерно распределяют задачи между доступными ресурсами, чтобы обеспечить бесперебойное прохождение трафика.
Преимущества балансировки нагрузки
- Повышение эффективности: Балансировщики нагрузки равномерно распределяют трафик нагрузки между различными серверами, тем самым повышая эффективность и сокращая расходы одновременно.
- Доступность серверов: Если один или несколько серверов выходят из строя, балансировщики нагрузки обходят их и обеспечивают доступность системы, распределяя трафик между исправно работающими серверами.
- Масштабируемость: Добавление дополнительных серверов обеспечивает одновременное увеличение пропускной способности приложений за счет балансировки нагрузки.
Почему TPM должен знать о балансировке нагрузки?
Как TPM, вы постоянно будете сталкиваться с ситуациями, когда ваши серверы необходимо масштабировать, чтобы удовлетворить спрос пользователей, или когда происходит всплеск трафика и сбой. В этом случае вам пригодится балансировщик нагрузки.
Кроме того, вы должны обладать способностью принимать решения, чтобы выбрать подходящий алгоритм балансировщика нагрузки для вашей команды разработчиков в зависимости от цены, приверженности заинтересованных сторон и других переменных.
Балансировщик нагрузки поможет вашей системе улучшить масштабируемость, производительность, доступность и сократить избыточность. Обеспечивая возможность одновременного изменения мощности серверов, отказавшие серверы обходят стороной, отдавая предпочтение работающим, а нагрузка на серверы распределяется равномерно.
2. Хранилище ключей-значений
Хранилище ключ-значение — это программная система хранения данных, которая основана на модели данных ассоциативного массива, такой как хэш-таблица или словарь, для присвоения каждому ключу уникального значения в коллекции. Значения могут быть любыми — от уникальных идентификаторов, блобов или имен серверов.
Масштабирование традиционных систем хранения данных в распределенных средах при сохранении высокой и стабильной доступности может оказаться сложной задачей. Некоторые ведущие технологические компании, включая Facebook, Netflix и Amazon, больше полагаются на хранилища данных с первичным доступом к ключу, чем на традиционные базы данных для обработки транзакций в режиме онлайн (OLTP). По определению, OLTP — это быстрое выполнение огромных транзакций баз данных в режиме реального времени через Интернет.
Преимущества хранилищ данных типа «ключ-значение
- Масштабируемость: Они могут непрерывно обрабатывать все большие объемы данных без существенного снижения производительности.
- Скорость: простые команды поиска и использования данных, такие как
get
,put
иdelete
, обеспечивают эффективность. - Гибкость: Масштабирование любой крупной бизнес-модели становится проще благодаря сочетанию масштабируемости и скорости, которые обеспечивают хранилища ключевых значений.
Почему TPM должен знать о хранилищах ключевых значений?
При разработке системы в качестве TPM вы должны рассмотреть, когда и где вам нужно использовать хранилище ключевых значений и почему оно может быть лучшим выбором в данный момент. Эта модель выгодна для хранения данных персонализации клиентов благодаря масштабируемости, скорости и гибкости, которые ей сопутствуют.
Например, вы можете повысить производительность обработки данных в своих системах, поскольку будете работать с наборами данных на нескольких компьютерах с большим объемом памяти, а также повысить отказоустойчивость. Такие компании, как LinkedIn, Amazon и MongoDB, использовали хранилища ключевых значений для значительного масштабирования за последние пару лет.
3. Ограничители скорости
Ограничитель скорости гарантирует, что сервис отвечает только на определенное количество запросов. Все, что превышает установленные пределы, дросселируется. Например, если API сервиса настроен на обработку только 200 запросов в минуту, любые запросы сверх этого будут блокироваться.
Преимущества ограничителей скорости
- Экономическая эффективность: Они помогают контролировать операционные расходы, например, предотвращая превышение установленной квоты запросов к серверу.
- Предотвращение лишения ресурсов: Некоторые атаки типа «отказ в обслуживании» (DoS), которые происходят из-за ошибок в конфигурации программного обеспечения, предотвращаются с помощью ограничения скорости.
- Распределение потока данных: Подобно балансировщикам нагрузки, ограничители скорости гарантируют, что системы не будут перегружены большим объемом данных, и помогают равномерно распределить нагрузку между различными серверами, когда это необходимо.
Почему TPM должен знать об ограничителях скорости?
В роли TPM вы хотите убедиться, что ваши серверы работают оптимально, а базы данных не подвергаются опасности из-за низкой производительности. Именно здесь может быть применен соответствующий алгоритм ограничения скорости.
Такие компании, как Lyft, используют ограничители скорости для эффективного выполнения своих процессов.
4. Сети доставки контента (CDN)
Сети доставки контента — это географически распределенные серверы, которые работают вместе для обеспечения быстрой и эффективной доставки контента через Интернет. CDN используют кэширование как механизм ускорения доставки контента через Интернет.
Контент, обслуживаемый CDN, может быть нескольких типов, включая данные веб-сайта, содержимое социальных сетей, загружаемые медиафайлы и так далее.
Несколько организаций используют CDN для ускорения доставки контента через Интернет. Например, банк может использовать CDN для безопасной передачи конфиденциальных данных.
Преимущества CDN
- Повышение эффективности: CDN увеличивают время загрузки веб-страниц и одновременно снижают количество отказов. Это удерживает пользователя на странице и не позволяет ему покинуть ее.
- Повышение безопасности: Смягчая распределенные атаки типа «отказ в обслуживании» (DDoS), CDN играют огромную роль в повышении безопасности.
- Сокращение расходов на пропускную способность: Поскольку CDN в основном полагаются на кэширование и другие оптимизации, они могут значительно сократить пропускную способность сервера, снижая расходы на хостинг для администраторов и владельцев веб-сайтов.
Почему TPM должен знать о CDN?
Если в вашей организации много контента, вы, как TPM, можете найти CDN полезным для использования в некоторых случаях. Вы сможете сократить время загрузки данных и задержку, уменьшить избыточность, повысить безопасность и сократить расходы на пропускную способность, а значит, сэкономить время и расходы организации.
5. Базы данных
Традиционные файловые системы имеют множество недостатков, поэтому предпочтение часто отдается базам данных. База данных — это набор данных, организованных таким образом, чтобы они были легко доступны, поддерживаемы, управляемы и структурированы таким образом, чтобы их можно было обновлять и эффективно обрабатывать.
Базы данных бывают двух основных типов:
-
Реляционные базы данных — это совокупность наборов данных, организованных в несколько таблиц, столбцов и записей. Реляционные базы данных взаимодействуют друг с другом через таблицы базы данных. Язык структурированных запросов (SQL) используется для манипулирования и получения информации из этих баз данных с помощью таких команд, как
insert
,delete
,update
иretrieve
. -
Нереляционные базы данных (NoSQL) обычно хранят неструктурированные данные в формате, отличном от реляционных баз данных. Базы данных NoSQL имеют несколько типов, включая граф, ключ-значение, документ и широкий столбец.
Преимущества баз данных
- Согласованность данных: Базы данных обеспечивают устранение избыточности данных, а внесенные изменения немедленно отражаются в базе данных, что исключает несогласованность данных.
- Целостность данных: Благодаря тому, что всем пользователям предоставляется правильная и точная информация, обеспечивается целостность данных.
- Безопасность данных: Несколько функций безопасности, включая аутентификацию паролей и пользователей, помогают поддерживать безопасность данных в базах данных.
Почему TPM должен знать о базах данных?
В нашу цифровую эпоху каждая организация работает с базами данных, чтобы масштабировать свой бизнес и улучшить рабочие процессы и эффективность. Ваша роль в качестве TPM часто может потребовать от вас носить шляпу менеджера по продуктам данных. Здесь от вас может потребоваться контролировать весь жизненный цикл распространения и использования данных в организации. Именно здесь вам поможет сильная подготовка в области науки о данных и работы с базами данных.
Базы данных имеют ряд преимуществ в зависимости от выбранного вами типа, включая целостность данных, согласованность данных, безопасность данных, сохранение данных, простоту доступа и др.
Вы можете узнать больше о базах данных как строительном блоке в System Design из этого учебника по проектированию баз данных.
Куда двигаться дальше в Системном проектировании
Вам было интересно узнать об основах системного проектирования? Если вы только задумываетесь о начале карьеры в области управления техническими продуктами или уже работаете в этой сфере, мы надеемся, что эта статья помогла вам сориентироваться в сложностях системного проектирования при создании масштабируемых программных продуктов.
Но мы лишь поверхностно коснулись этой темы. Другие основы системного проектирования, не рассмотренные в этой статье, но абсолютно необходимые вам как TPM для изучения и освоения, включают:
- Системы доменных имен (DNS)
- Секвенсоры
- Распределенное кэширование
- Системы публикации-подписки
- Sharded Counters
- Распределенные очереди обмена сообщениями
- Распределенное планирование задач
- Распределенное протоколирование
Чтобы помочь вам глубже освоить основы системного проектирования с помощью строительных блоков, не забудьте ознакомиться с полностью практическим курсом Grokking Modern System Design for Software Engineers & Managers компании Educative, в котором дается всесторонний обзор системного проектирования.
Успешного обучения!
Продолжить изучение системного проектирования на сайте Educative
-
Как подготовиться к собеседованию по системному дизайну в 2022 году
-
Основы системного проектирования: Что такое теорема CAP?
-
Как машинное обучение дает вам преимущество в системном проектировании
Начать обсуждение
Какие еще основы системного проектирования необходимо знать специалисту по TPM? Была ли эта статья полезной? Сообщите нам об этом в комментариях ниже!