5 основ системного проектирования для технических менеджеров по продуктам

5 основ системного проектирования для технических менеджеров по продуктам Изучение

Технические менеджеры по продуктам (TPM) в крупных технологических компаниях (FAANG) и стартапах должны обладать фундаментальными знаниями в области проектирования систем. Исторически сложилось так, что основы системного проектирования обычно требовали от инженеров-программистов во время собеседований, и TPM были освобождены от этого ожидания. Однако сейчас тенденция меняется. Как TPM, вы должны иметь четкое представление о системном дизайне на собеседованиях и на работе, когда вы руководите командой продукта.

В этой статье мы обсудим 5 наиболее распространенных основ системного проектирования, которые вы должны знать, чтобы преуспеть в своей роли в управлении техническими продуктами, руководя командой инженеров и выпуская отличные продукты.

Что такое системный дизайн и почему вас как TPM это должно волновать?

Проектирование системы — это процесс проектирования системы таким образом, чтобы были соблюдены все функциональные и нефункциональные требования, включая API, варианты использования и интеграции. Даже если вы не несете прямой ответственности за сложные детали этой архитектуры в качестве TPM, вы должны понимать общую картину и то, как различные системные компоненты поддерживают цели вашей организации и отвечают требованиям ваших продуктов.

Чтобы хорошо выполнять свою работу, TPM должны обладать фундаментальными знаниями в области проектирования систем. Фахим уль Хак, генеральный директор Educative, восемь лет работал над распределенными системами в компаниях FAANG. Он соглашается с тем, что он подробно брал интервью у TPM.

«TPM должен понимать все основные понятия о том, как работают масштабируемые системы и как различные части распределенной системы взаимодействуют друг с другом на абстрактном уровне, чтобы правильно направлять разработку. Им необходимо знать основные концепции и строительные блоки систем, которые они создают». — Фахим уль Хак (бывший системный инженер, генеральный директор Educative)

TPM должен знать основы проектирования систем, чтобы принимать обоснованные решения по проектированию своих продуктов. Например, если вы будете проектировать систему хранения фотографий Facebook, вам потребуется присвоить каждому изображению определенный идентификатор и создать систему для уникальной идентификации каждой загружаемой фотографии. Если вы знакомы с проектированием систем, то знаете, что для реализации этой функции вам понадобится генератор последовательностей.

Поэтому, будучи эффективным TPM, вы должны стремиться создавать гибкие, масштабируемые, надежные, ремонтопригодные и устойчивые системы, которые удовлетворяют требованиям пользователей в любой момент времени.

Далее мы рассмотрим пять основных концепций проектирования систем, которые абсолютно необходимы вам, TPM, для достижения успеха в вашей работе.

1. Балансировка нагрузки

Балансировка нагрузки является неотъемлемой частью жизненного цикла проектирования системы и относится к перераспределению задач между различными вычислительными серверами для повышения производительности и надежности системы.

С миллионами запросов в секунду балансировщики нагрузки будут равномерно распределять задачи между доступными ресурсами, чтобы обеспечить бесперебойную передачу трафика.

Преимущества балансировки нагрузки

  • Повышение эффективности. Балансировщики нагрузки равномерно распределяют нагрузку между различными серверами, что одновременно повышает эффективность и снижает затраты.
  • Доступность серверов : если один или несколько серверов выходят из строя, балансировщики нагрузки обходят их и обеспечивают доступность системы, распределяя трафик между исправно работающими серверами.
  • Масштабируемость : добавление большего количества серверов обеспечивает одновременное увеличение емкости приложений за счет балансировки нагрузки.

Зачем TPM знать балансировку нагрузки?

Как TPM, вы будете постоянно сталкиваться с ситуациями, когда ваши серверы необходимо масштабировать для удовлетворения потребностей пользователей или когда возникает всплеск трафика и сбои. В этом случае балансировщик нагрузки пригодится.

