кому стоит обратить внимание на объектные хранилища?
как развернуть самому? проекты для самохостинга S3 хранилища?
open-source проекты поддерживающие S3
Уверен, что у Вас будет чем дополнить, так что смело рассказывайте о Вашем опыте использования объектных хранилищ, какие вы себе арендуете или развернули?
Для каких приложений используете?
Ну и само собой - чуть позже будет ролик на эту тему + отдельные видео по вариантам локального запуска s3
S3 (Simple Storage Service) — это облачное объектное хранилище, предназначенное для хранения неограниченного объема неструктурированных данных(файлов, изображений, видео, бэкапов). Данные размещаются в контейнерах (бакетах) как самостоятельные объекты с уникальными ключами, доступ к которым осуществляется через API, что обеспечивает высокую масштабируемость и надежность.
Вам нужно временное большое хранилище, нет смысла покупать диски
Вы разработчик(огромное кол-во бизнесов и проектов испольует именно S3)
при этом Вы можете развернуть тестовый стенд, чтобы проверять s3 api локально, не платя за операции облачному провайдеру
Вы энтузиаст изучающий технологии
4. Можно ли развернуть себе дома?
Да, есть проекты, которые позвляют развернуть S3 api supported, но стоит помнить, что поддержка S3 API не делает из Вашего хранилища на одной ноде - AWS S3 =)
Более развернуто - поговорим в видео
По виду функционала не очень много, но зато быстро
Вот тут не хочется отбирать еду у админа, но напишу несколько слов из собственного опыта.
Когда стоит использовать S3
Есть сервис, например, чат или база знаний или форум, база данных весит не очень много и может спокойно хоститься на виртуалке с фиксированным диском. Увеличение диска сложное или дорогое - подключаем облачное S3 хранилище для пользовательских файлов, картинок, аттачей и платим только за то, что реально было загружено.
Файлов оооочень много, масштабируемость и надежность обычных дисков ограничена, мы добавляем уровень абстракции в виде S3, который сам шардирует, реплицирует, дублирует
Программный обмен файлами между разными сервисами - пользователь отправил форму с аттачем, сервис антивирусной проверки проверил файл, заявка пошла обрабатываться в CRM - все эти системы работают с файлом по ID, доступ к шаре по самбе тут выглядит очень костыльным, хранение в БД и API, по сути, является аналогом S3, но менее эффективным. Либо 2 сценарий использования: BigData, это когда у нас есть набор данных в S3 бакете, а потом мы берем аналитический софт и “натравливаем” на эти данные, либо можем обучать ИИ модели на основе датасетов в S3
Для K8S и 12 factor app где персистентность данных в рамках пода очень сомнительна, горизонтальное масштабирование больное, надежность низкая
Когда есть очень крутое хранилище с разными политиками, ACL и CDN. Например, можно настроить хранение файлов на очень быстром NVME, быстром SSD, медленном HDD или очень медленном ленточном накопителе. При этом, интерфейс доступа будет одинаков, можно хранить новые файлы на быстром хранилище, т.к. к ним будет чаще доступ (по статистике), а через месяц/полгода/год перемещать в условный архив, где вероятность запроса документа крайне мала.
Если требуются прям крутые фишки S3, например, получение прямого доступа к файлу по ссылке или загрузка файла по ссылке. Но это для высоконагруженных систем, когда ваш бэкенд обрабатывает сотни запросов в секунду и вместо того, чтобы принимать файл от пользователя и грузить его в хранилище можно сгенерировать ссылку и отдать клиенту, браузер загрузит файл в хранилище самостоятельно и проинформирует об этом бэкенд. Ну т.е. тут должна быть поддержка как на бэке,так и на фронте.
В плане бэкапов у меня есть опыт скриптового бэкапирования сервисов и заливки дампа в облачное S3 хранилище. Тогда при потере сервера бэкап остается, а на вопрос “можешь скинуть мне дамп базы данных для локального разворачивания?” я отвечаю “нет, там есть перс. данные” или “да, перс. данных нет, поэтому, вот ссылка на скачивание ночного дампа из облака и вот пароль, ссылка действует в течение часа”
Минусы S3 и когда не стоит использовать
Надо понимать, что это еще один уровень абстракции, лишние операции не добавляют IOPS хранилищу. Если у вас миник с 1 NVME диском и вы хотите развернуть на нем форум, то развернутый на нем же S3 для хранения файлов форума не даст профита, но увеличит нагрузку и размер хранилища т.к. будет доп обработка и хранение метаданных, на маленьких файлах многие S3 хранилиза сильно деградируют. Если у вас 1 диск на сервере, то с S3 он закончится раньше, чем без него, а масштабироваться некуда.
В плане облачных S3 хранилищ, исходя из 1 пункта, пользователь платит за загрузку файла, хранение файла, получение списка файлов, получение файла, удаление файла. При частом запросе файлов из бакета в том же AWS рекомендуется подключать более дешевый CDN, который скачивает к себе файл из S3 за условный рубль, а потом отдает пользователям с локального датацентра за копейку. Тот же PBS хоть и умеет работать с S3, но все равно использует локальный кеш для быстрого доступа к файлам и, по слухам, оооочень активно взаимодействует с S3 хранилищем, что может привести к выставлению огромных счетов за использование API
Надо понимать, что S3 хранит все равно файлы на диске, но при этом еще и их метаданные в БД, а это значит, что у нас становится больше точек отказа. S3 это не волшебная пуля и не даст надежности просто после установки, но он позволит легче реализовать доступ к отказоустойчивой системе, которую вы построили самостоятельно.
Из этой же серии
RAID это про отказоустойчивость дисков, а не про безопасность данных и бэкапирование
LVM это про удобную нарезку, а не про отказоустойчивость
SAAS и AWS like это про удобство и какую-то надежность (за которую отвечаете не вы), а не про дешевизну
Self-hosted это не бесплатно, а плата собственным временем, электроэнергией, оборудованием вместо перевода денег кому-то