|
Professor Seleznov
|
В современных реалиях, когда интернет всё чаще напоминает минное поле с блокировками и замедлениями, надежда на зарубежные (да и на некоторые локальные) сервисы тает с каждым днем. В какой-то момент я пришел к выводу: если хочешь, чтобы инструмент работал стабильно и не зависел от настроения провайдеров или геополитики — напиши его сам. Так появился, например,Fury Messenger (о котором я уже писал здесь) — мессенджер для Android, заточенный под нестабильное соединение. Но решив проблему текстового общения, я столкнулся со следующей «болью»: обмен файлами и документооборот. Именно на большом обьеме, а не кидая файлики или фоточки через мессенджер. В этой статье расскажу, как я реализовал систему прямой передачи данных между компьютерами, почему облака — это иногда лишнее звено, и как мой «велосипед» в итоге уехал в B2B-сегмент. Проблема: Танцы с бубном вокруг VPN Типичный сценарий обмена файлами сегодня выглядит так: 1. Залить в Telegram (ограничение по размеру, скорость иногда «режут»). 2. Закинуть на Google Drive/Dropbox (нужен VPN, который нужно то включать, то выключать, чтобы не отвалились другие сервисы). 3. Передать через локальную сеть (сложно настроить права доступа, если люди сидят в разных сегментах или городах). Мне хотелось простоты: как в старой доброй Windows Shared Folder, но через интернет и без необходимости быть системным администратором 80-го уровня. Чтобы можно было просто «расшарить» папку конкретному человеку и передать файл на максимально возможной скорости канала. Так родился Z-Folder. Архитектура: Что под капотом? Я не большой фанат готовых тяжелых фреймворков там, где можно реализовать кастомный протокол. (вообще очень люблю кастомные, бинарные протоколы) В Z-Folder я пошел по пути максимального облегчения стека. 1. Протокол передачи В основе лежит UDP. Почему не TCP? - NAT Punching: Для установления прямого P2P-соединения между узлами, находящимися за NAT, UDP подходит идеально. - Скорость: В условиях потерь пакетов или нестабильного линка UDP позволяет более гибко управлять повторными отправками и окном передачи. Протокол чем-то напоминает STUN, но со своими особенностями для контроля целостности данных и управления очередями. 2. Пробивка NAT и Fallback Разумеется, чистый P2P возможен не всегда (привет, симметричные NAT в корпоративных сетях). Схема работы выглядит так: 1. Центральный сервер: Выступает точкой авторизации и «свахой» (Signaling server). Он знает, кто в сети, и помогает узлам найти друг друга. 2. P2P-коннект: Узлы пытаются «пробить» NAT и соединиться напрямую. Если получилось — данные летят со скоростью вашего интернет-провайдера, минуя любые промежуточные сервера. 3. Relay (Fallback): Если прямой коннект невозможен, система автоматически переключается в режим релея. В этом случае сервер выступает посредником, просто пересылая пакеты. Это медленнее, но гарантирует доставку. 3. Безопасность и права доступа Система работает по принципу «белого списка». Вы создаете пользователей в личном кабинете (один пользователь — одно устройство). В интерфейсе вы видите список доступных контактов. Нажимаете на пользователя — видите только те папки, которые он расшарил именно для вас. Права можно гибко настраивать: только чтение или чтение/запись. Интерфейс и «плюшки» Я сторонник минимализма. Главная задача Z-Folder — сделать так, чтобы даже человек, далекий от ИТ, мог обмениваться файлами.
 По фидюеку очень часто просили добавить "свободное место" в шаре. не знаю, для меня не было очень важной метрикой, но добавил - люди счастливы.
 В процессе разработки я понял, что файлообмен без контекста — это неудобно. Поэтому добавил внутрь простенький чат. Теперь не нужно переходить в мессенджер, чтобы написать «Лови доки», — всё происходит в одном окне.
 От пет-проекта к B2B Изначально я делал Z-Folder для себя и своих бизнес-партнеров. Но жизнь подкинула интересные кейсы: - Кейс «Друг и локалка»: Мой знакомый никак не мог настроить общий доступ к папкам между двумя компами в квартире (классика Windows). Z-Folder решил его проблему за 2 минуты: поставил, залогинился, пользуешься. - Кейс «B2B»: Неожиданно проектом заинтересовались компании. Оказалось, что для оперативного документооборота между филиалами, особенно когда интернет в регионах «хромает», а VPN-шлюзы перегружены, такое легкое P2P-решение — настоящий спасение. Итоги Z-Folder стал для меня ответом на вопрос: «А что если завтра отключат всё?». Система независима от облачных хранилищ, не требует постоянного включения VPN для доступа к файлам и выжимает максимум из доступного канала связи. Сейчас сервис успешно живет, им пользуются несколько компаний и круг моих знакомых. Это был отличный опыт создания закрытой, быстрой и надежной экосистемы «для своих», которая переросла в нечто большее. А как вы решаете вопрос передачи тяжелых файлов или документов в условиях нынешних ограничений? Пользуетесь облаками, мессенджерами через боль или используете какие то другие решения?-Источник
|