🗓 8 октября 2025 💾 Хранилище

Object Storage: S3-совместимое хранилище нового уровня

Сегодня запускаем OpenHosti Object Storage — полностью S3-совместимое объектное хранилище со скоростью как у локального SSD, но с бесконечной масштабируемостью. Храните петабайты данных с 11 девятками durability (99.999999999%), платя в 3-5 раз меньше чем на AWS S3.

Архитектура хранилища

Наша система построена на современном distributed storage stack с erasure coding и smart tiering:

Storage layers
Hot tier — NVMe SSD для часто используемых данных (последние 30 дней активности)
Warm tier — SATA SSD для умеренного доступа (30-90 дней)
Cold tier — HDD для редкого доступа (90+ дней)
Glacier tier — Tape storage для архивации (минимум 180 дней)

Система автоматически перемещает данные между tier'ами на основе access patterns. Это происходит прозрачно — вы всегда обращаетесь по одному и тому же URL, независимо от физического расположения объекта.

Erasure coding
Вместо простой репликации (3 копии = 200% overhead) используем Reed-Solomon erasure coding. Схема 12+4 означает: данные разбиваются на 12 data chunks и 4 parity chunks. Можете потерять любые 4 chunk'а из 16 без потери данных. Storage overhead: всего 33% вместо 200%.

Для критичных данных поддерживаем схему 8+6 (можем потерять до 6 chunks) с overhead 75%. Это все еще дешевле репликации, но с гораздо более высокой надежностью.

Производительность

Object storage часто ассоциируется с медленным доступом. Не у нас:

Latency
• GET (hot tier): 2-5 мс для первого байта
• GET (warm tier): 8-15 мс
• GET (cold tier): 20-50 мс
• PUT: 10-30 мс до acknowledgment
• LIST: < 100 мс для результата (даже для buckets с миллионами объектов)

Throughput
• Single stream: 10+ GB/s (благодаря parallel chunk uploads)
• Aggregate per bucket: 100+ GB/s
• Small objects (< 1 MB): 500k+ operations/sec per bucket
• Large objects (> 1 GB): automatic multipart upload с параллелизацией

Секрет производительности — intelligent caching на нескольких уровнях. Метаданные кэшируются в Redis, hot data — в edge cache (120+ точек), а для prediction используем ML модель, которая pre-fetches объекты до того, как они понадобятся.

S3 API совместимость

Полная совместимость с AWS S3 API означает, что можете использовать любые существующие tools:

AWS SDK для всех языков (Python boto3, JavaScript aws-sdk, Go aws-sdk-go, etc)
CLI tools: aws-cli, s3cmd, rclone, mc (MinIO client)
GUI clients: Cyberduck, CloudBerry Explorer, S3 Browser
Backup tools: Duplicity, Restic, Borg, Veeam, Acronis
CDN integration: CloudFront, Fastly, Cloudflare (используя S3 origin)

Поддерживаемые операции включают все основные S3 APIs: GET/PUT/DELETE object, multipart upload, bucket lifecycle policies, versioning, CORS, bucket policies, pre-signed URLs, server-side encryption, object tagging, и многое другое.

Просто замените endpoint с s3.amazonaws.com на s3.openhosti.ru в настройках клиента — и все продолжит работать.

Умные lifecycle политики

Автоматизируйте управление данными через правила жизненного цикла:

Automatic tiering
Пример правила: "Перемещать объекты старше 30 дней в warm tier, старше 90 дней в cold tier, старше 1 года в glacier". Это происходит автоматически каждую ночь. Экономия storage costs может достигать 80%.

Intelligent tiering
Еще умнее — система анализирует access patterns и перемещает данные между tier'ами на основе фактического использования, а не жесткого расписания. Часто используемый файл остается в hot tier, даже если ему 2 года. Редко используемый мигрирует в cold уже через неделю.

Expiration rules
Автоматически удаляйте устаревшие данные: логи старше 90 дней, временные файлы старше 7 дней, backup'ы старше 1 года. Не нужно писать скрипты очистки — правила обработают все сами.

Versioning with cleanup
Включаете versioning для защиты от случайного удаления, но настраиваете правило: "Хранить только 10 последних версий" или "Удалять версии старше 30 дней". Это предотвращает бесконечный рост storage costs.

Безопасность и шифрование

Данные защищены на всех уровнях:

Encryption at rest
Все данные автоматически шифруются AES-256 перед записью на диск. Ключи управляются нашей Key Management Service (KMS), которая использует Hardware Security Modules (HSM) для защиты master keys. Rotation ключей происходит автоматически каждые 90 дней.

Для compliance требований поддерживаем BYOK (Bring Your Own Key) — вы генерируете и управляете ключами самостоятельно через свой KMS (AWS KMS, Azure Key Vault, HashiCorp Vault).

Encryption in transit
Весь трафик между клиентом и storage зашифрован TLS 1.3. Внутренний трафик между storage nodes также зашифрован (IPsec tunnels) для защиты от network sniffing.

Access control
Гранулярные права доступа через IAM policies: можете задать кто, к каким buckets, с какими операциями (read/write/delete), из каких IP ranges, в какое время суток имеет доступ. Policies поддерживают сложные условия (AND/OR/NOT) и wildcard patterns.

