Фотографии, видео, резервные копии, документы, архивы и логи занимают все больше места. Хранить такие объемы на локальных дисках или обычных серверных накопителях не всегда удобно: приходится следить за свободным пространством, резервированием и доступностью данных. Для подобных задач существует объектное хранение. S3 объектное хранилище данных позволяет размещать большие объемы неструктурированной информации и обращаться к ней через API. При этом S3-совместимость дает возможность использовать привычные инструменты и программные библиотеки, даже если хранилище работает не в инфраструктуре AWS.
Что такое объектное хранилище
В файловой системе информация организована в виде файлов и каталогов. В объектном хранилище единицей хранения является объект — например, фотография, архив или видеозапись вместе с ее метаданными. Объекты помещаются в логические контейнеры, которые обычно называют bucket. Доступ к ним осуществляется через API, а приложение обращается к объекту по его идентификатору или ключу. Такой подход особенно удобен для данных, которые не требуется постоянно редактировать непосредственно на диске. Файл можно загрузить, получить по запросу, заменить новой версией или удалить.
Что означает S3-совместимость
S3 стал фактически стандартным интерфейсом для объектного хранения. Если провайдер заявляет совместимость с S3 API, разработчик может использовать знакомые SDK, CLI-инструменты и библиотеки вместо написания отдельной интеграции с нуля. Это существенно упрощает перенос приложений. Например, сервис уже умеет отправлять пользовательские изображения в S3-хранилище — при переходе на другого провайдера во многих случаях достаточно изменить параметры подключения и учетные данные. Совместимость, однако, не всегда означает полное совпадение возможностей. Перед переносом крупного проекта стоит проверить, какие именно операции, политики доступа, версии объектов и дополнительные функции поддерживает конкретное хранилище.
Где используют S3-хранилища
Один из самых очевидных сценариев — хранение медиаданных. Интернет-магазин может размещать фотографии товаров, видеосервис — записи роликов, а корпоративная система — документы и архивы. Другой распространенный вариант — резервное копирование. Объектное хранилище можно использовать как отдельный уровень инфраструктуры, куда регулярно отправляются копии баз данных, виртуальных машин и файлов. Чаще всего S3 подходит для:
- фотографий, видео и другого медиаконтента;
- резервных копий и архивов;
- логов приложений;
- документов и файлов пользователей;
- данных для аналитики и машинного обучения;
- статического контента веб-сервисов.
Чем S3 отличается от обычного диска
Главное различие — в способе доступа. К обычному диску сервер обращается через файловую систему, тогда как S3-хранилище предназначено для работы через сетевой API. Это означает, что объектное хранилище не стоит воспринимать как обычную папку, подключенную к серверу. Оно рассчитано на другой сценарий: приложение отправляет объект в хранилище, получает его по запросу и управляет им через API. Для большого количества файлов это может быть удобнее, чем постоянно расширять локальные диски. Кроме того, хранилище обычно можно масштабировать отдельно от вычислительной инфраструктуры.
Нужно ли покупать собственный сервер
Не всегда. Если задача заключается в хранении большого объема файлов, отдельный сервер с дисками может оказаться избыточным решением. Например, интернет-магазину нужны вычислительные ресурсы для сайта и отдельное пространство для изображений товаров. В такой архитектуре приложение может работать на виртуальной или физической машине, а изображения и резервные копии храниться в S3. Если же нужна полноценная вычислительная инфраструктура, можно арендовать сервер и дополнить его объектным хранилищем. Такой вариант позволяет разделить вычисления и хранение данных.
На что обратить внимание
Стоимость S3 обычно зависит не только от объема сохраненных данных. Значение могут иметь исходящий трафик, количество операций API и дополнительные функции. Перед подключением стоит выяснить:
- сколько стоит хранение одного объема данных;
- оплачивается ли исходящий трафик и по какой ставке;
- есть ли ограничения на размер объектов;
- поддерживаются ли версии и политики жизненного цикла;
- какие механизмы резервирования и защиты предусмотрены;
- насколько хорошо реализована S3-совместимость.
Особенно важно заранее оценить структуру расходов. Для архива, к которому обращаются несколько раз в месяц, и для видеосервиса с постоянной выдачей файлов экономика будет совершенно разной.
Объектное хранение хорошо подходит компаниям, которые работают с большим количеством файлов и хотят отделить их от вычислительных ресурсов. Сервер при этом занимается приложением и расчетами, а S3 — хранением объектов. Еще одно преимущество — переносимость. Если приложение построено на стандартном S3 API, сменить поставщика хранения в будущем обычно проще, чем переписывать систему под полностью уникальный интерфейс. Поэтому связка «сервер для вычислений + S3 для данных» может быть практичнее единой машины со всеми дисками.