Использование современных стеков технологий (FastAPI, React, Docker, Redis) позволило трансформировать устаревший продукт в конкурентное масштабируемое решение с новыми возможностями для Бизнеса.
Наша компания специализируется на миграции устаревших десктопных приложений в современные веб-решения. В этом кейсе мы расскажем, как помогли крупному разработчику ПО для строительной отрасли перевести его Python-приложение в масштабируемый веб-сервис, использовав такие технологии, как FastAPI, React и Docker.
Задача: Мигрировать десктопное Python-приложения в масштабируемое веб-решение
Заказчик: Крупнейший разработчик программных комплексов для инженеров и IT-решений для строительной отрасли
Описание ситуации:
Компания столкнулась с критическим устареванием основного продукта:
- Платформенная зависимость: Приложение работало исключительно под Windows.
- Высокие операционные издержки: Каждое обновление требовало ручной установки, создавая простои.
- Низкая производительность: Обработка сложных вычислений занимала значительное время, снижая эффективность работы клиентов
- Архитектурные риски: Монолитная структура кода делала поддержку и развитие экономически нецелесообразным
интерфейс декстоп-приложения (старое приложение)
Задачи
- Обеспечить кроссплатформенный доступ к функционалу устаревшего десктопного приложения
- Ликвидировать необходимость ручных обновлений ПО на пользовательских устройствах
- Повысить производительность обработки данных
- Создать масштабируемую архитектуру для роста пользовательской базы
- Обеспечить безопасность данных и отказоустойчивость системы
- Сократить затраты на поддержку
Цель:
Создать современное, кроссплатформенное веб-приложение с тем же функционалом, что и у десктопной версии, увеличив производительность, отзывчивость интерфейса и возможность масштабировать и поддерживать разработанное решение в будущем.
Было принято решение использовать следующий стек:
- Frontend:js– для построения интерактивного и отзывчивого пользовательского интерфейса;
- Backend:FastAPI Python– для создания высокопроизводительного REST API и сохранения старого функционала;
- управление нагрузкой:Redis– в качестве брокера сообщений для обработки длительных и ресурсоемких операций;
- развертывание: Docker – для контейнеризации и оркестрации всех компонентов системы (Nginx, Frontend, Backend, Redis).
Ключевые проблемы и их решения:
- Ресурсоемкие вычисления из десктоп-приложения выполнялись продолжительное время;
Решение: провести оптимизацию заложенных алгоритмов, ввести лимит на обработку задач с помощью Redis. Пользователь инициирует операцию и в режиме реального времени отслеживает процесс выполнения задачи. - Код декстоп-приложения представлял собой монолит со сложными взаимосвязями, что делает его поддержку крайне затруднительной;
Решение: провести рефакторинг и разбить код на четкие модули с единой ответственностью для реализации поддерживаемой и расширяемой архитектуры. - Интерфейс декстоп-приложение не соответствовал современным стандартам и имел критические уязвимости для некорректного ввода.
Решение: провести анализ текущего приложения и разработать приложение с использованием современных технологий и реализацией защиты от некорректного ввода.
Реализация
- проведение анализа и декомпозиция:логика десктопного приложения была разбита на модули, определены синхронные и асинхронные операции.
- разработка Backend (FastAPI) – созданы RESTful эндпоинты для управления задачами;
- разработка Frontend (React.js) – реализован динамический интерфейс с отображением прогресса задачи и логом обработки;
- контейнеризация (Docker) – написан Dockerfileдля каждого сервиса и docker-compose.ymlдля их совместного запуска;
- Настройка Nginx – настроен как единая точка входа, перенаправляющая запросы к фронтенду или бэкенду.
Результаты
- кроссплатформенность: приложение стало доступно с любого устройства с браузером;
- увеличение производительности: теперь обработка тяжелых файлов занимает до 10 минут, вместо прежних многочасовых обработок;
- централизованное управление обновлениями: все обновления развертываются на сервере и становятся мгновенно доступными для всей пользовательской базы.
- масштабируемость: Docker-архитектура позволяет легко добавлять новые инстансы backend-сервисов при росте нагрузки и другие компоненты системы;
- снижение TCO (Total Cost of Ownership): значительно снижены затраты на поддержку и распространение ПО.
интерфейс веб-приложения (новое приложение)
Этот проект наглядно демонстрирует наши компетенции в области модернизации legacy-систем. Если вы ищете надежного подрядчика для перевода вашего десктопного приложения в веб, мы готовы предложить вам индивидуальное решение.

