惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
L
LangChain Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Y
Y Combinator Blog
爱范儿
爱范儿
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 司徒正美
博客园 - 叶小钗
NISL@THU
NISL@THU
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
IT之家
IT之家
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
G
Google Developers Blog
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
Spread Privacy
Spread Privacy
V
Vulnerabilities – Threatpost
T
Troy Hunt's Blog
Hugging Face - Blog
Hugging Face - Blog
S
Security @ Cisco Blogs
月光博客
月光博客
Latest news
Latest news
D
Docker
大猫的无限游戏
大猫的无限游戏
The Last Watchdog
The Last Watchdog
Know Your Adversary
Know Your Adversary
B
Blog
T
Threat Research - Cisco Blogs
The Hacker News
The Hacker News
GbyAI
GbyAI
W
WeLiveSecurity
H
Heimdal Security Blog
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Cyberwarzone
Cyberwarzone
Recorded Future
Recorded Future
Jina AI
Jina AI
Hacker News: Ask HN
Hacker News: Ask HN
Apple Machine Learning Research
Apple Machine Learning Research
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как мы в Selectel строим S3-хранилища: от железа до приложения
Александр Гришин · 2026-05-11 · via Все публикации подряд на Хабре

Средний

16 мин

13K

Современные S3-хранилища давно перестали быть «черным ящиком»: от их архитектуры напрямую зависят отказоустойчивость, производительность и экономика сервисов, которые на них опираются. Но за внешне простым API скрывается интересная, сложная, промышленная система — от железа в стойках до многослойного распределенного  приложения.

В этой статье разберем, как устроено промышленное объектное хранилище на практике: какие архитектурные решения лежат в основе, как достигается масштабируемость и где проходят реальные технические компромиссы.

Меня зовут Александр Гришин, я руковожу направлением хранения и обработки данных в Selectel. Отвечаю за развитие облачных баз данных, S3-хранилища, аппаратных СХД и сервисов для построения DLH.

Материал будет полезен CTO, CIO и архитекторам, которые выбирают или проектируют собственное S3-совместимое хранилище. Или инженерам которые хотят просто лучше понимать, что же происходит у нашего сервиса под капотом.

Погнали!

Зачем вообще объектное хранилище

Данные хранят все: микросервисы и монолиты, стартапы и крупный энтерпрайз, разработчики и инженеры. Для решения этой задачи индустрия предлагает множество инструментов:

  • блочные устройства — СХД по iSCSI или Fibre Channel,

  • файловые хранилища с POSIX-семантикой, 

  • объектные хранилища,

  • базы данных,

  • ленточные библиотеки и другие решения.

При этом данных становится все больше. Согласно публичным аналитическим отчетам, их объем данных растет на 20-30% год к году, и основную часть этого роста в последнее время обеспечивают неструктурированные данные в объектных хранилищах. Только объектные хранилища способны легко и просто масштабироваться до колоссальных объемов — миллиарды объектов, сотни и тысячи петабайт, сотен тысяч RPS.

Мир, можно сказать, захлебывается в огромном количестве данных. Источник.

Мир, можно сказать, захлебывается в огромном количестве данных. Источник.

Как следствие консолидации расходов на огромных масштабах, рыночная стоимость хранения в S3 сейчас составляет 1−2 ₽ за ГБ/мес. Для сравнения: размещение данных на виртуальных машинах, например для СУБД, обойдется уже в 15−30 ₽ за ГБ/мес на аппаратных СХД в районе 6-12 ₽ за ГБ/мес. 

Разумеется, компании быстро оценили преимущества Shared Storage и начали двигать индустрию в эту сторону. Netflix, AWS, Google — вот далеко не полный список ведущих контрибьюторов OpenSource‑проектов, обеспечивающих технологический переход от shared-nothing к shared-storage архитектуре.

Подробнее об этом тренде можно почитать в моей статье «Нобелевская премия по экономике 2025: почему это важно для рынка IT».

Разбираем термин по словам

Мы в Selectel не случайно используем термин «объектное облачное S3‑хранилище»: каждое слово в этом названии несет конкретный технический смысл.

Объектное