Audit logging
Каждое обращение к storage логируется: кто, когда, откуда, какой объект, какая операция, результат. Логи immutable (нельзя изменить даже админам) и доступны для compliance аудитов.

Geo-replication

Для критичных данных поддерживаем multi-region репликацию:

Cross-region replication (CRR)
Автоматически реплицируете объекты в другой регион. Настраивается per-bucket или per-prefix. Репликация асинхронная (latency 1-10 минут) или синхронная (latency 100-500 мс, но дороже). Use cases: disaster recovery, compliance (данные должны храниться в нескольких юрисдикциях), low-latency access из разных регионов.

Same-region replication (SRR)
Репликация в пределах одного региона, но в разные availability zones. Это дает защиту от datacenter failures без дополнительных egress costs. Идеально для production/staging синхронизации или для создания read replicas для high-throughput workloads.

Bidirectional replication
Два bucket'а в разных регионах реплицируются друг в друга. Это создает active-active setup, где можете писать в любой регион, и изменения автоматически синхронизируются. Conflict resolution настраивается: last-write-wins, versioning, custom merge logic.

Event notifications

Реагируйте на изменения в storage через event-driven архитектуру:

Event types
s3:ObjectCreated:Put — новый объект загружен
s3:ObjectCreated:CompleteMultipartUpload — завершена multipart загрузка
s3:ObjectRemoved:Delete — объект удален
s3:ObjectRestore:Post — начато восстановление из glacier
s3:ObjectRestore:Completed — восстановление завершено

Delivery targets
Webhooks — HTTP POST на ваш endpoint с JSON payload
Message queue — отправка в Kafka, RabbitMQ, AWS SQS
Serverless functions — триггер для edge functions или lambda
Email/Slack — уведомления команде о важных событиях

Use cases: автоматическая обработка загруженных файлов (resize images, transcode videos, extract metadata), аудит и мониторинг, синхронизация с другими системами, уведомления о backup'ах.

Analytics и insights

Понимайте как используется ваш storage:

Storage analytics
• Объем данных по buckets и prefixes
• Breakdown по storage classes (hot/warm/cold/glacier)
• Growth trends и прогноз на будущее
• Top largest objects/buckets
• Age distribution (сколько данных < 30 дней, 30-90, 90+)

Access analytics
• Request rate (GET/PUT/DELETE/LIST)
• Most/least accessed objects
• Geographic distribution запросов
• Error rates (404, 403, 5xx)
• Bandwidth usage (upload/download)

Cost analytics
• Storage costs по buckets
• Request costs
• Data transfer costs
• Recommendations по оптимизации (какие данные стоит перенести в cold tier)

Data processing integration

Обрабатывайте данные прямо в storage без необходимости скачивать:

S3 Select
SQL-like запросы для фильтрации данных на стороне storage. Пример: извлечь только записи за последнюю неделю из 100 GB CSV файла, при этом скачать только 500 MB relevant data. Поддерживаются форматы: CSV, JSON, Parquet, ORC.

Batch operations
Применяйте операции к миллионам объектов одновременно: массовое копирование, изменение storage class, добавление тегов, изменение ACL. Все это через один API call без необходимости итерировать по объектам в коде.

Glacier restore
Автоматически восстанавливайте объекты из glacier tier. Три режима: Expedited (1-5 минут, дороже), Standard (3-5 часов, средняя цена), Bulk (5-12 часов, дешевле). Объекты становятся доступны во временной hot копии на заданный период (1-30 дней).

Pricing

Прозрачное ценообразование без скрытых комиссий:

Storage costs (per GB per month)
• Hot tier: $0.020 (в 3x дешевле AWS S3 Standard)
• Warm tier: $0.012 (как AWS S3 Infrequent Access)
• Cold tier: $0.005 (как AWS S3 Glacier Instant Retrieval)
• Glacier tier: $0.001 (дешевле AWS S3 Deep Archive)

Request costs (per 1000 requests)
• PUT/POST/LIST: $0.005
• GET/SELECT: $0.0004
• DELETE/HEAD: бесплатно
• Lifecycle transitions: бесплатно

Data transfer
• Upload (ingress): бесплатно (всегда)
• Download в рамках одного региона: бесплатно
• Download в другой регион: $0.02/GB
• Download в интернет: $0.09/GB (первые 100 GB/месяц бесплатно)

Additional features
• Versioning: $0.020/GB для non-current versions
• Replication: цена target storage + $0.02/GB transfer
• Glacier restore: $0.01/GB для Standard mode

Migration tools

Переезд с других storage провайдеров максимально упрощен:

From AWS S3
Используйте наш migration tool, который параллельно копирует данные (до 10 GB/s) с сохранением metadata, permissions, versioning. Поддерживается incremental sync — можете несколько раз запускать миграцию, и будут копироваться только новые/измененные объекты.

From Google Cloud Storage
Прямая интеграция через GCS API. Mapping: GCS buckets → S3 buckets, GCS objects → S3 objects. Все storage classes автоматически маппятся в эквивалентные.

From Azure Blob Storage
Конвертация Azure containers в S3 buckets. Поддержка всех типов blobs (Block, Append, Page). Azure metadata сохраняется в S3 tags.

From on-premise storage
Установите наш sync agent (Docker контейнер), который мониторит локальную директорию и автоматически загружает новые файлы в Object Storage. Можете использовать как backup solution или для постепенной миграции в облако.

← Вернуться к блогу