Объектное хранилище — это технология для удобного и надежного хранения большого объема данных.
Изначально технология была разработана компанией AWS в 2006 году как API для простого доступа к объектам с помощью уникальных URL по HTTP или HTTPS. Сегодня объектное хранилище S3 — это одно из самых популярных решений в области облачного хранения данных для работы сервисов и их бэкапов. Технология позволяет не только хранить терабайты данных, но и масштабироваться на лету.
Арендовать S3 под датасеты для ML и аналитики можно в пару кликов. Если вам интересно узнать о технологии подробнее, погружайтесь в статью.
Как хранятся данные?
Количество генерируемых человечеством данных растет с каждым годом, что побуждает развивать технологии хранения. На текущий момент доступно множество решений для хранения информации любой сложности. Рассмотрим их в общих чертах.
Файловая система
Файловая система — самый простой и известный способ структурированного хранения данных. Файловые системы используются для хранения данных на персональных компьютерах, серверах и мобильных устройствах.
К обычным файловым системам имеют доступ все пользователи в пределах одного устройства. Для общего доступа используются особые расширения в виде сетевых файловых систем — например, Network File System (NFS).
Достоинство файловых систем очевидно — это привычный способ хранения, не требующий высокой квалификации для настройки.
Но недостатков существенно больше:
→ ограничение на размер файла,
→ ограничение на количество файлов в хранилище,
→ плохая масштабируемость.
Файловая система — хорошее решение для начала, но с ростом объема данных этот способ вызывает все больше проблем.
Блочное хранилище
Блочное хранение — это способ хранения информации кусочками, или блоками, на физических накопителях. Его используют специализированные программные продукты, чаще всего — базы данных и гипервизоры.
При использовании этого подхода данные хранятся в сыром виде. Отсутствие дополнительных абстракций вроде файловых систем значительно повышает производительность. Также отсутствие абстракций упрощает масштабирование хранилища: добавить пару новых дисков значительно легче.
Тем не менее, данный способ не лишен недостатков:
→ сложен в настройке,
→ требует узкой специализации,
→ необходимо следить за свободным местом и своевременно увеличивать объем хранилища.
Все это ограничивает использование блочного хранилища для любых задач.
Объектное хранилище
Объектное хранилище — решение для надежного хранения данных большого объема. S3 предоставляет контейнеры — в некотором смысле бездонную бочку, в которую можно складывать файлы любых типов — объекты. Такой вид хранилища имеет множество достоинств:
→ практически неограниченный объем,
→ резервирование данных и географически распределенное хранение,
→ возможность добавить любые метаданные к файлу.
Но и тут есть ложка дегтя. Несмотря на широкое распространение, для работы с объектным хранилищем требуется специализированное ПО в правильной конфигурации. Также объектное хранилище S3 имеет ограниченную скорость в сравнении с блочным хранилищем. Размещать базу данных на объектном хранилище будет нецелесообразно.
Объектное хранилище имеет множество различных интерфейсов взаимодействия, о них мы поговорим позднее.
Что же такое объекты?
Какие данные позволяет хранить объектное хранилище S3 и из чего состоят объекты?
В качестве объекта могут выступать данные совершенно произвольного формата. Например, таблицы, отчеты, фото с видео и даже образы для операционных систем — выбор за пользователем.
Кроме самого содержимого, объекты хранят метаданные для сортировки (информацию о формате, дате создания и другое), уникальный идентификатор. Последнее — это URL-адрес, по которому можно однозначно идентифицировать объект.
Особенности объектного хранилища S3
Объектное хранилище можно определить еще проще. Это HTTP API, который позволяет загружать, получать и удалять данные по имени. То есть фактически это KV-хранилище для больших кусков данных (BLOB).
Что важно отметить:
- объектное хранилище гарантирует доступность и целостность данных;
- пользователь может хранить условно бесконечное количество данных — терабайты, а иногда и петабайты;
- S3 имеет плоское пространство имен без вложенности на уровне идентификаторов. Объекты можно разделить по контейнерам, не более.
Эти особенности «диктуют» архитектуру и делают процесс использования более предсказуемым. Например, отсутствует необходимость хранить сложную структуру хранилища. Следовательно, алгоритмы доступа проще, а время доступа меньше и не сильно меняется с ростом количества данных.
HTTP-API делает объектное хранилище более высокоуровневым в плане использования. Любой может реализовать свой простой протокол или обратиться к хранилищу вручную — через curl или telnet.
Классы объектных хранилищ и тарифы
Рассмотрим на примере решения Selectel. Здесь облачные хранилища S3 можно разделить на холодные и стандартные.
- Холодный класс хранилища применяют для хранения редко используемых данных — резервных копий, архивов. Стоимость хранения ниже, но запросы и трафик дороже.
- Стандартный класс хранилища применяют для хранения и раздачи часто используемых данных. В стандартном хранилище стоимость трафика и запросов ниже, но хранение дороже, чем в холодном.
Важно. Объектное хранилище S3 по умолчанию позволяет создавать до 2 000 контейнеров и хранить данные в трех экземплярах независимо от класса хранения.
Почему бизнес выбирает облачное объектное хранилище?
Объектные хранилища набирают популярность не только среди компаний, но и обычных пользователей. Почему так? Разберем на примере.
Сценарии использования объектного хранилища
Хранение личных данных и бэкапы. Объектное хранилище не ограничено в объемах и распределено между множеством серверов, что позволяет хранить резервные копии любых размеров. Более того, резервная копия не обязательно должна быть архивом. Объектное хранилище S3 поддерживает версионирование, с помощью которого можно загружать, например, файл с дипломом, а потом обращаться к более старой версии (то есть осуществить ее восстановление). При этом тарифицируется только занятое место.
Сеть доставки статического контента. Объектные хранилища позволяют получать файлы по протоколу HTTP. Это может быть полезно для создания, например, фотобанка. Логика сайта размещается на отдельном сервере, а контент — в объектном хранилище. В этом случае географическая распределенность серверов хранилища выступает в качестве сети доставки контента (CDN), ускоряя загрузку данных для пользователей по всему миру.
Статические сайты. Как отмечалось ранее, объектное хранилище S3 может размещать файлы любого типа и объема и отдавать их через HTTP. Это значит, что в объектном хранилище можно разместить файлы статического сайта-визитки, привязать к этим файлам пользовательский домен и получить простейший веб-хостинг.
Big Data. Обработка больших данных нередко производится кластером вычислительных машин, которые обмениваются данными. Для обмена данными можно использовать объектное хранилище: один узел кластера загружает данные в хранилище и передает идентификатор объекта следующему узлу.
Адаптивные к нагрузкам системы. Масштабирование ресурсов происходит автоматически. В случае резкого всплеска трафика — например, во время Черной пятницы — ресурсы мгновенно пополнятся. Так можно одновременно обрабатывать большое число пользователей.
Безопасность, персональные данные и 152-ФЗ
Все выглядит хорошо, пока облачным хранилищем пользуется один человек. Но что делать бизнесу, у которого десятки или даже сотни сотрудников? К счастью, объектное хранилище предоставляет возможность разграничения прав. Для каждого контейнера можно задать список пользователей и их права доступа: чтение или чтение и запись.
Однако объектное хранилище находится под управлением провайдера инфраструктуры и обслуживается им, что приводит к вопросам о безопасности хранимых данных. Соответствие 152-ФЗ обозначает, что данные в хранилище надежно защищены от неавторизованного доступа на физическом уровне, а также обеспечивается безопасность сетевой инфраструктуры на уровне программного обеспечения.
Объектное хранилище Selectel соответствует 152-ФЗ для обработки персональных данных 3 и 4 уровня защищенности. Обратите внимание, что безопасность системы определяется безопасностью самого слабого звена. Если контейнер с важными данными имеет слабый пароль, то никакие другие усилия не помогут сохранить данные в безопасности.
Другие преимущества объектного хранилища S3
Кроме высокого уровня безопасности и защиты персональных данных, в объектном хранилище Selectel есть другие преимущества.
→ Гибкая оплата. Объектное хранилище оплачивается по модели pay-as-you-go — каждый час списывается сумма за ресурсы, потребленные за это время.
→ Простота использования. Пользователь может подключиться к объектному хранилищу любым удобным способом. Через S3 API, Swift API и Selectel Storage API, протоколы FTP/FTPS, SFTP и панель управления Selectel.
→ Встроенная IAM-система. Вы сами управляете доступом к данным: можете выдавать его одним пользователям и ограничивать другим.
→ Настройки политик доступа. В объектном хранилище можно создать сервисного пользователя — учетную запись без доступа в панель управления, но с доступом к API и другим инструментам. Сервисному пользователю и себе (владельцу контейнера) можно разрешить разный набор действий.
→ Объектное хранилище обеспечивает отказоустойчивость — храним данные в трех экземплярах. Созданные копии размещаем на независимых друг от друга серверах в разных стойках.
Лимиты и квоты
Еще одно преимущество заключается в том, что лимиты контейнера клиент устанавливает самостоятельно. Можно установить ограничения на суммарный размер загружаемых файлов, их количество и время хранения в контейнере.
Всего одновременно можно совершать до 2 000 запросов в секунду — по S3 API и Swift API — и создавать до 2 000 контейнеров. Больше подробностей про лимиты и квоты читайте в документации.
Как начать работу с объектным S3-совместимым хранилищем
Объектное хранилище имеет множество интерфейсов для взаимодействия. Нередко говорят о S3-совместимом объектном хранилище. У этого хранилища есть собственный интерфейс доступа — S3 API. Любое хранилище, которое поддерживает обращения по S3 API, можно называть S3-совместимым.
Вернемся к интерфейсам взаимодействия с объектным хранилищем. Рассмотрим на примере объектного хранилища Selectel.
Доступ через веб-интерфейс
Панель управления позволяет выполнять простые операции над объектным хранилищем и контейнерами. Чтобы начать, следует перейти в раздел Объектное хранилище → Контейнеры → Создать контейнер.
При создании контейнера необходимо задать его имя, тип, класс хранения и тип адресами. Приватный контейнер предоставляет доступ только авторизованным пользователям. Обратите внимание, что тип контейнера можно редактировать после создания.
Чтобы загрузить файлы в контейнер, нажмите на его название, а затем Загрузить файлы. Обратите внимание, чтобы размер загружаемых файлов не превышал 100 МБ. Файлы большего размера нужно загружать сегментированной загрузкой.
Файлами могут выступать данные разных форматов: от txt до мультимедийного контента — аудио, видео, изображений. Можно загружать и архивные файлы форматов tar, tar.gz, tar.bz2 — они распакуются при загрузке. Если файлов слишком много, нужный можно найти через поиск.
Доступ по S3 API: загружаем файлы через Rclone
Для взаимодействия с S3 API требуется дополнительное программное обеспечение — например, aws-cli, S3cmd или Rclone. Задача последнего — синхронизация данных в хранилище и на локальной машине, что будет удобно и для резервного копирования, и для работы со статическими сайтами. Актуальная инструкция по подключению к S3 API объектного хранилища Selectel через Rclone находится в документации.
Полезные ссылки для размещения данных в хранилище S3
→ Как монтировать контейнер объектного хранилища как диск Windows