«Объектное» — это способ работы с данными. В отличие от блочных устройств, здесь нет побайтовой адресации и концепции offset. Если сравнивать с файловыми хранилищами, то нет файловой системы, привычной иерархии папок и поддержки POSIX-операций. Есть только объекты и доступ к ним по ключу.

То есть операции изменения не существует. Допускается только полное удаление и перезапись объекта целиком, даже если во всем гигабайтном объекте поменялись всего два байта. Это свойство позволяет масштабироваться до пределов, недоступных классическим файловым хранилищам.

Мой коллега подробно разобрал этот тип хранения в статье «Как работают объектные хранилища: объясняем на практике и собственных шишках».

Концептуальное отличие блочного, файлового и объектного хранилища.

Концептуальное отличие блочного, файлового и объектного хранилища.

Облачное

«Облачное» — значит доступное из любой точки мира через обычный интернет. Не нужно монтировать диск, настраивать специальный протокол или выделенную сеть. Если у вас есть интернет, то и доступ к хранилищу тоже есть.

Да, подключиться к хранилищу можно и через приватную сеть, без доступа в интернет. Однако это нетипичный способ использования S3, и о нем я подробнее расскажу ниже.

S3

Возможно, вы удивитесь, но S3 — термин не про само хранение. Он описывает интерфейс доступа к данным: протокол с методами GET, PUT, DELETE, HEAD и LIST. Его разработала компания Amazon примерно в 2006−2007 году, и с тех пор он стал общемировым стандартом.

Главная ценность S3 — унификация. Любой код, написанный для работы с Amazon S3, будет взаимодействовать с хранилищем Selectel и любым другим S3‑совместимым провайдером не требуя доработки. Благодаря такой унификации экосистема инструментов, которые поддерживают протокол S3, столь огромна: от rclone и aws-cli до Apache Spark, Trino, ClickHouse и почти любого современного аналитического движка.

Бесплатное S3-хранилище на 30 дней

Для всех, кто ранее не использовал услугу в Selectel.

Оставить заявку →

Как мы строим S3‑хранилище

Требования

Прежде чем строить, надо определить желаемый результат. Обычно для промышленного S3-хранилища индустрия ожидает:

  • мультирегиональность — минимум три независимые площадки (меньше трех — это уже не хранилище, а погребок);

  • масштабируемость — практически бесконечная емкость без ограничений;

  • готовность к высоким нагрузкам — способность одновременно обслуживать от тысяч до миллионов клиентов;

  • отказоустойчивость — все возможные домены отказа должны быть отработаны;

  • разные классы хранения — от «горячего» до «ледяного» для оптимального баланса между производительностью и стоимостью.

Теперь посмотрим, как это реализовано у нас.

«Техническое задание» на промышленное S3-хранилище.

«Техническое задание» на промышленное S3-хранилище.

Регионы, зоны доступности, ЦОДы

Инфраструктура Selectel размещается в трех регионах: Санкт-Петербург, Москва и Новосибирск. Физически это шесть собственных и нескольких партнерских дата-центров, которые образуют шесть автономных зон доступности (AZ).

Перед выбором места для размещения данных рекомендуется внимательно изучить документацию.

В зависимости от региона и пула могут отличаться: 

  • тип исполнения — Multi-AZ (надежнее) или Single-AZ (быстрее);

  • классы хранения — не во всех локациях представлен полный набор; 

  • уровни соответствия — согласно требованиям регламентирующих организаций.

Разберем на примерах. Пул «ru‑1» в регионе «Санкт-Петербург» размещается в группе ЦОД «Дубровка», объединяющей три отдельные площадки. Каждая из них оснащена автономными системами жизнеобеспечения:

  • электропитание — включая аккумуляторы и резервные дизель-генераторные установки;

  • сетевое оборудование — в том числе, оптико‑волоконные линии связи с резервированием данных;

  • системы охлаждения и пожаротушения.

Существенно, что они не разнесены друг от друга географически, а находятся в непосредственной близости — так минимизируется задержка сигнала. Согласно нашей спецификации, «ru-1» — это Single-AZ инсталляция S3 в одной зоне доступности. 

