Во время работы над сложными проектами, например, такими как виртуальные ассистенты, возникают нетиповые задачи, для решения которых нет подходящего инструмента или фреймворка. Иногда такие задачи кажутся маленькими и незначительными, поэтому один разработчик-энтузиаст за два дня пишет на коленке маленький Python сервис и делится им с коллегами.
Но как быть, если маленький наколенный проект с 2 RPS, предназначенный для использования несколькими людьми, выстреливает, и его накрывает волна фича реквестов и пользователей из десятков команд?
В своём докладе я расскажу, как развивался наш внутренний инструмент UnionPortal, предназначенный для поддержки NLP задач, про его эволюцию, начиная с маленького наколенного проекта и заканчивая большим отказоустойчивым сервисом со всеми правилами хорошего тона enterprise сервиса. Мы затронем такие интересные вопросы как масштабирование, бесшовный вывод из и ввод в эксплуатацию, сокращение стоимости разработки и внедрение единого архитектурного стандарта.
ПланПредпосылки к появлению сервиса.
Шаг ноль — делаем прототип UnionPortal 1.0 одним человеком на Streamlit.
Шаг первый — замена интерфейса и разделение фронта и бэка.
- Отказываемся от генерации фронта Python кодом
- Повышаем UI и UX
- Внедряем метрики и доказываем значимость сервиса
Шаг второй — увеличиваем пропускную способность и отказоустойчивость.
- Меняем архитектуру. Переходим от одного сервиса к группе сервисов
- Удешевляем железо — отказываемся от GPU.
- Делаем на базе SmartApp Framework новый - UnionPlugin Framework
- Бесшовно заменяем UnionPortal 1.0 на UnionPortal 2.0
Шаг третий — добавляем джентльменский набор в виде ELK, Prometheus и Grafana.
Доклад рассчитан на разработчиков и руководителей разработки. Слушатели узнают:
- Как доказывать значимость pet-project для компании
- Как масштабировать "сырые" проекты
- Как можно экономить время и силы на разработке