SlideShare a Scribd company logo
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Architecture of NoSQL
distributed clusters on AWS
Andrey Zaychikov
Solutions Architect,
Amazon Web Services,
Luxembourg
Программа и цели презентации
• Рассмотрим основные проблемы, связанные с проектированием глобально
распределенных кластеров NoSQL и опишем подход к проектированию подобных
систем
• Посмотрим, как этот подход может быть использован на примере построения
глобально распределенных кластеров Cassandra и MongoDB
• Разберемся в отличиях и особенностях проектирования в зависимости от типа БД и её
реализации
Почему появились распределенные NoSQL БД?
Сложность
схем данных
Объем данных Uptime
Характерные черты распределенных систем
Сложное поведение Сложная структура
CAP теорема?
NoSQL как технология
Экосистема NoSQL
Значение Cloud Computing для NoSQL
Скорость
масштабирования
Простота организации
глобального
присутствия
On-demand pricing
Решения NoSQL на платформе AWS
DynamoDB S3 + Athena NoSQL on EC2 (+ EBS)
Полностью управляемый сервис
баз данных NoSQL,
обеспечивающий прогнозируемую
высокую производительность с
эффективной масштабируемостью.
Amazon DynamoDB дает клиентам
возможность переложить на AWS
административную нагрузку, по
управлению распределенными
базами данных и их
масштабированием.
Amazon Athena – это
интерактивный сервис
запросов, позволяющий легко
анализировать данные в
хранилище Amazon S3 с
помощью стандартных
средств SQL. У Athena –нет
инфраструктуры, требующей
настройки или управления,
поэтому можно сразу же
приступить к анализу данных.
Вычислительное облако Amazon
Elastic Compute Cloud (Amazon
EC2) – это веб-сервис,
предоставляющий безопасные
масштабируемые вычислительные
ресурсы в облаке. Он помогает
разработчикам, облегчая
проведение крупномасштабных
вычислений в облаке.
Подход к проектированию глобально
распределенных NoSQL БД
• Оценка необходимости создания
распределенной системы и
применимости NoSQL
• Проектирование сценария
использования
• Выбор технологии NoSQL
• Проектирование приложений
• Проектирование технической
реализации
• Проектирование и организация
операционной деятельности
Нужны ли в вашем проекте распределенные NoSQL
решения
• Высокая нагрузка существенно изменяющая
во времени
• Отсутствие существенных требований к
консистентности данных
• Парадоксально высокий uptime
• Относительно простая схема без наличия
существенного количества связей
• Отсутствие необходимости моментально
строить отчетность по всему объему данных
• Высокие требования к latency со стороны
клиентских приложений
• Высокие требования к консистентности данных
• Стабильная нагрузка без существенных
изменений в течение времени
• Относительно редко меняющаяся схема в
хорошо определенной предметной области
• Отсутствие сверх высоких требований по
доступности и latency по запросам со стороны
приложений
• Необходимость строить отчетность / анализ с
использованием полного функционала SQL
Проектирование сценария использования
Выбор технологии
• Специфика приложений
• Сценарий
использования
• Модель развертывания
• Собственная экспертиза
• Необходимость тюнинга
• Схема данных
• Показатели
производительности
• Показатели надежности
• Специфика развития
продукта
• Модель обслуживания
DynamoDB
Cloud-based Self-managed (EC2)
Key-value Document-oriented
Graph
Mixed
Изучение технологии
Crush course: Cassandra
Crush course: MongoDB
Проектирование схемы данных
• Наборы данных (keyspaces,
collections)
• Идентификационные ключи
и ключи распределения
данных
• Структура индексов
• Структура коллекций
• Структура запросов
• Структура связей
Проектирование схемы данных существенно различается в зависимости от класса
БД (document-oriented, key-value, graph, etc.) и в большой степени зависит от
особенностей реализации конкретной БД.
Проектирование взаимодействия приложений с БД
Проектирование взаимодействия
приложений с БД
Проектирование взаимодействия
приложений с БД
Выбор географии развертывания
Проектирование архитектуры развертывания
Проектирование архитектуры
развертывания
Проектирование архитектуры
развертывания
Выбор типов вычислительных ресурсов и хранилищ
Всегда базируется на специфике базы данных, специфике схемы и паттернов
доступа. Тип вычислительных ресурсов и хранилищ должен адаптироваться под
конкретные нужды.
Cassandra MongoDB
Планирование HA & DR
Пример: Планирование HA & DR
Пример: Планирование HA & DR
Планирование вычислительных сетей
• Топология сети
• Конфигурация сети
• Высокая доступность сети /
каналов
• Маршрутизация
• Правила firewall’ов
• MTU
• Оптимизация трафика
Планирование ИБ
Планирование мониторинга
• Мониторинг вычислительных
ресурсов
• CPU
• RAM
• Disk IO, saturation
• Network throughput, saturation
• Мониторинг системных
процессов
• Write Logs
• Garbage Collection
• Locks
• Queueing
• Мониторинг узлов кластера БД
• Read / Write IO
• Read / Write Latency
• Internal tasks
• Мониторинг запросов
приложений
• Unavailable Errors
• Timeout Errors
• Other types of exceptions
• Мониторинг состояния кластера
• Nodes status
• Replication status / lag
Сильно зависит от специфики реализации конкретной базы данных на
уровне узла (чтение / запись данных) и на уровне кластера (репликация).
Пример: Планирование мониторинга
Пример: Планирование
мониторинга
Планирование обслуживания
• Уведомления и реагирование на
инциденты
• Alarms & notifications (правильные
метрики
• RCA
• Playbook
• Настройка и контроль выполнения
рутинных операций на уровне
кластера
• Anti-entropy operations
• Cluster-wide clean-ups
• Cluster-wide / Shard-wide backups
• Other
• Настройка и контроль выполнения
рутинных операций на уровне
узлов кластера
• Defragmentation
• Compression / Compaction
• Encryption
• Incremental and Full Backup
• Index re-build
Пример: Планирование обслуживания
• Regular cluster / partition wide
repair of data (depends on
gc_grace_period)
• Cluster wide time sync
• Per node compactions
procedures
• Manual split of SSTables to
avoid appearance of HUGE
SSTables
• Rotate log files
• Per node data defragmentation
Вместо заключения
• Не существует одного решения на
все случаи жизни
• Контекст имеет значение и
решение должно изменяться вслед
за изменением контекста
• Приложение и код должны быть
адаптированы к БД
• Наилучший способ проверить ваш
выбор БД для применения в
вашем решении – провести Proof-
of-Concept
Спасибо за внимание!

More Related Content

PPTX
Алексей Рагозин "Java и linux борьба за микросекунды"
PDF
Ара Исраелян "Как ускорить разработку приложений"
PDF
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
PPTX
NoSQL - World IT Planet, Saint Petersburg 2015
PPTX
Tuning HighLoad J2EE web application
PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
PDF
Сергей Орлов
PPTX
Big data moscow meetup
Алексей Рагозин "Java и linux борьба за микросекунды"
Ара Исраелян "Как ускорить разработку приложений"
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
NoSQL - World IT Planet, Saint Petersburg 2015
Tuning HighLoad J2EE web application
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Сергей Орлов
Big data moscow meetup

What's hot (19)

PPTX
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
PPTX
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
PDF
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
PDF
Highload++ 2015
PPTX
Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложе...
PPTX
Migration of Cloud Services to Microsoft Azure Service Fabric
PPTX
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
PPTX
CQRS innovations
PDF
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
PPTX
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
PDF
Java cloud platforms. jee conf 2012
PPTX
Александр Белоцерковский
PDF
Максим Пугачев
PDF
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
PPTX
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
PDF
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
PDF
Javascript-фреймворки:
 должен остаться только один
PDF
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
PPTX
Миграции информационной инфраструктуры бизнес-приложений в облако
3rd Moscow cassandra meetup (Fast In-memory Analytics Over Cassandra Data )
Как FB, Apple и Google разрушают традиции в компьютерном бизнесе, и почему эт...
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
Highload++ 2015
Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложе...
Migration of Cloud Services to Microsoft Azure Service Fabric
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
CQRS innovations
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Java cloud platforms. jee conf 2012
Александр Белоцерковский
Максим Пугачев
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Javascript-фреймворки:
 должен остаться только один
Презентация Сафонова и Прусенка на семинаре "Продавайте больше"
Миграции информационной инфраструктуры бизнес-приложений в облако
Ad

Similar to Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS" (20)

PDF
Architecture of NoSQL distributed clusters on AWS
PDF
High Load 2009 Imdg Presentation
PDF
HighLoad systems: tips & tricks
PPTX
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
PPTX
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
PDF
E&С_2013_Data_center_ukraine_www.encint.com_demo_version
PPTX
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
PDF
HappyDev'15 Keynote: Когда все данные станут большими...
PPT
Алексей Чумаков. Apache Cassandra на реальном проекте
PDF
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
PPT
Быстрое масштабирование систем
PPTX
Переход от монолитной архитектуры к распределенной
DOC
Доклад "Реализация требований современных информационно-насыщенных бизнес-арх...
PDF
Переход от монолитной архитектуры к распределенной
PDF
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
PDF
MySQL NDB Cluster
PDF
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
PDF
NoSQL: issues and progress, current status and prospects
PDF
Основы баз данных NoSQL
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Architecture of NoSQL distributed clusters on AWS
High Load 2009 Imdg Presentation
HighLoad systems: tips & tricks
#dotnetby meetup - 32 Как и зачем готовить ’кластерные’ СУБД
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
E&С_2013_Data_center_ukraine_www.encint.com_demo_version
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...
Алексей Чумаков. Apache Cassandra на реальном проекте
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Быстрое масштабирование систем
Переход от монолитной архитектуры к распределенной
Доклад "Реализация требований современных информационно-насыщенных бизнес-арх...
Переход от монолитной архитектуры к распределенной
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
MySQL NDB Cluster
SECON'2014 - Александр Бындю - Переход от монолитной архитектуры к распределе...
NoSQL: issues and progress, current status and prospects
Основы баз данных NoSQL
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ad

More from IT Event (20)

PDF
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
PDF
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
PDF
Max Voloshin - "Organization of frontend development for products with micros...
PDF
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
PDF
Konstantin Krivlenia - "Continuous integration for frontend"
PPTX
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
PDF
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
PDF
Vladimir Grinenko - "Dependencies in component web done right"
PDF
Dmitry Bartalevich - "How to train your WebVR"
PDF
Aleksey Bogachuk - "Offline Second"
PDF
James Allardice - "Building a better login with the credential management API"
PDF
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
PPTX
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
PDF
Наш ответ Uber’у
PDF
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
PDF
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
PDF
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
PDF
Mete Atamel "Resilient microservices with kubernetes"
PDF
Andrew Stain "User acquisition"
PDF
Anna Lavrova "How to build a mutually beneficial relationships with the clien...
Denis Radin - "Applying NASA coding guidelines to JavaScript or airspace is c...
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Max Voloshin - "Organization of frontend development for products with micros...
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "
Konstantin Krivlenia - "Continuous integration for frontend"
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"
Evgeny Gusev - "A circular firing squad: How technologies drag frontend down"
Vladimir Grinenko - "Dependencies in component web done right"
Dmitry Bartalevich - "How to train your WebVR"
Aleksey Bogachuk - "Offline Second"
James Allardice - "Building a better login with the credential management API"
Fedor Skuratov "Dark Social: as messengers change the market of social media ...
Volodymyr Lyubinets "Introduction to big data processing with Apache Spark"
Наш ответ Uber’у
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Анатолий Пласковский "Миллионы карточных платежей за месяц, или как потерять ...
Mete Atamel "Resilient microservices with kubernetes"
Andrew Stain "User acquisition"
Anna Lavrova "How to build a mutually beneficial relationships with the clien...

Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"

  • 2. Architecture of NoSQL distributed clusters on AWS Andrey Zaychikov Solutions Architect, Amazon Web Services, Luxembourg
  • 3. Программа и цели презентации • Рассмотрим основные проблемы, связанные с проектированием глобально распределенных кластеров NoSQL и опишем подход к проектированию подобных систем • Посмотрим, как этот подход может быть использован на примере построения глобально распределенных кластеров Cassandra и MongoDB • Разберемся в отличиях и особенностях проектирования в зависимости от типа БД и её реализации
  • 4. Почему появились распределенные NoSQL БД? Сложность схем данных Объем данных Uptime
  • 5. Характерные черты распределенных систем Сложное поведение Сложная структура
  • 9. Значение Cloud Computing для NoSQL Скорость масштабирования Простота организации глобального присутствия On-demand pricing
  • 10. Решения NoSQL на платформе AWS DynamoDB S3 + Athena NoSQL on EC2 (+ EBS) Полностью управляемый сервис баз данных NoSQL, обеспечивающий прогнозируемую высокую производительность с эффективной масштабируемостью. Amazon DynamoDB дает клиентам возможность переложить на AWS административную нагрузку, по управлению распределенными базами данных и их масштабированием. Amazon Athena – это интерактивный сервис запросов, позволяющий легко анализировать данные в хранилище Amazon S3 с помощью стандартных средств SQL. У Athena –нет инфраструктуры, требующей настройки или управления, поэтому можно сразу же приступить к анализу данных. Вычислительное облако Amazon Elastic Compute Cloud (Amazon EC2) – это веб-сервис, предоставляющий безопасные масштабируемые вычислительные ресурсы в облаке. Он помогает разработчикам, облегчая проведение крупномасштабных вычислений в облаке.
  • 11. Подход к проектированию глобально распределенных NoSQL БД • Оценка необходимости создания распределенной системы и применимости NoSQL • Проектирование сценария использования • Выбор технологии NoSQL • Проектирование приложений • Проектирование технической реализации • Проектирование и организация операционной деятельности
  • 12. Нужны ли в вашем проекте распределенные NoSQL решения • Высокая нагрузка существенно изменяющая во времени • Отсутствие существенных требований к консистентности данных • Парадоксально высокий uptime • Относительно простая схема без наличия существенного количества связей • Отсутствие необходимости моментально строить отчетность по всему объему данных • Высокие требования к latency со стороны клиентских приложений • Высокие требования к консистентности данных • Стабильная нагрузка без существенных изменений в течение времени • Относительно редко меняющаяся схема в хорошо определенной предметной области • Отсутствие сверх высоких требований по доступности и latency по запросам со стороны приложений • Необходимость строить отчетность / анализ с использованием полного функционала SQL
  • 14. Выбор технологии • Специфика приложений • Сценарий использования • Модель развертывания • Собственная экспертиза • Необходимость тюнинга • Схема данных • Показатели производительности • Показатели надежности • Специфика развития продукта • Модель обслуживания DynamoDB Cloud-based Self-managed (EC2) Key-value Document-oriented Graph Mixed
  • 18. Проектирование схемы данных • Наборы данных (keyspaces, collections) • Идентификационные ключи и ключи распределения данных • Структура индексов • Структура коллекций • Структура запросов • Структура связей Проектирование схемы данных существенно различается в зависимости от класса БД (document-oriented, key-value, graph, etc.) и в большой степени зависит от особенностей реализации конкретной БД.
  • 26. Выбор типов вычислительных ресурсов и хранилищ Всегда базируется на специфике базы данных, специфике схемы и паттернов доступа. Тип вычислительных ресурсов и хранилищ должен адаптироваться под конкретные нужды. Cassandra MongoDB
  • 30. Планирование вычислительных сетей • Топология сети • Конфигурация сети • Высокая доступность сети / каналов • Маршрутизация • Правила firewall’ов • MTU • Оптимизация трафика
  • 32. Планирование мониторинга • Мониторинг вычислительных ресурсов • CPU • RAM • Disk IO, saturation • Network throughput, saturation • Мониторинг системных процессов • Write Logs • Garbage Collection • Locks • Queueing • Мониторинг узлов кластера БД • Read / Write IO • Read / Write Latency • Internal tasks • Мониторинг запросов приложений • Unavailable Errors • Timeout Errors • Other types of exceptions • Мониторинг состояния кластера • Nodes status • Replication status / lag Сильно зависит от специфики реализации конкретной базы данных на уровне узла (чтение / запись данных) и на уровне кластера (репликация).
  • 35. Планирование обслуживания • Уведомления и реагирование на инциденты • Alarms & notifications (правильные метрики • RCA • Playbook • Настройка и контроль выполнения рутинных операций на уровне кластера • Anti-entropy operations • Cluster-wide clean-ups • Cluster-wide / Shard-wide backups • Other • Настройка и контроль выполнения рутинных операций на уровне узлов кластера • Defragmentation • Compression / Compaction • Encryption • Incremental and Full Backup • Index re-build
  • 36. Пример: Планирование обслуживания • Regular cluster / partition wide repair of data (depends on gc_grace_period) • Cluster wide time sync • Per node compactions procedures • Manual split of SSTables to avoid appearance of HUGE SSTables • Rotate log files • Per node data defragmentation
  • 37. Вместо заключения • Не существует одного решения на все случаи жизни • Контекст имеет значение и решение должно изменяться вслед за изменением контекста • Приложение и код должны быть адаптированы к БД • Наилучший способ проверить ваш выбор БД для применения в вашем решении – провести Proof- of-Concept