Single-AZ пул ru-1 развернут на базе трех дата-центров в поселке Дубровка Ленинградской области.

Single-AZ пул ru-1 развернут на базе трех дата-центров в поселке Дубровка Ленинградской области.

В Москве несколько пулов «ru-7», «gis-1» (группа ЦОД Берзарина) также имеют Single-AZ тип исполнения так как находятся в пределах одной зоны доступности. При этом «gis-1» — это специальный изолированный пул для государственных информационных систем, соответствующий требованиям 21‑го и 17‑го приказов ФСТЭК.

Также в столице представлен S3 в Multi-AZ типе исполнения — новый пул «ru-6». Он «из коробки» распределен между тремя зонами доступности и отрабатывает домен отказа AZ.

Три независимые зоны доступности расположены в Москве. Расстояние между образующими их дата-центрами составляет 10−15 км.

Мы строим услугу так, чтобы выход из строя одного ЦОД целиком оставался незаметным для клиентов на уровне S3. Да, иногда приходится сознательно добавлять избыточность. Мы храним самое ценное — данные, — и такой подход полностью оправдан.

Multi-AZ пул «ru-6» развернут на базе трех дата-центров в Москве, разнесенных на 10−15 км.

Multi-AZ пул «ru-6» развернут на базе трех дата-центров в Москве, разнесенных на 10−15 км.

Что внутри стойки

Типовая стартовая инсталляция нашего хранилища — это шесть стоек: три под Control Plane и три под Data Plane. Масштабируемся мы постоечно. Каждая стойка функционирует независимо и оснащена собственным сетевым и электрооборудованием, а внутри дата-центра они размещаются в разных автономных сегментах. Выход из строя определенного количества стоек никак не влияет на наших клиентов.

В одной стойке находится примерно 12 серверов. В среднем для поддержания работы облачного хранилища в одном регионе задействовано около 120 стоек и более 1 000 серверов.

Точные характеристики платформ мы не раскрываем. Однако типичный узел хранения — это определенное количество ядер CPU (чаще всего Intel Gold 6336Y, но сейчас мы активно тестируем платформы на AMD), достаточный объем оперативной памяти, четыре NVMe-накопителя под систему и метаданные, а также 60 дисков непосредственно под сами данные. Мы любим железо и отлично в нем разбираемся, поэтому уверены в оптимальности конфигураций, подобранных для нашего S3.

Чуть подробнее о концептуальных проблемах при подборе железа для хранения данных я рассказывал в статье «Memory wall: что это и почему важно для индустрии хранения данных».

60-дисковый сервер в стойке, используемый для хранения данных в S3.

60-дисковый сервер в стойке, используемый для хранения данных в S3.

Сейчас мы используем более 100 000 дисков одновременно в сочетании HDD и NVMe-накопителей — они отличаются по производительности, объему, назначению и, главное, по себестоимости хранения каждого байта.

Про классы хранения

Данные в нашей системе размещаются в Ceph — распределенной системе хранения на базе обычных серверов.

Подробно останавливаться на ней не буду, лучше сошлюсь на отличную статью коллеги «Ceph: разбираем базовые операции в кластере на примере интеграции с Hashicorp Nomad». Если объяснять совсем просто: технологию можно сравнить с RAID-массивом, только распределенным по сети. Мы работаем с Ceph с 2015 года и являемся контрибьюторами проекта.

Здесь важно упомянуть ключевой для этой статьи параметр — CRUSH Rules, политику защиты данных. Существует несколько ее видов, каждый из которых имеет свои плюсы и минусы. Разберем основные.

Репликация (×2, х3, и т. д.)

Такой вариант чем‑то похож на распределенный по сети RAID 1. Мы используем репликацию х3: исходный объект разбивается на чанки, и каждый из них дублируется трижды. Полученные копии распределяются по разным дискам, серверам и стойкам. 

Плюсы: алгоритм предельно простой, легкая процедура восстановления, высокая производительность на запись, предсказуемое поведение.

Минусы: оборудования нужно втрое больше.

Схематичное представление для replica set x3.

Схематичное представление для replica set x3.

Erasure Coding

