Мы переписали клиент на Rust: минус 60% памяти

Синхронизация файлов — это тысячи мелких операций и постоянный фон. Вот что дал переход на Rust и где мы споткнулись.

Клиент Beta Space работал на популярном стеке и справлялся. Проблемы начались, когда у части команд появились десятки тысяч файлов и несколько устройств на человека: память росла, а синхронизация начинала конкурировать с браузером за ресурсы.

Что мы хотели получить

Что получилось

После переписывания ядра синхронизации потребление памяти упало на 60%, старт — с 2,4 до 0,7 секунды. Заодно исчезли несколько классов ошибок, связанных с гонками при параллельной записи.

Компилятор не сделал нас умнее, но он не дал выпустить то, что мы бы точно выпустили на другом стеке.

Где было тяжело

Основная сложность — не язык, а совместимость: старые версии клиента должны были работать с новым протоколом. Мы держали два протокола полгода и только потом отключили старый.

Переписывать работающий продукт — риск. Но в нашем случае это была не смена моды, а решение конкретной проблемы, которую пользователи замечали каждый день.

НВ
Ника Волкова

Команда Beta Space. Пишем о том, что делаем и чему учимся.

Попробуйте Beta Space

Бесплатный старт без карты. Поможем с первым проектом и ответим на вопросы.

Действие выполнено