Привет 👋 там!

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

Если у вас есть какие-либо отзывы или вы хотите начать обсуждение, не стесняйтесь написать мне в моем Твиттере @_imnaren или в LinkedIn. Я всегда готов поболтать.

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

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

Некоторые из важных аспектов, которые следует учитывать при анализе любой постановки задачи, включают:

  • Заинтересованные стороны. Определите заинтересованные стороны, на которых будет влиять система, например конечные пользователи, администраторы, менеджеры и другие соответствующие стороны. Понимание потребностей и ожиданий заинтересованных сторон имеет важное значение для разработки системы, отвечающей их требованиям. Например, в приложении для обмена поездками конечные пользователи ожидают простой и удобный интерфейс, тогда как администраторам нужны данные в режиме реального времени о действиях водителей и пассажиров.
  • Задержка. Задержка — это время, необходимое пакету данных для перемещения от источника к месту назначения. Знание необходимой задержки для вашей системы имеет решающее значение для принятия проектных решений. В некоторых системах более низкая задержка не подлежит обсуждению, например, в онлайн-службе потоковой передачи, где любая задержка видео или аудио может привести к ухудшению работы пользователя. Напротив, система, которая обрабатывает данные, не зависящие от времени, например система пакетной обработки, может допускать более высокую задержку.
  • Пропускная способность. Под пропускной способностью понимается скорость, с которой данные передаются по каналу связи или обрабатываются вычислительной системой. В приложении для передачи файлов желательна высокая пропускная способность, поскольку она позволяет быстро передавать файлы. В приложениях для видеоконференций требуется высокая пропускная способность для передачи видео- и аудиоданных в режиме реального времени без задержек и прерываний. Однако приложениям, которые включают передачу текстовых данных, таких как электронная почта, приложения для обмена мгновенными сообщениями и чаты, не обязательно требуется высокая пропускная способность.
  • Доступность. Доступность — это способность системы непрерывно функционировать в течение желательно длительного периода времени. Высокая доступность измеряется в процентах, где 100 % означает, что служба имеет 0 простоев. Большинство услуг находятся между 99% и 100%. некоторые системы должны быть доступны 24x7x365, некоторые могут быть доступны только в рабочее время? Например, для платформы заказов для биржевого брокера было бы пустой тратой ресурсов поддерживать ее работу в нерабочее время, в то время как служба заказа в электронной коммерции должна быть доступна все время.

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

Например, в системе здравоохранения соблюдение правил HIPAA имеет решающее значение. Любая система, которая обрабатывает защищенную медицинскую информацию (PHI), должна обеспечивать конфиденциальность, целостность и доступность PHI. Это требование существенно влияет на конструкцию системы и может привести к дополнительным мерам безопасности, таким как шифрование и контроль доступа.

Этот анализ поможет вам оценить требования к емкости или производительности системы, а также спрогнозировать затраты и бюджетные требования.

Давайте рассмотрим пример из реальной жизни:

Розничная компания хочет создать систему обработки данных для анализа данных о своих клиентах и ​​получения информации для улучшения своих стратегий продаж и маркетинга. Система должна быть в состоянии обрабатывать 1 миллион записей о клиентах в день и предоставлять информацию практически в режиме реального времени.

Заинтересованные стороны:

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

Задержка:

Поскольку ожидается, что система будет предоставлять информацию почти в реальном времени, требования к задержке являются критическими.

Давайте предположим, что компания хочет, чтобы информация генерировалась в течение 5 секунд после обработки записи о клиенте. Это означает, что система должна быть способна обрабатывать 200 000 записей в секунду (1 миллион записей/5 секунд).

Пропускная способность:

В дополнение к требованиям к задержке система также должна быть способна обрабатывать 1 миллион записей о клиентах в день. Это означает, что система должна обрабатывать 11,6 записей клиентов в секунду (1 миллион записей / 86 400 секунд в день).

Доступность:

Поскольку розничная компания работает в режиме 24x7x365, система обработки данных также должна быть доступна в любое время. Это означает, что система должна иметь высокую доступность с минимальным временем простоя для обслуживания или обновления.

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

Расчеты:

  • Задержка: чтобы соответствовать требованию 5-секундной задержки, система должна быть способна обрабатывать 200 000 записей в секунду. Это означает, что каждая запись должна обрабатываться не более 5 микросекунд (5 секунд / 1 миллион записей). Если системе требуется больше 5 микросекунд на запись, требования к задержке не будут выполнены.
  • Пропускная способность: для обработки 1 миллиона записей в день система должна обрабатывать 11,6 записей в секунду. Это означает, что обработка каждой записи должна занимать не более 86,4 миллисекунд (86 400 секунд в день / 1 миллион записей). Если системе требуется больше 86,4 мс на запись, требования к пропускной способности не будут выполнены.

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