Задача
Scoperly Studio работает в офисе: сервер на одном компьютере, десктоп-клиенты на остальных, всё в офисной сети. Отдела ИТ часто нет, и фраза «сначала поставьте Java, потом PostgreSQL, потом Docker» — то место, где такой продукт теряет клиентов.
Всё в одном установщике
Установщик сервера для Windows приносит свою Java и свой PostgreSQL как отдельные службы на собственном порту, поэтому остальное на компьютере не затрагивается. Каждый компонент при сборке установщика сверяется с закреплённой контрольной суммой, и несовпадение останавливает сборку.
Повторный запуск — это ремонт
Установка написана так, что её можно запускать дважды. Существующие секреты, данные и службы используются повторно, поэтому тот же установщик и чинит. Прежде чем что-то трогать, он проверяет, что инструменты базы запускаются, и пережидает то, чем занята свежая Windows, например установщик, уже занятый обновлениями.
Обновления, которые можно откатить
Обновление начинается с резервной копии базы. Если новая версия не поднялась здоровой, возвращается предыдущая. Такой системе доверяют рабочий день, и обновление никогда не должно быть причиной, по которой работа встала.
Синхронизация, рассчитанная на плохую связь
Офисы сидят за роутерами и теряют связь. Поэтому Studio сама забирает изменения из облака через Connect API и не ждёт вызова извне, а офис тем временем работает в своей сети.