Как не превратить корпоративную ИТ-систему в «монстра»

Логотип компании
Как не превратить корпоративную ИТ-систему в «монстра»

Изображение создано нейросетью на shutterstock.com

IT-World разбирался, почему монолитные корпоративные системы — это бомба замедленного действия и как избежать ошибок при проектировании.

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

От монолита к гибкости

Еще недавно на рынке программного обеспечения преобладала монолитная модель ИТ-архитектуры для систем и бизнес-приложений. Модель монолитной архитектуры — это устоявшийся классический подход к созданию ПО, который предполагает наличие единого блока, функционирующего самостоятельно или изолированно от других приложений. В таком случае все функции и модули системы или приложения работают как единое целое и обновить отдельный компонент независимо невозможно — для этого потребуется обновление или изменение всей системы. Однако сейчас на рынке набирает популярность гибкая и масштабируемая архитектура: по нашим наблюдениям, компании все чаще переходят к микросервисам, которые подразумевают метод организации архитектуры, основанный на ряде независимо развертываемых служб, и позволяют быстро вносить необходимые изменения. Согласно опросу Cnews, такую архитектуру уже используют 35% российских компаний, а еще 10% планируют внедрить ее в ближайшее время. Вместо единого блока применяются отдельные модули для загрузки информации, работы с устройствами сбора данных, генерации отчетов. Модули запускаются в нескольких экземплярах и располагаются на различных серверах — так можно повысить скорость работы и надежности системы. Но даже это не дает гарантии, что несколько плохо связанных между собой бизнес-приложений, построенных по принципу микросервисов, со временем не превратятся в «монстра».

Как распознать «монстра»?

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

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

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

Как не превратить корпоративную ИТ-систему в «монстра». Рис. 1

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

Почему системы превращаются в «монстра»?

По нашему опыту, наиболее распространенная причина превращения системы в «монстра» — ошибка проектирования на старте внедрения.

Представьте ситуацию: менеджмент компании N принимает решение о приобретении и настройке системы управления взаимоотношениями с клиентами (CRM). Команда определила конкретные цели, результаты, функции, задачи, стоимость и сроки проекта. После того как поставщик провел первые демонстрации прототипов CRM-системы, стейкхолдеры начинают высказывать дополнительные пожелания. Коммерческий директор предлагает добавить в систему блок складского учета для скоропортящихся товаров. Маркетолог просит реализовать интеграцию с сервисами электронных рассылок и поддержку программ лояльности для постоянных клиентов. Технический директор предлагает разработать гибкий конструктор коммерческих предложений и настроить маршруты согласований в системе электронного документооборота. Директор по развитию бизнеса планирует открыть филиал в Китае через полгода и просит сделать CRM сразу с поддержкой английского, а еще лучше — китайского языка.

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

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

Для каждого пожелания из «банка идей» не лишним будет рассчитать экономические эффекты и обосновать целесообразность доработок в той или иной системе. Часто уже на этом этапе становится понятно, какие функции действительно необходимы, а какие нет. Не забывайте, что бэклог требует регулярного пересмотра и обновления; периодичность обновлений зависит от скорости изменений требований к системе.

Как не создать «монстра»?

На этапе проектирования системы советуем привлекать enterprise-архитектора, а если такой роли в команде еще нет, то, как минимум потребуются заключение эксперта из ИТ-функции компании, который понимает и видит полный ИТ-ландшафт предприятия. Задача enterprise-архитектора — помочь дуэту «бизнес-заказчик и разработчик» принять взвешенное решение, в частности, ответить на вопрос, в какой целевой системе имеет смысл реализовывать проект?

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

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

При принятии решения о выборе целевой системы советуем руководствоваться двумя принципами:

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

Такой подход помогает уменьшить сложность ИТ-системы, упростить тестирование и поддержку, повысить качество кода.

Читайте также
IT-World разбирался, почему аудит процессов разработки ПО — важный инструмент для повышения эффективности работы команд и улучшения качества продукта.

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

Сущности в системе

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

Как не превратить корпоративную ИТ-систему в «монстра». Рис. 2

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

Теперь давайте представим ситуацию, что при проектировании системы эти три сущности соединились в одну — «Пользователя», который наделен такими атрибутами, как должность, подразделение, фамилия, дата рождения. Например, ИТ-партнер внедрил систему, где доступ к данным разграничивается на уровне подразделения и должности. Спустя некоторое время наш «Пользователь» получил повышение, атрибут «Подразделение» изменился, а вместе с этим пропал и доступ к нужным для работы данным.

Точечное исправление такой ошибки позволит решить проблему «здесь и сейчас», но обернется дорогостоящими доработками по внесению изменений на архитектурном уровне и ростом критической массы подобных правок, что в конечном счете приведет к деградации системы. Таких триад, сведенных к одной, много. Например, «Клиент» — «Юридическое лицо» — «Торговая точка» или «Товар» — «Упаковка» — «Груз».

Checkpoint или вместо послесловия

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

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

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

Опубликовано 26.09.2024

Похожие статьи