Как небольшая ростовская студия помогла решить задачу, поставленную правительством Канады
Как начали работать
Участие нашей команды в проекте Geo Folder началось с небольшой задачи - исправить неработающую интеграцию с Pay Pal, а в дальнейшем вылилось в два года плотного плодотворного сотрудничества. Однако, обо всем по порядку.
В 2015 году к нам обратился заказчик из Канады с актуальной идеей развивать глобальное хранилище данных. В этом году в ряде стран изменилось законодательство, и появилась необходимость хранить информацию на сервере той страны, в которой с этими файлами работают.
Чтобы решить эту проблему, заказчик создал сервис, аналогичный Google Drive. По сути - это распределенное хранилище на разных серверах в разных странах. Благодаря этому, клиент имеет возможность визуально сохранить файл у себя в любой нужной ему точке мира, но юридически файл находится на сервере той страны, которой необходимо по законодательству. Все файлы в хранилище были довольно большими по размеру. Общий объем составлял несколько миллионов терабайт.
Большая модернизация
Когда наша команда приступила к работе над проектом, архитектура сервиса была уже готова, и этот “каркас” решили сохранить. В остальном сервис почти полностью переписали при помощи PHP. Кроме того, мы с нуля создали мобильную версию сервиса с базовым функционалом.
В общей сложности разработка заняла около двух лет. Над проектом трудилась команда из пяти Full-stack разработчиков и менеджера. Основной объем работ пришелся на backend и довольно сложный чистый javascript. Сторонние библиотеки практически не использовали, чтобы не допустить уязвимостей в системе безопасности. Практически все модули писали самостоятельно.
Помимо разработки, создание сервиса было сопряжено со сложностями организационного характера.
Основная задача была - создать распределенное хранилище данных с возможностью оплачивать услуги сервиса при помощи системы Pay Pal. Переговоры с канадским представительством PayPal получились непростыми и заняли почти три месяца. Канадской стороне приходилось долго объяснять, какие документы стороны должны предоставить для оплаты в каждом отдельном случае.
К счастью для заказчика, все организационные вопросы наша компания также взяла на себя.
Принцип работы сервиса
Чтобы получить доступ к хранилищу, клиент заключает договор, после которого получает один тестовый месяц пользования сервисом бесплатно. В дальнейшем в договоре клиент сам указывает на какой срок он оформляет подписку. После этого сервис должен автоматически списать оплату на указанный период.
Если оплата не поступила вовремя, клиент получает уведомления, сначала еженедельные, а позже - ежедневные, вплоть до блокировки доступа к сервису.
Если, после блокировки клиенту были нужны какие-то отдельные файлы, он мог их скачать, оплатив кратковременный единовременный доступ. В дальнейшем файлы удалялись из хранилища.
Новый виток развития
После того как сервис начал полноценно работать, клиент предложил новый вектор развития - дать возможность покупки места в хранилище не только отдельным физическим лицам, но и компаниям. Продукт снова пришлось основательно переписывать.
В базовой версии, компания могла предоставить доступ к файлам своим 30 сотрудникам. Причем каждому сотруднику можно было индивидуально настроить права доступа к отдельным файлам. Мы добавили возможность тонкой настройки доступа. Кто-то мог только читать файлы, кто-то - редактировать, кто-то - удалять.
Помимо внедрения новых возможностей, мы провели ряд технических доработок для оптимизации и ускорения работы сервиса. В новой версии продукта, после команды на скачивание отправлялся реальный запрос к серверу. В изначальной версии была просто эмуляция.
Вопросы безопасности
Проект использовал громоздкую и запутанную систему шифрования. При потере ключа, сервис невозможно было даже взломать.
Мы значительно модифицировали шифрование, при этом не снизив безопасности. Ключ доступа каждого пользователя запоминался в системе и привязывался к mac-адресу устройства, с которого происходила регистрация. От привязки к IP-адресу решили отказаться, чтобы пользователь мог свободно получить доступ к файлам в любой точке мира.
Доступ к файлам с нового устройства давался только в том случае, если регистрация нового устройства подтверждена с родительского устройства.
Что в итоге
После почти двух лет сотрудничества с Laravel Team клиент получил продукт принципиально другого уровня.
- Благодаря внедрению наиболее оптимальных алгоритмов, скорость загрузки страниц сервиса увеличилась в разы. Увеличилась скорость скачивания файлов.
-Возможность работать не только с физическими лицами, но и с компаниями.
-Возможность тонко настроить доступ к информации для каждого пользователя.
-Мобильная версия с базовым функционалом
На момент завершения нашей работы с Geofolder, сервисом активно пользовались 12 000 человек.