Читайте также:  NumPy np.identity ()

Кроме того, вы должны иметь возможность принимать решения, чтобы выбрать подходящий алгоритм балансировки нагрузки для вашей команды разработчиков в зависимости от цен, обязательств заинтересованных сторон и других переменных.

Балансировщик нагрузки поможет вашей системе улучшить масштабируемость, производительность, доступность и уменьшить избыточность, обеспечив возможность одновременного изменения мощности серверов, отказа от отказавших серверов вместо рабочих и равномерного распределения нагрузки на серверы.

Балансировщик нагрузки в действии
Балансировщик нагрузки в действии

2. Хранилище ключ-значение

Хранилище » ключ-значение» — это система хранения программного обеспечения, основанная на модели данных ассоциативного массива, такой как хэш-таблица или словарь, для присвоения каждому ключу уникального значения в коллекции. Значения могут быть любыми: уникальные идентификаторы, большие двоичные объекты или имена серверов.

Масштабирование традиционных систем хранения в распределенных средах может оказаться сложной задачей при сохранении надежной и стабильной доступности. Несколько ведущих технологических компаний, в том числе Facebook, Netflix и Amazon, больше полагаются на хранилища данных с первичным ключом, чем на традиционные базы данных онлайн-обработки транзакций (OLTP). По определению, OLTP — это быстрое выполнение в режиме реального времени огромных транзакций базы данных через Интернет.

Преимущества хранилища «ключ-значение»

  • Масштабируемость : они могут непрерывно обрабатывать все большие объемы данных без значительного снижения производительности.
  • Скорость : простые команды поиска и использования, такие как get, putи deleteобеспечивают эффективность.
  • Гибкость. Масштабирование любой крупной бизнес-модели упрощается благодаря сочетанию масштабируемости и скорости работы хранилищ ключей и значений.

Почему доверенный платформенный модуль должен знать о хранилище ключей и значений?

При разработке системы в качестве TPM вы должны учитывать, когда и где вам нужно использовать хранилище ключей и значений, и почему это может быть лучшим выбором в данный момент времени. Эта модель удобна для хранения данных персонализации клиентов благодаря масштабируемости, скорости и гибкости, которые она обеспечивает.

Например, вы можете повысить производительность обработки в своих системах, поскольку вы будете работать с наборами данных на нескольких компьютерах с большим объемом памяти, а также повысить отказоустойчивость. Такие компании, как Linkedin, Amazon и MongoDB, за последние пару лет использовали хранилища «ключ-значение» для значительного масштабирования.

Хранилище «ключ-значение» в действии

Хранилище «ключ-значение» в действии

3. Ограничители скорости

Ограничитель скорости гарантирует, что служба отвечает только на заданное количество запросов. Все, что выходит за предопределенные пределы, регулируется. Например, если API для службы настроен на обработку только 200 запросов в минуту, любые запросы, превышающие это значение, будут заблокированы.

Преимущества ограничителей скорости

  • Экономическая эффективность : они помогают контролировать эксплуатационные расходы, например, предотвращая превышение установленной квоты запросов к серверу в ходе экспериментов.
  • Предотвращение лишения ресурсов : несколько атак типа «отказ в обслуживании» (DoS), которые происходят из-за ошибок конфигурации программного обеспечения, предотвращаются с помощью ограничения скорости.
  • Распределение потока данных. Как и балансировщики нагрузки, ограничители скорости гарантируют, что системы не будут перегружены большим объемом данных, и помогают равномерно распределить нагрузку между различными серверами, когда это необходимо.

Почему TPM должен знать об ограничителях скорости?

Выполняя роль доверенного платформенного модуля, вы хотите убедиться, что ваши серверы работают оптимально, а базы данных не подвергаются риску из-за низкой производительности. Здесь можно применить соответствующий алгоритм ограничения скорости.

Читайте также:  10 распространенных уязвимостей безопасности веб-приложений и способы их предотвращения

