Назад к кейсам

Корпоративное облачное хранилище

«Корпоративное облачное хранилище» «Корпоративное облачное хранилище»

О клиенте

Компания СООО «Конте Спа» была основана в 1997 году в г. Гродно (Республика Беларусь), когда рынок только начинал свое развитие. 20 лет неустанного развития и эффективной работы вывели «Конте Спа» на позицию лидера в производстве одежды, белья, чулочно-носочных изделий в Восточной Европе.

«Корпоративное облачное хранилище» лендинг.

О проекте

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

ConteDisk представляет из себя веб-приложение, похожее на привычные сервисы облачного хранения файлов – Google Drive и Яндекс.Диск. Помимо хранения файлов имеется собственная система учетных записей, пользовательских групп, возможность гибкого контроля доступа.

Цели проекта

Цифры
  • на 40% Сократили расходы на оплату облачных хранилищ.
  • > 10 млн Файлов и папок.
  • > 1000 Постоянных пользователей внутри компании.

Решение

Чтобы дать пользователям возможность работать без мысли о том, что они находятся в браузере, а вместо этого словно используют системный файловый менеджер, мы разделили приложение на фронтенд, написанный на Vue.js, и бекенд на Laravel.

Глобально вся система состоит из нескольких модулей:

Проблемы и вызовы

Управление доступом

Пользователей — тысячи, файлов и папок — десятки миллионов. Для каждого пользователя и для каждой группы, в которую он входит, необходимо выполнять проверку на право просматривать или редактировать файл, что при решении “в лоб” занимало бы непомерно много времени и ресурсов. Продолжительное время изучая варианты реализации, мы разработали механизм проверки, скорость работы которого впечатляет уже не первый год и не имеет прямой зависимости от количества файлов или пользователей. Предоставление доступа, настройка прав и срока их действия могут происходить как для отдельных пользователей или групп, так и для неограниченного числа пользователей, в том числе тех, что не зарегистрированы в системе, используя публичные ссылки.

«Корпоративное облачное хранилище» страница закрытия смены.

Терабайты данных

Неожиданностью было то, что одна фотосессия, загруженная в хранилище, могла занимать сотни гигабайт с фотографиями в “сыром” формате. Такие фотосессии проводятся регулярно, что заставляет думать не только об объемах хранилища, но и о скорости доступа к файлам, времени на их поиск. Для решения проблемы мы рассмотрели несколько вариантов, в том числе использование собственных физических накопителей в дата-центрах. Но их закупка и обслуживание персоналом дата-центра обходится недешево, а для большей надежности понадобилось бы размещать часть данных в другом дата-центре. В качестве оптимального решения мы спроектировали двухстадийную систему – “горячие” файлы находятся на том же физическом сервере с очень быстрым, но необъемным носителем, а все остальные файлы хранятся у провайдера, предоставляющего высокую скорость и неограниченные объёмы данных, распределенные по нескольким независимым серверам.

Предпросмотр всех типов файлов

Пользователям важно сразу видеть, как выглядят фотографии и документы. С простыми форматами изображений (JPEG, PNG) браузер легко справится самостоятельно. Но фотографы загружают исходные RAW или уже обработанные TIFF-файлы, бухгалтеры и юристы загружают документы и таблицы, а маркетологи – презентации и видеоматериалы в самых разных форматах, которые не могут быть отображены браузером. Возможность просмотреть содержимое таких файлов не предоставляется даже в популярных сервисах, а готового решения и вовсе нет. Для решения задачи мы реализовали модуль, построенный на базе десятков вспомогательных инструментов, позволяющих извлечь содержимое файлов разного типа. Задача модуля — создать отдельные файлов для предпросмотра. Они не занимают много места, даже если размер исходного файла исчисляется десятками гигабайт, и позволяют выполнить все базовые действия – просмотреть сотню фотографий и видео, прочитать содержимое документов и таблиц, оценить как выглядят презентации.

Резервное копирование

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

«Корпоративное облачное хранилище» страница выбора билета.

Технологии

  • PHP
  • Laravel
  • Node.js
  • MySQL
  • Redis
  • Elasticsearch
  • RabbitMQ
  • REST API
  • TypeScript
  • Vue.js
  • WebSockets
  • S3

Сотрудничество

2020 – ∞