Что такое HLD, кому и для чего может понадобиться?

Что такое HLD, кому и для чего может понадобиться?

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

HLD – это сокращение от английского «high-level design», что переводится как «высокоуровневый дизайн». Специалисты дают точное определение термина – описание архитектуры IT-системы, используемых компонентов и технологий. Чтобы понять, о чем речь, рассмотрим процесс разработки IT-системы с самого начала. Заказчик обращается к исполнителю с конкретной задачей. Все его пожелания фиксируются как техническое задание. После этого исполнителю нужно решить, какие компоненты нужно использовать, чтобы соответствовать требованиям заказчика. На этом этапе разрабатывают так называемые спецификации. Логично, что конкретным спецификациям должна отвечать определенная архитектура. Здесь и появляется HLD – то самое описание архитектуры IT-системы. То есть, это очень важный момент при разработке, который дает понимание на высоком уровне составных компонентов и подходов для построения масштабируемой, отказоустойчивой и резервируемой информационной системы. Но кроме «высокоуровневого» дизайна есть еще и «низкоуровневый». В чем же разница? Все очень просто – первый описывает систему исключительно на уровне архитектуры (подсистем, модулей и интерфейсов), но не рассматривает конфигурации в деталях. Проще говоря, это концепт будущей IT-инфраструктуры, некий рабочий план, который при необходимости можно корректировать и адаптировать под новые требования.

Как же составить грамотный HLD?

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

  1. Дизайн информационной системы и ее отдельных элементов. До сих пор бытует мнение, что эта «картинка» и есть HLD, но на самом деле это только одна ее часть.
  2. Описание элементов системы и их взаимодействия. Для удобства информацию подают в виде практичных кейсов (выполняя действие X, вы получаете результат Y).
  3. Схема внедрения. В этом разделе подается сводная таблица, которая содержит общую информацию об основных этапах работ, необходимых для внедрения проекта. Эта информация является также основанием для подсчета трудозатрат и составления плана проекта.

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

  1. называем Заказчика и Исполнителя, формируем техническое задание;
  2. описываем дизайн системы и используемые средства;
  3. обосновываем функциональность внедряемых решений;
  4. указываем ключевые характеристики системы (масштабируемость, безопасность, отказоустойчивость, управление и т.д.);
  5. описываем ключевые подсистемы и их принципиальные показатели (производительность, управляемость, доступность, стоимость и др.)

Так в чем же смысл?

Мы разобрались, что такое HLD и из чего он состоит. Но неужели при разработке информационных систем нельзя обойтись без картинок и описаний? В принципе, можно, но хороший HLD никогда не помешает. Почему?

  • Это самый удобный формат на этапе планирования системы. В любой момент вы сможете внести необходимые изменения или переиграть принятые решения.
  • Описание четко отвечает на вопросы, что вам нужно и как это сделать. На этапе детализации (LLD) либо внедрения — это незаменимое руководство.
  • HLD позволяет посмотреть на ситуацию масштабно: вы видите, что у вас есть, что должно получиться в идеале и что получится на самом деле.

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