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