Информационные технологии и интернет
Май 2019
Международный коммерческий продукт для проектирования мебели широко использовался как часть бизнес-процессов заказчиков. Более 70% его выручки приходилось на клиентов, глубоко интегрировавших продукт со своими программными системами.
Для этих целей существовал SDK — набор программных интерфейсов, позволявших расширять функциональность продукта и связывать его с другими системами. Однако его архитектура делала разработку и сопровождение интеграций неоправданно сложными, трудоёмкими и дорогостоящими.
При этом клиентские решения должны были продолжать работать по мере развития самого продукта. Требовалось не просто упростить отдельные операции, а создать устойчивую техническую основу, позволяющую заказчикам и партнёрам самостоятельно реализовывать новые возможности, сохраняя совместимость с основным продуктом.
Вместо последовательного устранения ограничений существующего SDK было разработано новое поколение платформы расширений, объединяющее удобный программный интерфейс, инструменты разработки и средства контроля качества.
1. Новая архитектура взаимодействия
Работа началась с пересмотра самой границы между основным продуктом и создаваемыми для него расширениями.
Был спроектирован новый API, предоставляющий разработчикам доступ к возможностям продукта через привычные программные модели и типизированные интерфейсы. Сложность внутреннего устройства приложения скрыта за единым программным слоем.
Основой решения стала архитектура .NET SDK с использованием C# и C++/CLI для взаимодействия с существующим ядром продукта.
2. Единая платформа для клиентских разработок
Вместо непосредственной работы со сложными внутренними интерфейсами разработчики получили последовательную модель взаимодействия с продуктом.
Через новый SDK стало возможно создавать специализированную функциональность, адаптировать поведение приложения под требования заказчиков и разрабатывать механизмы интеграции с внешними системами.
При этом публичный API изначально проектировался как долгосрочный интерфейс, способный развиваться вместе с основным продуктом без необходимости постоянно перерабатывать клиентские решения.
3. Полноценная среда разработки внутри продукта
Следующим этапом стало создание среды программирования, встроенной непосредственно в работающее приложение.
Она объединила основные этапы работы с клиентскими расширениями:
написание и редактирование программного кода;
компиляцию непосредственно внутри приложения;
запуск расширений в контексте работающего продукта;
отладку кода и исследование его поведения.
Разработчики получили возможность сразу проверять взаимодействие собственных решений с реальным продуктом, не переключаясь между разрозненными инструментами разработки и тестирования.
4. Автоматизация контроля качества и документации
В архитектуру SDK были включены автоматизированные тесты и генерация документации на основе программных интерфейсов.
Это позволило поддерживать документацию в соответствии с развитием API, контролировать согласованность его поведения и снижать риски при дальнейших изменениях.
В результате SDK и встроенная среда разработки образовали единую техническую платформу, рассчитанную не на один клиентский проект, а на многолетнее развитие целой экосистемы расширений.
Разработка интеграций стала значительно проще и понятнее. Вместо необходимости разбираться в сложном внутреннем устройстве большого программного продукта разработчики работают с привычными интерфейсами, создают собственную функциональность и сразу проверяют её непосредственно в работающем приложении. От написания кода до запуска и отладки — весь процесс объединён в единую среду.
Для заказчиков это означает больше свободы в адаптации продукта к собственным бизнес-процессам, а для основной команды разработки — возможность сосредоточиться на развитии общих возможностей платформы вместо постоянной реализации индивидуальных требований. Новые интеграции и расширения создаются поверх общей технической основы, рассчитанной на дальнейшее развитие и сохранение совместимости.
Так коммерческий продукт получил не просто более удобный API, а полноценную платформу для самостоятельной разработки клиентских решений — важную составляющую его способности обслуживать разнообразные бизнес-процессы международной клиентской базы.