Простая аналогия — распределенный по сети RAID 6. Объект разбивается на рабочие фрагменты, к которым добавляются контрольные. Этого достаточно, чтобы с помощью математических алгоритмов восстановить исходные данные, даже если часть оригинальных блоков окажется недоступна. Все полученные элементы распределяются по разным стойкам. EC, как и репликация, имеет разные конфигурации: 4+2, 8+2 и так далее.

Плюсы: оборудования нужно меньше, что особенно заметно на больших объемах данных.

Минусы: существенно усложняется эксплуатация.

Схематичное представление для EC 4+2.

Схематичное представление для EC 4+2.

Вывод: комбинируя тип накопителя (HDD или SSD NVMe), политику защиты данных, мы формируем необходимое количество классов хранения. Именно так появляются «горячее», «стандартное», «холодное» и «ледяное» хранилища. Для каждого из них подбираются оптимальные диски и настройки, чтобы сбалансировать производительность и стоимость.

Важная деталь: в нашей инфраструктуре работает далеко не один кластер Ceph. Под каждый класс выделяется отдельная инсталляция, причем даже в рамках одной категории их может быть несколько. Это позволяет при необходимости полностью исключать конкретный сегмент из процессов записи для технического обслуживания, перенаправляя новые данные на соседние. Кроме того, мы можем мигрировать информацию между кластерами для аппаратного апгрейда — абсолютно незаметно для пользователей, без даунтаймов.

Программная архитектура: layered design

Большинство компонентов системы мы разработали самостоятельно. В основном пишем на Go, но для нескольких чувствительных к производительности микросервисов выбрали Rust и C++.

В основе нашей архитектуры лежит подход Layered Design. Сложная система разбивается на независимые уровни, каждый из которых отвечает за свою часть логики и взаимодействует с соседними через API. При этом под каждый такой слой и отдельный компонент выделяется собственное оборудование.

Схематичное представление программной архитектуры нашего S3‑хранилища.

Схематичное представление программной архитектуры нашего S3‑хранилища.

Уровень 1 — Data Layer (фундамент)

Это основа всей системы. Она включает два компонента.

1. Ceph — о нем мы уже говорили выше: этот слой отвечает за физическое размещение данных на серверных дисках.

2. Object Storage Service (OSS) — отвечает за метаданные: содержит информацию о клиентах, проектах, бакетах и объектах. OSS обрабатывает операции создания и удаления, а также обеспечивает согласованность действий между уровнями S3 и Ceph.

В качестве базы данных для этого сервиса мы используем шардированные кластеры PostgreSQL c роутером запросов на базе pg_fdw. Наше решение позволяет масштабировать клиентскую нагрузку в разных бакетах, префиксах, папках на разное железо. Благодаря чему мы можем добиваться сотен тысяч RPS на уровне S3. К слову, если в комментариях будет интерес, в будущем мы подробнее расскажем об этом ноу-хау.

Data Layer отвечает за масштабируемость и отказоустойчивость всей платформы. Сейчас мы обслуживаем сотни петабайт клиентских данных в публичном хранилище и, учитывая текущие темпы роста, скоро перешагнем рубеж в тысячу.

На этом же уровне реализована мультитенантность: мы распределяем нагрузку от различных проектов, бакетов и даже их внутренних префиксов по независимым физическим устройствам. Это позволяет успешно «расшивать» узкие места серверных платформ и их комплектующих.

Уровень 2 — API Layer

S3 API — это наша собственная реализация одноименного протокола. Она обеспечивает совместимость с тем самым прикладным кодом, который уже работает с любым S3-совместимым хранилищем в мире.

На этом уровне мы отказались от решений open source, поэтому полностью контролируем развитие компонента. Это позволяет нам гарантировать главную ценность продукта — надежный интерфейс доступа к данным.

О наших разработках в этом направлении мы регулярно рассказываем в блоге. Сегодня хочу подсветить два обновления, подробно разобранных моим коллегой:

Selectel Storage API — это наш собственный интерфейс рядом с S3-протоколом. Он реализует дополнительную бизнес-логику, не нарушая спецификацию Amazon: работу с клиентскими доменами, поддержку SSL-сертификатов, мониторинг, настройку политик доступа и интеграцию с панелью управления. 

