Привет, Хабр! Меня зовут Антон Аплемах, и я владелец продукта cloudfort в облачном провайдере beeline cloud. В блоге на Хабре и в нашем медиа мы рассказываем про open source, тренды в разработке программного обеспечения и облачные технологии. И сегодня я хочу поговорить про хранилища S3, запуск и настройка которых — нетривиальная задача. Какие услуги на основе объектных хранилищ использует бизнес (включая наш новый продукт cloudfort), и что учитывать при выборе решения.
Взять и построить S3
Управление теплом — буквальным и не только. Основу хранилищ S3 составляют тысячи жёстких дисков, размещенных в стойках дата-центра. Ожидаемо, большие объёмы оборудования в одном месте имеет тенденцию к нагреву. Когда HDD перегревается, он начинает сбоить, а его механические компоненты быстрее изнашиваются — то есть возрастает частота отказов. Рабочая температура современных накопителей корпоративного класса держится на уровне 40°C. И принято считать, что за каждые 5°C свыше этого порога, failure rate увеличивается на 30%.
В «горячих» условиях дата-центров пороговая температура в 40°C достигается быстро. Поэтому инженеры проектируют машинные залы таким образом, чтобы эффективно отводить нагретый воздух от накопителей. Так, исследования показывают, что дата-центры тратят около половины из используемой ими энергии на охлаждение железа.
Помимо температуры, еще один фактор, влияющий на надежность жестких дисков — это нагрузка. Хранилище S3 представляет собой кластер, к которому с разной интенсивностью обращаются клиенты. Каждый накопитель способен обработать ограниченное количество I/O-операций. Так, из-за неравномерного распределения запросов часть устройств оказывается перегружена сильнее других. Процессы «зависают» в очереди, создавая избыточную задержку для всего хранилища. Чтобы сократить влияние этого эффекта, провайдеры S3-сервисов оптимизируют размещение данных с целью минимизировать количество «точек напряжения». Что интересно, здесь в дело вступает эффект масштаба, который помогает сглаживать пиковые моменты. Чем больше дисков использует дата-центр — тем сильнее выравнивается общий уровень нагрузки. Существуют и другие механизмы, позволяющие сгладить скачки I/O- нагрузки и повысить энергоэффективность хранилищ.
Например, в продукте cloudfort мы реализовали систему горячего хранения для буферизации большого количества запросов. Дело в том, что изначально при настройке собственной платформы мы столкнулись с проблемой. В определённые моменты времени данные просто не успевали записываться на серверные HDD. Тогда мы предусмотрели промежуточное хранилище на твердотельных SSD-дисках, из которого постепенно «перекачиваем» данные в холодное хранилище. Также мы реализовали механизм параллельной записи на несколько HDD дисков.
Репликация и подходы к чтению. В системах хранения данных обычно используют схемы избыточности, призванные защитить информацию при аппаратных отказах, но избыточность также помогает распределять нагрузку — считывать данные с разных дисков, на которых лежат одинаковые объекты. В cloudfort мы предусмотрели механизм параллельной записи на несколько HDD-накопителей, включая трёхкратную репликацию, которая дает еще одно преимущество — возможность проводить обслуживание дисков без перерывов в работе сервиса.
Все данные распределены между тремя независимыми дата-центрами в Москве. В ближайшее время мы дополним их четырьмя новыми ЦОД в Ярославле. Их уровень надёжности соответствует стандарту Tier III. Наши дата-центры работают на сетях сразу нескольких интернет-провайдеров, что позволяет обойтись без прерываний из-за сбоев у отдельных поставщиков услуг. За счет этого наш SLA держится на уровне 99,99%.
В то же время большие хранилища данных представляют собой крайне неоднородную среду, где производительность каждого отдельного диска может отличаться. Распределение объектов между несколькими дисками позволяет сгладить негативный эффект. Данные каждого отдельного пользователя занимают лишь небольшой объём на накопителях, в момент пиковых нагрузок запросы равномерно распределяются по всему хранилищу.
В целом репликация — дорогое удовольствие, так как копии данных занимают дополнительное место. И чтобы не полагаться только на них, операторы объектных хранилищ применяют алгоритмы коррекции ошибок. Одним из частых примеров является код Рида — Соломона.
Кому подойдёт такого рода хранилище
Объектные хранилища S3 плохо подходят для работы со структурированными данными, но хорошо проявляют себя на задачах, связанных с хранением больших объёмов неструктурированных данных, различных аналитических материалов, статистики, медиаконтента. В S3 отсутствует иерархическая структура, что упрощает извлечение файлов за счет присваивания метаданных каждому фрагменту данных. Благодаря плоской структуре хранения система легко масштабируется.
Так, один из наших клиентов интегрировал S3-сервис со своей внутренней системой и держит в нем платежные данные. В то же время мы в beeline cloud держим на этой платформе порядка 440 Тбайт данных. Другой частый кейс использования объектных хранилищ — работа с бэкапами и логами. Еще один наш клиент загружает в систему логи для дальнейшего анализа, также используя её как озеро данных для рекламных событий.
Что касается масштабов организаций, то объектные хранилища S3 подойдут компаниям самых разных размеров. Бизнесу со слабой технической экспертизой объектное хранилище в облаке позволит сэкономить на собственной инфраструктуре. Мы в beeline cloud также готовы предложить и разработать дополнительную функциональность по запросу и при необходимости помочь с интеграцией объектных хранилищ в корпоративную инфраструктуру. Для предприятий с собственными ИТ-подразделениями поставщики услуг предоставят широкий набор сервисов в личном кабинете, возможность интеграций по API, а также единый интерфейс получения данных биллинга.
Как начать работу с S3
Один из вариантов — развернуть объектное хранилище on-premise. Самостоятельное развёртывание S3-хранилища on-premise позволит работать в пределах закрытой сети с практически мгновенным доступом к объектам и простой масштабируемостью. В этом случае необходимо определить бюджет, закупить подходящее оборудование, создать команду для обслуживания и поддержки решения и развернуть специальное программное обеспечение. Его придется или отдельно докупить, или разработать.
При выборе решения нужно будет обратить внимание на специфику бизнеса, масштабируемость инфраструктуры. Даже после настройки базовой инфраструктуры необходимо обеспечивать надёжность и безопасность содержания данных, включая резервное копирование и защиту от утечек. Решение должно работать с оптимальной производительностью и скоростью доступа, быть совместимым с системами компании для беспроблемной интеграции. Также надо учитывать квалификацию и опыт специалистов, которые будут ответственны за развертывание и обслуживание on-premise сервиса S3. А со стороны разработчика ПО — выбирать решения с поддержкой и обновлением. Подобного рода экспертиза есть далеко не у каждой компании.
В большинстве случаев проще купить готовое решение у провайдера. Например, наша S3-платформа построена на базе собственного программного обеспечения — DEPOT. Оно объединяет возможности объектного хранилища с набором инструментов для работы с контентом. Мы решили разработать собственную систему, когда клиентам потребовалась определённая функциональность, которую не могли предоставить альтернативные продукты на отечественном рынке. Их нельзя было адаптировать под конкретные запросы, а техподдержка разработчиков была медленной и неэффективной.
Сам по себе S3 представляет достаточно старый интерфейс, полная поддержка которого является избыточной. Мы взяли наиболее востребованные опции, а остальные возможности протокола оставили «за бортом». Периодически появляются клиенты, которым требуются опции, не поддерживаемые базовым ПО. В таких ситуациях мы внедряем необходимые вызовы, функции и «ручки» в частном порядке. Как пример: клиент до начала сотрудничества использовал ListObjects, а мы реализовали вызов ListObjectsV2 и проработали вопросы совместимости.
Безусловно, у нас много конкурентов. Но мы стараемся быстрее «допиливать» нашу систему, предоставлять более оперативную техподдержку. В нашей платформе cloudfort есть также встроенная CDN с собственным балансировщиком нагрузки. Поддерживается S3 API, SFTP, Rest API, Web GUI, интегрированы готовые инструменты для транскодирования медиаконтента, проведения live-трансляций, защиты от DDoS и не только. У нас также реализована «чанковая» загрузка, что позволяет отправлять в облако объекты без ограничений по объёму. Мы не берём плату за GET- и POST-запросы, а также исходящий трафик.
С точки зрения безопасности можно отметить, что cloudfort хранит все данные на территории РФ и входит в реестр отечественного софта. Сервисы поддерживают шифрование объектов с key-менеджментом систем и позволяют клиентам встраивать их KMS при запуске хранилища. На уровне учётных записей cloudfort умеет работать с изоляцией отдельных аккаунтов, возможными способами авторизации (JWT Token для API и S3 Credentials). Внутри учётной записи можно создавать пользователей с ограничениями, устанавливать права на чтение и доступ к определённым директориям и сервисам, а также настраивать многие другие политики.
Если ваша команда или компания задумывалась о переходе на S3-хранилище, но пока не определилась с провайдером, напишите в комментариях, на что вы обращаете внимание, сравнивая варианты, какие особенности есть у вашего проекта. А я постараюсь рассказать, чем мы могли бы помочь, и ответить на другие вопросы по поводу нашего сервиса.
beeline cloud — secure cloud provider. Разрабатываем облачные решения, чтобы вы предоставляли клиентам лучшие сервисы.