Единственное различие, которое решает исход миграции
У Azure Blob Storage свой собственный API, свои SDK, своя аутентификация и свои понятия — контейнеры вместо бакетов, blob'ы вместо объектов. Наше объектное хранилище говорит на S3 API — интерфейсе, который уже реализует почти любой другой инструмент в экосистеме.
Именно в этом настоящая работа миграции, и здесь стоит быть прямолинейным: если ваше приложение общается с Blob через Azure SDK, вам придётся поменять этот слой. Если оно общается с Blob через прослойку совместимости, или если вы ещё выбираете, вы просто выбираете интерфейс, вокруг которого больше инструментов: aws-cli, mc, rclone, boto3, s3cmd и любой инструмент резервного копирования, который когда-либо обзавёлся поддержкой S3.
Всё остальное — ожидания по надёжности хранения, публичные или приватные объекты, привычки жизненного цикла — переносится концептуально. Решает именно API.
Где лежат данные — решаете вы
Azure просит вас выбрать регион, и в зависимости от того, какой вы выберете, данные могут оказаться вне юрисдикции, которая заботит вашу юридическую службу. Вопрос здесь тот же самый, и ответ тоже: вы сами выбираете страну или регион, где хранятся ваши данные. У нас есть узлы хранения в Турции, в Европе и в США, и ваши бакеты размещаются там, где нужно вам, а не там, где случайно оказался наш первый дата-центр.
Этот выбор обычно определяют две разные потребности, которые тянут в противоположные стороны. Комплаенсу нужны данные в конкретной юрисдикции — для турецкой компании, отвечающей на вопросы KVKK, «в Турции» — гораздо более короткий ответ, чем абзац про механизмы трансграничной передачи. Задержке нужны данные рядом с теми, кто их читает. Решать обе задачи на уровне самого хранилища не обязательно: разместите объекты там, где требует комплаенс, а публичные пусть отдаёт CDN с ближайшего к посетителю edge.
Если у вас есть требование по юрисдикции, скажите нам до того, как начнёте загружать данные, — разместить бакет в нужном регионе с первого дня не стоит ничего, а переносить терабайты позже — совсем не бесплатно.
CDN перед бакетом, из той же панели
В Azure storage account и CDN-профиль — это отдельные продукты, которые вы соединяете сами. Здесь бакет и CDN — один и тот же аккаунт: вы направляете хост на бакет, задаёте правила кэша для путей, которые этого заслуживают, и очищаете кэш точно так же, как для любого другого origin, — из панели, через API или CLI.
Больше всего это важно для скучных случаев. Изображение товара, которое поменялось, очищается по пути. Целая папка очищается по префиксу. Ключ кэша тот же самый, что уже определён в ваших правилах доставки, так что никакой отдельной ментальной модели для «CDN для хранилища» не нужно.
Тарифы, которые понятны без калькулятора
Счета за облачное хранилище обычно приходят по частям: хранилище, затем исходящий трафик, затем операции, затем отдельная строка за CDN спереди. Каждая часть по отдельности небольшая, а вместе — удивляют.
Здесь хранилище и доставка тянут из одного месячного пула: трафик, который вы отдаёте, и хранилище, которое вы занимаете, считаются вместе против купленного вами тарифа, а цена — в турецких лирах по турецкому счёту-фактуре. Мы не будем публиковать таблицу сравнения с текущими тарифами Azure, потому что эти тарифы меняются, а устаревшая таблица на странице вендора хуже, чем её отсутствие. Посмотрите свой собственный счёт от Azure за месяц, а затем — на страницу тарифов здесь; это единственное сравнение, которому стоит доверять.
Что есть у Azure, а у нас нет
Честная страница сравнения обязана включать и эту часть.
У Azure десятки регионов по всему миру, а у нас нет — мы предлагаем хранилище в Турции, Европе и США, и это покрывает большинство требований, но не все. У Azure есть архивный и «холодный» тиры со своей экономикой; наше хранилище — один тир. Azure встроен в экосистему, где blob-хранилище — строительный блок для десятков других сервисов Azure; если ваша архитектура опирается на них, уход означает распутывание не только хранилища.
Причина для переезда конкретная, а не универсальная: вам нужен S3 API, вам нужно самим выбирать юрисдикцию и получать за неё турецкий счёт-фактуру, вам нужны CDN и бакет под единым управлением, и вам не нужна окружающая экосистема. Если это не ваш случай, остаться на Azure — разумный ответ, и мы лучше скажем это прямо, чем продадим вам миграцию.
Часто задаваемые вопросы об альтернативе Azure Blob
Ваше хранилище совместимо по API с Azure Blob?
Нет, и ни один S3-совместимый провайдер не совместим. У Blob свой собственный API. Наше реализует S3 API, так что вся работа миграции — в том слое приложения, который общается с хранилищем. Инструменты, которые уже говорят на S3, — aws-cli, rclone, mc, boto3 — работают без изменений.
Как перенести существующие данные?
Обычный путь — rclone: он говорит и на Azure Blob, и на S3, так что одна задача копирования переносит контейнер в бакет. Для больших объёмов запускайте его с машины с хорошей связностью к обоим концам и после переноса проверяйте контрольными суммами.
Могу ли я сохранить свой домен для файлов?
Да. Направьте хост на бакет через CDN, и публичные URL останутся на вашем собственном домене с автоматическим SSL, а не на домене хранилища, принадлежащем провайдеру.
Где физически хранятся данные?
Там, где вы выберете. У нас есть хранилище в Турции, в Европе и в США, и бакет размещается в том регионе, который вы попросите. Для турецкой компании это обычно означает Турцию, потому что вопрос KVKK превращается в местоположение, а не в объяснение, — но если ваши пользователи или аудиторы находятся в другом месте, скажите об этом при настройке аккаунта.
Что происходит с расходами на исходящий трафик?
Трафик, который вы отдаёте, засчитывается в тот же месячный пул, что и остальная ваша доставка, а не приходит отдельной строкой за исходящий трафик. Если большинство ваших объектов публичны и кэшируются на edge, обращение к origin происходит один раз, а повторный трафик отдаёт edge.