Важный нюанс: стандарт S3 нельзя изменить — он глобально унифицирован. Однако специфическую функциональность — работу с логами, мониторинг, кастомные домены — нужно было где-то реализовать, не нарушая обратную совместимость. Для этого и существует SS API.

Важное ноу-хау нашей реализации S3-хранилища — это мультирегиональность (не путать с характеристикой Multi-AZ). Она дает возможность создавать бакеты и хранить данные в разных регионах в соответствии со спецификацией Amazon S3.

Таким образом, мы поддерживаем глобальный S3-эндпоинт (s3.storage.selcloud.ru) для работы, а также набор региональных S3-эндпоинтов для прямого обращения к конкретным сегментам:

Мы предоставляем пользователям важную возможность — управлять размещением своих данных. Это необходимо, когда вычисления происходят в конкретном пуле или ЦОДе и расстояние становится существенным. Другой популярный сценарий — настройка disaster recovery между разными площадками или городами.

Пример из интерфейса: этот бакет создан в московском пуле ru-7. К данным в нем можно обращаться как по глобальному, так и по региональному эндпоинту.

Пример из интерфейса: этот бакет создан в московском пуле ru-7. К данным в нем можно обращаться как по глобальному, так и по региональному эндпоинту.

Уровень 3 — Proxy Layer

Это точка входа для всех клиентских запросов, состоит из двух компонентов.

Public Proxy — отдельный слой физических серверов. Он принимает весь публичный трафик, балансирует нагрузку, кэширует данные, защищает от DoS-атак и обеспечивает сетевую связность.

Private Proxy — выполняет те же функции, но работает изолированно для конкретного клиента. Применяется в случаях, когда заказчик не хочет передавать трафик через публичный интернет. Этот прокси обрабатывает запросы только из приватных пользовательских сетей и подключается через Direct Connect или глобальный роутер Selectel.

Именно наличие Private Proxy позволяет нам создавать выделенные хранилища для крупных клиентов, организуя прямой оптический канал непосредственно до их инфраструктуры.

Обычно доступ к S3 осуществляется по публичному адресу. Однако с помощью глобального роутера можно организовать приватную сеть до S3-хранилища в том же регионе, где находятся вычислительные ресурсы клиента.

Обычно доступ к S3 осуществляется по публичному адресу. Однако с помощью глобального роутера можно организовать приватную сеть до S3-хранилища в том же регионе, где находятся вычислительные ресурсы клиента.

Такие хранилища, хотя физически и располагаются в нашем ЦОД, технически являются частью инфраструктуры заказчика: под них отводятся выделенные стойки, серверы и сетевое оборудование.

Подобная инсталляция S3 полностью изолирована от любой другой инфраструктуры, и использует прямой канал связи до дата-центра клиента. Такая архитектура позволяет соблюдать строгие внутренние регламенты организаций (вплоть до ГОСТ 57580 и др) и безопасно размещать чувствительные данные на базе нашего S3.

Облачная инфраструктура для ваших проектов

Виртуальные машины в Москве, Санкт-Петербурге и Новосибирске с оплатой по потреблению.

Подробнее →

Два реальных кейса: горячее и холодное хранилище

Архитектуру лучше всего рассматривать на живых примерах. Приведу два совершенно разных кейса, в рамках которых мы развернули приватные хранилища под задачи конкретных заказчиков.

Кейс 1: видеохостинг и холодное хранилище на 120 ПБ

Задача: организовать хранение огромных объемов видеоконтента максимально экономично.

Первичное ТЗ от заказчика:

  • регион — Москва;

  • объем: на старте — 40 ПБ, планируемый рост до 120 ПБ в течение первого года;

  • производительность — до 40 000 RPS, пропускная способность — до 100 Гбит/с;

  • архитектура — Multi-AZ (три автономные зоны доступности);

  • бизнес-требования — минимальная стоимость хранения гигабайта, приоритет надежности над производительностью.

Архитектурное решение: большой объем данных при невысокой нагрузке на диски — это идеальный сценарий для использования HDD в связке с алгоритмом Erasure Coding. Соотношение стоимости и емкости в таком варианте оптимально. Под проект была развернута выделенная инсталляция: отдельные стойки, серверное и сетевое оборудование предназначены исключительно для этого заказчика.

