Drim Dev
386 subscribers
19 photos
49 links
Канал о деятельности компании Drim Dev и об ИТ-индустрии в целом. Ведёт Дмитрий Мельник.

Аккаунт для связи @mitro52.

Сайт https://drim.dev/
Download Telegram
DynamoDB

Несколько дней назад произошёл глобальный сбой у крупнейшего облачного провайдера планеты - AWS. Из-за этого упали как часть сервисов самого AWS, так и другие сервисы: Snapchat, Reddit, Pinterest, Spotify. Последствия сбоя устраняли больше суток.

Уже вышел подробный постмортем произошедшего. Надо отдать должное специалистам Амазона, они смогли детально восстановить, что послужило причиной сбоя, и как он развивался. Это говорит о высокой инженерной культуре.

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

В этом посте я не буду разбирать постмортем. Это уже сделали на множестве других ресурсов. Но в то же время, я убеждён, что подобные ситуации должны давать новые знания и опыт сообществу. И поэтому я хочу поговорить о самом DynamoDB - сервисе, отказ которого из-за DNS привёл к каскаду остальных сбоев. Будет небольшая серия постов.

Что такое DynamoDB?

Для хранения данных можно использовать классическую реляционную базу данных (например, PostgreSQL или MySQL). В таких базах данные хранятся в строго структурированных таблицах с заранее определенной схемой. Для получения связанных данных из разных таблиц используются операции JOIN. Этот подход хорошо подходит для сложных запросов, но он сложнее масштабируется.

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

Amazon DynamoDB - это полностью управляемая, бессерверная (serverless) NoSQL база данных, созданная для обеспечения производительности с задержками в единицы миллисекунд при любом масштабе. Разберем по частям:

* «Полностью управляемая» и «бессерверная» означает, что разработчикам не нужно заниматься администрированием серверов, установкой ПО, настройкой или обновлениями. AWS берет на себя все эти задачи. Более того, DynamoDB может масштабироваться до нуля: если к таблице нет запросов, вы за нее не платите.

* NoSQL означает, что у базы нет жесткой схемы, как в реляционных базах (за исключением первичного ключа). Каждый элемент (запись) может иметь разный набор атрибутов. DynamoDB поддерживает две основные модели данных: ключ-значение и документо-ориентированную, что позволяет хранить данные в форматах вроде JSON.

Использование внутри AWS

Сама Amazon использует DynamoDB для своих самых критически важных и высоконагруженных систем. Это классический пример «dogfooding» - использования собственных продуктов.

Ежегодная распродажа Prime Day является самым показательным примером. Статистика пиковых нагрузок на DynamoDB во время Prime Day:

* Prime Day 2024: 146 миллионов запросов в секунду
* Prime Day 2023: 126 миллионов запросов в секунду
* Prime Day 2022: 105,2 миллиона запросов в секунду
* Prime Day 2017: 12,9 миллиона запросов в секунду

Эти цифры на 4 порядка выше производительности любой реляционной БД в стандартном исполнении (10-15 тысяч запросов в секунду на мощном железе).

Использование клиентами

Тысячи компаний по всему миру полагаются на DynamoDB для своих самых требовательных приложений:

* Snapchat: Перестроил свою самую большую рабочую нагрузку на запись - функцию Stories - для работы на DynamoDB, чтобы улучшить производительность и снизить стоимость.

* Disney+: Использует глобальные таблицы DynamoDB для таких функций, как списки просмотра и рекомендаций, обеспечивая низкую задержку для миллионов пользователей по всему миру.

* Capcom: Обеспечивает работу своих популярных онлайн-игр, которые требуют обработки миллиардов запросов с задержками в единицы миллисекунд.

В следующих постах узнаем, как устроена эта БД и за счёт чего она так хорошо масштабируется. Для этого возьмём реальный бизнес-кейс и реализуем его на реляционной БД и на DynamoDB. В процессе увидим все компромиссы. Также поговорим о том, какие существуют альтернативы. Оставайтесь на связи, будет интересно 🚀

#aws #dynamodb
👍9🔥71