Реализация серверного приложения для системы TN Check
Перевели backend-систему мобильного приложения TN Check от ТЕХНОНИКОЛЬ с .NET на Golang, устранив хронические проблемы с производительностью и значительно снизив эксплуатационные расходы
Задача
- Спроектировать надежную и масштабируемую архитектуру, способную поддерживать будущий рост системы без увеличения инфраструктурных затрат.
- Минимизировать издержки миграции путем обеспечения совместимости API нового бэкенда на Golang с существующими фронтенд-приложениями;
- Оптимизировать процесс разработки и сократить время вывода новых функций (time-to-market);
- Реализовать необходимый функционал.
Решение
Мы предложили переход бэкенда на актуальный технологический стек (Golang) с пересмотром архитектуры и процессов разработки. Это включало:
- Разработку гибридной архитектуры «микромонолит»;
- Внедрение практик DevOps, CI/CD для автоматизации тестирования и развертывания;
- Создание детальных спецификаций с выделением бизнес-требований вместо ТЗ для ускорения разработки.
В рамках работы над проектом удалось реализовать функционал:
- Ролевая модель с персонализированным интерфейсом для разных типов пользователей;
- Генератор PDF-файлов с поддержкой данных из JSON и БД;
- SSO и JWT-аутентификация для удобства доступа к приложению и безопасному использованию.
Технические детали реализации
Прежняя система — мобильное и веб-приложение, серверное приложение — была реализована на .Net и не отвечала критериям по быстродействию, надежности, скорости сопровождения. Также не было документации по системе и налаженного процесса тестирования. Возникали сложности при интеграции с внутренними системами клиента и при релизах версий приложения.
Приняли решение внедрить гибридную архитектуру «микромонолит», которая сочетает преимущества монолитной простоты и микросервисной масштабируемости. В рамках этого подхода декомпозировали систему доменные сервисы, отвечающие за конкретные бизнес-процессы.
В качестве языка выбрали Golang за высокую производительность и простоту поддержки.
Для оптимизации затрат вместо ТЗ использовались детальные спецификации с критериями выполнения (DoD). Это ускорило разработку, снизило количество ошибок и упростило тестирование за счёт чёткого определения требований и алгоритмов.
Давайте обсудим ваш проект
Гипотезы и инсайты
Мы предложили клиенту два варианта развития проекта:
- Рефакторинг на .NET — менее затратный вариант, позволявший быстро устранить критические проблемы. Однако этот подход не решал глубинных архитектурных недостатков и не обеспечивал удобства дальнейшей поддержки из-за отсутствия у клиента внутренней экспертизы в .NET.
- Полная переработка на Golang — переход на стек, соответствующий внутренним стандартам клиента. Этот вариант требовал больших стартовых затрат, но полностью закрывал все бизнес-задачи: обеспечивал производительность, масштабируемость и снижал долгосрочные расходы на поддержку.
Остановились на втором варианте, так как он гарантировал долгосрочную эффективность системы.
В процессе работы над проектом получили несколько инсайтов:
- Выявление «болевых точек» на старте (отсутствие документации, проблемное тестирование и интеграция) позволило сделать выбор в пользу стратегического решения.
- Успех зависел не только от технической миграции, но и от внедрения новых подходов, таких как спецификации с критериями выполнения (DoD) вместо ТЗ и отлаженный процесс тестирования. Это ускорило разработку и сократило ошибки.
- Работа по сервисам (1 итерация = 1 сервис) позволила быстро демонстрировать результат, получать обратную связь и снижать риски.
Результат
- Уменьшены расходы на инфраструктуру и поддержку благодаря оптимизации кода и качественной документации;
- В 2 раза возросло количество активных пользователей за счет удобства и скорости работы приложения;
- Реализован запланированный функционал приложения;
- Критичные процессы работают без сбоев, сокращен time-to-market;
- Процессы разработки и выпуска релизов соответствуют стандартам ИТ-департамента ТЕХНОНИКОЛЬ.
Технологии
- Golang
- PostgreSql
- Redis
- SSO/jwt-токены
- openApi/rest