Профиль нагрузки в приватном хранилище для видеохостинга. Инсталляция Multi-AZ, HDD-накопители, алгоритм защиты данных — EC 8+2.

Профиль нагрузки в приватном хранилище для видеохостинга. Инсталляция Multi-AZ, HDD-накопители, алгоритм защиты данных — EC 8+2.

Результат:

  • нагрузка — стабильно держится на уровне ~60 Гбит/с, в пиках достигает 70 Гбит/с. Следовательно, у системы остается хороший запас по производительности.

  • масштабирование — объем клиентских данных вырос с 8 до 26 ПБ всего за полтора месяца. Если разделить этот прирост на время, получатся те самые стабильные 70 Гбит/с.

  • срок реализации проекта — два месяца.

Кейс 2: Data Lakehouse и горячее хранилище на 1 ПБ

Задача: построить корпоративное озеро данных на базе Redash, Trino, Iceberg, Airflow и Spark.

Первичное ТЗ от заказчика:

  • регион — Москва;

  • объем — до 1 ПБ, рост в ближайшее время не предполагается;

  • архитектура — Single-AZ (однозональная инсталляция);

  • производительность — на старте до 200 000 RPS и пропускная способность до 200 Гбит/с, с возможностью дальнейшего кратного масштабирования;

  • бизнес-требования — максимальная производительность без ограничений по бюджету; бизнес-процессы, базирующиеся на дата-платформе, должны работать без задержек.

Архитектурное решение: для столь небольшого объема данных при довольно высокой нагрузке мы решили использовать NVMe-накопители, а в качестве алгоритма защиты данных — трехкратную репликацию (RFx3). Тесты профиля нагрузки заказчика показали, что Erasure Coding в данном случае не подходит. Причина — более медленные операции записи и чтения файлов Parquet с метаданными Iceberg при таком паттерне запросов.

Профиль нагрузки в приватном хранилище для дата-платформы DLH. Инсталляция — Single-AZ, накопители — NVMe, алгоритм защиты данных — RFx3.

Профиль нагрузки в приватном хранилище для дата-платформы DLH. Инсталляция — Single-AZ, накопители — NVMe, алгоритм защиты данных — RFx3.

Пики до 150 Гбит/с на графике — это моменты, когда движок Trino массово вычитывает файлы Parquet. Именно поэтому для этого проекта мы выбрали NVMe-накопители.

Результаты в продакшене:

  • нагрузка — интервальная (считаем, что движок Trino именно так и работает — пачками), в пиках достигает 150 Гбит/с и 120 000 RPS;

  • масштабирование — развернуто Single-AZ хранилище с возможностью дальнейшего увеличения производительности до 200 000 RPS, 200 Гбит/с и выше;

  • срок реализации проекта — 1,5 месяца.

Что еще важно знать

Роль S3 в ML

Объектное хранилище в машинном обучении — стандартная практика. Объектное хранилище в ML-стеке закрывает сразу несколько ролей.

  • Хранение сырых данных для обучения — таких как, документы, видео, логи и любая другая неструктурированная информация. Их нужно где‑то разместить до тренировки модели, и S3 с этим отлично справляется.

  • Размещение векторных данных и эмбеддингов для RAG-систем. Большие массивы векторов при хорошем соотношении стоимости и объема — это именно S3.

  • Сохранение промежуточных артефактов — чекпоинтов, снапшотов, частичных результатов обучения.

  • Инференс в продакшне — сами веса моделей, словари, конфигурации размещаются в S3 и загружается при старте сервиса.

  • Доставка сгенерированного контента до пользователя — S3 отлично подходит не только для хранения, но и для раздачи результатов работы LLM, таких как текстовые документы, PDF, графики, презентации и тому подобное.

Для заказчиков, работающих с Big Data, AI/ML и GPU-нагрузками, важно, чтобы данные были не только надежно сохранены, но и располагались максимально близко к вычислительным ресурсам. Именно поэтому в нашей инфраструктуре S3 и вычислительные сервисы — Managed Kubernetes, DAVM, GPU-серверы — разворачиваются в одних и тех же регионах. Кстати, исходящий трафик из S3-хранилища к другим сервисам внутри Selectel совершенно бесплатен.

