Стартовали новые рейтинги digital-подрядчиковУспейте принять участие! Предварительные результаты.
Delaweb
Корпоративное облачное хранилище
Delaweb
#Поддержка и развитие сайта#Проектирование сайта#Разработка программного обеспечения

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

49 
Delaweb Россия, Волгоград
Поделиться:
Корпоративное облачное хранилище
Клиент

Конте Спа

Сфера

Образование, наука, работа

Регион

Россия

Сдано

Май 2025

Задача

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

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

Цели проекта:

→ Сократить расходы на хранение. Популярные сервисы требуют большого бюджета для хранения многих терабайтов данных.

→ Централизовать управление доступами. Недопустимы “утечки” критичной информации. Доступ к чувствительной информации должен иметь узкий круг лиц.

→ Ускорить загрузку файлов. Работа с удаленными облачными хранилищами заведомо медленнее, чем с собственным, расположенным в том же городе.

→ Предоставить API для партнеров. Существует потребность предоставлять программный доступ к файлам определенного рода для партнеров.

→ Интегрировать файловое хранилище в экосистему. На других проектах компании есть потребность организовать хранение файлов.

Решение

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

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

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

→ Загрузчик файлов. Модуль, отвечающий за загрузку файлов и папок из самых разных мест: из интерфейса приложения; по FTP; используя архивы с авто-распаковкой; через специальный API.

→ Поиск. Воспользоваться им можно из любого другого раздела, за считанные секунды отыскав нужные файлы или папки.

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

→ Профиль. В этом разделе каждый пользователь просматривает информацию о своей учетной записи, статистику по использованию сервиса.

→ Пользователи и группы. Раздел доступен только администраторам, которые управляют всеми учетными записями и группами, к которым относятся пользователи. Управление включает себя все стадии: от ручной регистрации пользователя или отправления приглашения на почту, до ограничения доступа и полной блокировки.

→ Интеграция с хранилищем S3. Все загруженные файлы впоследствии попадают на хранение в специализированную систему, работающую по протоколу S3 – стандарту для облачного хранения файлов. Мы спроектировали систему с возможностью использовать любого провайдера, поддерживающего данный протокол.

1Проблемы и вызовы | Управление доступом

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

2Проблемы и вызовы | Терабайты данных

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

3Проблемы и вызовы | Предпросмотр всех типов файлов

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

4Проблемы и вызовы | Резервное копирование

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

Результат

Цифры, которые мы получили: 

✔ на 40% сократили расходы на оплату облачных хранилищ.

✔ > 10 млн файлов и папок.

✔ > 1000 постоянных пользователей внутри компании.


Стек технологий

  • PHP PHP Язык программирования
  • TypeScript TypeScript Язык программирования
  • Vue.js Vue.js Фреймворк/библиотека
  • Elasticsearch Elasticsearch База данных
  • MySql MySql База данных

Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Delaweb с удовольствием обсудит вашу задачу

Оставить заявку