Такие компании, как Lyft, используют ограничители скорости для эффективной работы своих процессов.

Ограничитель скорости в действии

Ограничитель скорости в действии

4. Сети доставки контента (CDN)

Сети доставки контента — это географически распределенные серверы, которые работают вместе для обеспечения быстрой и эффективной доставки контента через Интернет. CDN используют кэширование как механизм для ускорения доставки контента через Интернет.

Контент, обслуживаемый CDN, может быть нескольких типов, включая данные веб-сайтов, контент социальных сетей, загружаемые носители и т. д.

Несколько организаций используют CDN для ускорения доставки контента через Интернет. Например, банк может использовать CDN для безопасной передачи конфиденциальных данных.

Преимущества CDN

  • Повышение эффективности : CDN увеличивают время загрузки веб-страниц, одновременно снижая показатель отказов. Это удерживает пользователя на странице и не позволяет ему покинуть ее.
  • Улучшение безопасности. Смягчая распределенные атаки типа «отказ в обслуживании» (DDoS), CDN играют огромную роль в повышении безопасности.
  • Сокращение затрат на пропускную способность. Поскольку CDN в основном полагаются на кэширование и другие оптимизации, они могут значительно снизить пропускную способность сервера, снижая расходы на хостинг для администраторов и владельцев веб-сайтов.

Почему TPM должен знать о CDN?

Если ваша организация насыщена контентом, вам, как TPM, может быть полезно использовать CDN в некоторых случаях. Вы сможете сократить время и задержку загрузки данных, уменьшить избыточность, повысить безопасность и сократить расходы на полосу пропускания, тем самым сэкономив время и затраты для организации.

Контент распространяется по географически распределенной CDN

Контент распространяется по географически распределенной CDN

5. Базы данных

Традиционные файловые системы имеют много недостатков, поэтому часто предпочтение отдается базам данных. База данных — это совокупность данных, организованных таким образом, чтобы они были легко доступными, удобными в сопровождении, управляемыми и структурированными, чтобы их можно было эффективно обновлять и обрабатывать.

Базы данных бывают двух основных типов :

  • Реляционные базы данных — это коллекции наборов данных, организованных в несколько таблиц, столбцов и записей. Реляционные базы данных взаимодействуют друг с другом через таблицы базы данных. Язык структурированных запросов (SQL) используется для обработки и извлечения информации из этих баз данных с помощью таких команд, как insert, delete, updateи retrieve.
  • Нереляционные базы данных (NoSQL) обычно хранят неструктурированные данные в формате, отличном от реляционных баз данных. Базы данных NoSQL бывают нескольких типов, включая граф, ключ-значение, документ и широкий столбец.

Преимущества баз данных

  • Непротиворечивость данных: базы данных гарантируют, что избыточность данных будет устранена, а внесенные изменения немедленно отразятся в базе данных, следовательно, не будет несогласованности данных.
  • Целостность данных : Обеспечивая предоставление всем пользователям правильной и точной информации, поддерживается целостность данных.
    Безопасность данных : несколько функций безопасности, включая пароль и аутентификацию пользователя, помогают поддерживать безопасность данных в базах данных.

Почему TPM должен знать о базах данных?

Каждая организация работает с базами данных в эту цифровую эпоху, чтобы масштабировать свой бизнес и улучшать рабочие процессы и эффективность. Ваша роль в качестве TPM может часто требовать от вас также носить шляпу менеджера продукта данных. Здесь вам может потребоваться контролировать весь жизненный цикл распределения и использования данных в организации. Именно здесь вам помогут блестящие знания в области науки о данных и работы с базами данных.

Базы данных имеют несколько преимуществ в зависимости от выбранного вами типа, включая целостность данных, непротиворечивость данных, безопасность данных, постоянство данных и простоту доступа, среди прочего.

Оцените статью
bestprogrammer.ru
Добавить комментарий