К основному содержимому
#Architecture

[1/2] How AWS S3 is built (Рубрика Architecture)

#Architecture #Culture #Management #Leadership #Processes #Engineering #Software #DistributedSystems #SystemDesign

Интересный выпуск подкаста "The Pragmatic Engineer", в котором Gergely Orosz общается с Mai‑Lan Tomsen Bukovec, VP of Data & Analytics в AWS, которая руководит развитием/эксплуатацией S3. А Simple Storage Service - это одна из самых масштабных систем в мире, поэтому из этого обсуждения можно извлечь много интересного

1️⃣ Масштаб, который ломает интуицию В S3 сотни миллионов транзакций в секунду, 500+ трлн объектов, сотни эксабайт данных. Интересно, что Gergely и Mai‑Lan говорят о том, что сложенные в стопку десятки миллионов дисков в S3 почти смогут достать до МКС

2️⃣ Переход к strong consistency - как крутая инженерная миграция S3 стартовал с eventual consistency (2006), но затем перешёл к strong consistency без ухудшения доступности и без удорожания для клиентов. Архитектура была примерно такой: replicated journal + протокол когерентности кеша с идеей failure allowance

3️⃣ Тихий переход на Rust в критическом request path Команда переписала почти всё performance‑critical в обработке запросов на Rust, с мотивацией: максимум perf и минимум latency

4️⃣ 11 девяток durability - это "измерение факта", а не обещания Durability уровня 99.999999999% поддерживается не магией, а флотом фоновых сервисов: микросервисы аудита, которые непрерывно проверяют каждый байт, и отдельные repair‑механизмы, которые автоматически чинят.

5️⃣ Формальные методы - это production‑практика, а не академические изыски В S3 активно используют формальные методы верификации: при изменениях в подсистеме индексов/консистентности запускаются автоматические формальные проверки, чтобы не было регресса модели. И это не просто слова: в публикации Amazon Science про "lightweight formal methods" описан опыт, где такие методы помогли не пустить в прод 16 проблем

6️⃣ Главный враг сегодня - correlated failures Одиночные поломки нормальны, но опасны коррелированные отказы: общий rack/AZ/питание/и т.п. Архитектура строится вокруг борьбы с этими корреляциями: репликация по AZ, quorum‑подходы, физическая/логическая декорреляция, хранение копий в разных fault domain

7️⃣ Сотни микросервисов - и многие из них не про трафик В эпизоде фигурирует порядок 200+ сервисов, и заметная часть из них занимается health checks / audit / repair, а не пользовательскими запросами. Сложность удерживается через упрощение - каждый сервис должен быть максимально сфокусирован

8️⃣ S3 перестаёт оперировать только бакетами: новые примитивы Tables и Vectors Появились новые примитивы

  • S3 Tables: объектное хранилище с встроенной Apache Iceberg‑поддержкой и фоновой оптимизацией таблиц (перепаковка/компакшн и т.п. "в фоне"). AWS заявляет до 10x TPS vs Iceberg‑таблицы в обычных S3‑бакетах
  • S3 Vectors: нативное хранение/поиск векторов в S3. В эпизоде - инженерная идея vector neighborhoods (предрасчёт кластеров оффлайн), чтобы получить тёплые запросы <100ms, и очень большие масштабы индексов/бакетов

9️⃣ Crash consistency - как мировоззрение Настоящие инженеры мыслят так: система должна возвращаться в корректное состояние после fail‑stop; проектирование идёт через перебор возможных состояний при отказах + набор сервисов, которые удерживают инварианты

🔟 Принцип Scale must be to your advantage Нельзя строить так, чтобы рост сервиса ухудшал характеристики; на масштабе, наоборот, должны появляться эффекты, улучшающие надёжность (например, декорреляция нагрузок)

В продолжении расскажу как можно этот опыт переложить на практические рекомендации инженерам и техническим руководителям.

#Culture #Management #Leadership #Processes #Engineering #Software #Architecture #DistributedSystems #SystemDesign