Найти в Дзене
Secret Technologies

Как мы создавали синхронизацию без документации и чужого опыта. Вторая версия синхронизации

Как уже говорилось ранее, предыдущая реализация оставила открытый финал, и сразу же после её внедрения в продукт мы приступили к реализации более совершенного механизма. Параллельно мы наконец нашли статью от «Яндекса» на «Хабре», благодаря которой у нас появилось несколько идей для новой концепции. Основным изменениям подвергся блок функций, отвечающих за обработку действий в локальной папке. Мы полностью переписали его, отказавшись от концепции постоянного сканирования в пользу отслеживания системных событий. Как оказалось, необязательно постоянно сканировать целевую папку – все основные операционные системы имеют свои механизмы уведомлений о событиях файловой системы, на которые можно подписаться, тем самым делая большую часть созданного нами кода практически полностью бесполезной. Практически – потому что всё не так радужно. Например, событие копирования файла состоит из двух событий файловой системы – считывания и записи. Таким образом, вся наша логика по определению конкретных ти

Как уже говорилось ранее, предыдущая реализация оставила открытый финал, и сразу же после её внедрения в продукт мы приступили к реализации более совершенного механизма. Параллельно мы наконец нашли статью от «Яндекса» на «Хабре», благодаря которой у нас появилось несколько идей для новой концепции.

Основным изменениям подвергся блок функций, отвечающих за обработку действий в локальной папке. Мы полностью переписали его, отказавшись от концепции постоянного сканирования в пользу отслеживания системных событий. Как оказалось, необязательно постоянно сканировать целевую папку – все основные операционные системы имеют свои механизмы уведомлений о событиях файловой системы, на которые можно подписаться, тем самым делая большую часть созданного нами кода практически полностью бесполезной. Практически – потому что всё не так радужно. Например, событие копирования файла состоит из двух событий файловой системы – считывания и записи. Таким образом, вся наша логика по определению конкретных типов событий осталась прежней.

-2

Но не только это было изменено. Мы в целом провели некий рефакторинг структуры модуля синхронизации, в результате разделив его на несколько специализированных подмодулей, каждый из которых выполнял одну конкретную задачу – будь то получение событий из сервера или локальной папки, или их обработка. Кроме того, мы полностью переработали интерфейс управления синхронизацией, сделав его более удобным (например, добавили отображение событий передачи изменений, чтобы можно было отслеживать корректность его работы).

И, что самое главное, созданный тогда механизм до сих пор присутствует в продукте (с небольшими дополнениями для соответствия новым функциям системы) и радует наших пользователей своей работой.

Подводя итог, работа над этим функционалом была своего рода захватывающим приключением, в котором мы достигли своей цели, двигаясь по тёмной пещере без фонарика и карты. И тем слаще была сама достигнутая цель. Однако, оглядываясь назад, я бы многие вещи сделал уже совершенно по-другому. Это касается как самих реализуемых механизмов, так и подходов к выполнению задачи. Но без приобретенного в ходе работы опыта я бы, возможно, к таким выводам не пришёл.

Всем спасибо за внимание!

Автор статьи: Захар Максименко, руководитель отдела аналитики компании Secret Technologies.

Хотите узнать больше о возможностях Secret Cloud Enterprise для вашей компании? Свяжитесь с нами для получения консультации или закажите демонстрацию на нашем сайте.

Telegram-канал | Сообщество VK