Разработка API для интеграции ПО с веб-платформой

Разработка API для интеграции ПО с веб-платформой

Связали ПО клиента с веб-платформой, чтобы управлять виртуальными машинами без ручного запуска и настройки программы

2026
Разработка сервиса
ИТ

Задача и проблема

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

Веб-платформа не имела механизма для передачи команд VirtualBox, поэтому не могла запускать этот сценарий без участия оператора.

Задача — автоматизировать управление виртуальными машинами и дать веб-платформе возможность передавать команды VirtualBox через программный интерфейс.

О клиенте

Заказчик развивает собственную веб-платформу для работы с виртуальными машинами. Для их создания 
и управления он уже использовал VirtualBox на Windows-сервере.

На VirtualBox уже было настроено большое количество виртуальных машин, поэтому заменить используемое 
ПО было невозможно.

Решение — API для интеграции VirtualBox с веб-платформой

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

Для этого разработали промежуточный сервис между веб-платформой и Windows-приложением. Он принимает команды через REST API и передает их Python-сценариям, которые выполняют необходимые операции в графическом интерфейсе VirtualBox.

Запишитесь на консультацию

Обсудим, как сможем решить вашу задачу




Спасибо за заявку!
Мы скоро с вами свяжемся.
Благодарим вас за вашу заявку! Наши специалисты уже работают над ней, и мы обязательно свяжемся с вами в ближайшее время.
Произошла ошибка при отправке
К сожалению, произошла ошибка при отправке вашего сообщения. Пожалуйста, проверьте ваше подключение к интернету и попробуйте отправить сообщение еще раз

Почему для интеграции ПО с веб-платформой понадобилось собственное решение 

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

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

Как связали VirtualBox с веб-платформой

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

  • Получает запрос. Веб-платформа передает в REST API команду на создание или управление виртуальной машиной.
  • Определяет операцию. Сервис принимает запрос и запускает соответствующий Python-сценарий.
  • Выполняет действие в VirtualBox. Сценарий управляет графическим интерфейсом: открывает нужные окна, задает параметры, выбирает настройки, подтверждает операции и проверяет результат.
  • Возвращает результат. Веб-платформа получает статус операции и актуальную информацию о виртуальной машине. Если возникает ошибка, сервис сохраняет логи и скриншот интерфейса для диагностики.

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

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

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

Управление графическим интерфейсом

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

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

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

Контроль операций и диагностика ошибок

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

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

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

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

Запишитесь на консультацию

Обсудим, как сможем решить вашу задачу




Спасибо за заявку!
Мы скоро с вами свяжемся.
Благодарим вас за вашу заявку! Наши специалисты уже работают над ней, и мы обязательно свяжемся с вами в ближайшее время.
Произошла ошибка при отправке
К сожалению, произошла ошибка при отправке вашего сообщения. Пожалуйста, проверьте ваше подключение к интернету и попробуйте отправить сообщение еще раз

Какие задачи помогает решать такой подход

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

Такой API-слой нужен, когда необходимо: 

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

Кому актуально это решение

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

  • IT-компании;
  • производственные предприятия;
  • инженерные компании;
  • телекоммуникационные компании;
  • инфраструктурные компании.
Результат работы команды Riverstart
Связали VirtualBox с веб-платформой и автоматизировали управление виртуальными машинами
Результат работы команды Riverstart

Обсудить проект

Расскажите о проекте в форме или свяжитесь с нами напрямую

hi@riverstart.ru

Написать нам на почту

@hi_riverstart

Написать нашему аккаунт-директору в Telegram

Нижегородский офис

ул. Рождественская, 26

+7 499 647 48 28

Московский офис

Новая площадь, 6