Мультирегиональность и георезервирование

Резервирование в пределах одного региона — это несколько ЦОД внутри одной группы. Эта задача уже решена на уровне нашей инфраструктуры. Например, пул «ru‑1» охватывает три независимых дата-центра «Дубровка» — выход из строя любого из них останется незаметным для пользователей S3. Пул ru-6 — это три независимых московских дата-центра в исполнении Multi-AZ, разнесенных на 10–15 км друг от друга.

Если рассматривать географически распределенное резервирование как удаленные друг от друга регионы, например Москва и Санкт-Петербург, то тут организация асинхронной репликации данных между регионами ложится на плечи заказчика. Но сделать это несложно: любой S3-совместимый инструмент — будь то rclone, AWS CLI или аналоги — позволяет настроить асинхронную синхронизацию парой команд в CLI. Достаточно просто создать бакеты в нужных регионах.

Выделенное S3-хранилище: когда публичного облака недостаточно

Публичное облако — это правильный старт для большинства задач. Однако есть сценарии, где нужен другой подход. Причины чаще всего следующие:

  • строгие требования к безопасности и изоляции данных — например, в финансовом секторе, медицине или государственных структурах;

  • очень большие объемы данных, когда собственная инсталляция экономически выгоднее;

  • нестандартные требования к производительности, классам хранения или топологии сети.

В таких случаях кластер развертывается в наших дата-центрах и обслуживает исключительно данные одного клиента. При необходимости можно объединить выделенное S3‑хранилище с внешним ЦОД или другими сервисами через Direct Connect или L3 VPN.

Если ваша задача выглядит похожей — приходите, проработаем архитектуру под ваш профиль нагрузки.

Измеряете ли вы производительность в IOPS?

Нет, и это правильно. IOPS — метрика для дисковой подсистемы, а производительность S3-хранилища корректнее измерять в RPS (запросах в секунду) и пропускной способности (Гбит/с). Нагрузку можно масштабировать на любое количество дисков и серверов, поэтому IOPS конкретного диска — не та цифра, на которую стоит ориентироваться при выборе хранилища.

Насколько Ceph надежен?

Проблемы с Ceph, о которых говорят в сообществе, обычно связаны с неправильной эксплуатацией. Причины могут быть самые разные:

  • была неверно выбрана политика защиты данных,

  • сэкономили на железе,

  • несвоевременно реагировали на алерты,

  • провели неудачный апгрейд самого Ceph.

Мы используем только стабильные версии и обновляем ПО согласно нашей стратегии апгрейдов. Такая политика гарантирует достаточную испытанность версии сообществом — а это не меньше, чем полгода..

Кстати, наши инженеры — контрибьюторы проекта Ceph. Мы тоже участвуем в его развитии.

SLA

SLA на доступность — 99,95%. SLA на возмещение — 100%. Согласно нашему пользовательскому соглашению мы возмещаем ущерб при недоступности данных по любой причине. Мы считаем что RTО у нас максимально близко к нулю — ведь наша архитектура специально проектируется так, чтобы выход из строя любого элемента был незаметен для клиента.

Как устроена оплата?

Четыре составляющих, по потреблению:

  • хранение (₽/ГБ·месяц),

  • исходящий трафик за пределы инфраструктуры Selectel,

  • GET-запросы (чтение),

  • PUT-запросы (запись).

Входящий трафик — бесплатно. Трафик между сервисами внутри Selectel — бесплатно.

Рассказывать о нашем S3‑хранилище можно очень долго — архитектура живет и развивается уже больше 12 лет. Лучший способ понять ее — протестировать ее на практике. Для тех, кто еще не пользовался нашим сервисом, действует тестовый период — 30 дней бесплатного хранения без ограничений по объему.

Пишите в комментариях, какую часть архитектуры — шардинг метдаданных в oss на базе PostgreSQL, настройку балансировки запросов на proxy-layer или тюнинг Ceph — разобрать в следующей статье.