KEMBAR78
Architecture of NoSQL distributed clusters on AWS | PDF
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
S3	+	Athena NoSQL	on	EC2
Полностью	управляемый	
сервис	баз	данных	NoSQL,	
обеспечивающий	
прогнозируемую	высокую	
производительность	с	
эффективной	
масштабируемостью.	
Amazon DynamoDB дает	
клиентам	возможность	
переложить	на	AWS	
административную	нагрузку,	
по	управлению	
распределенными	базами	
данных	и	их	
масштабированием.
Amazon Athena – это	
интерактивный	сервис	
запросов,	позволяющий	
легко	анализировать	
данные	в	хранилище	
Amazon S3	с	помощью	
стандартных	средств SQL.	
У	Athena –нет	
инфраструктуры,	
требующей	настройки	или	
управления,	поэтому	
можно	сразу	же	
приступить	к	анализу	
данных.	
Вычислительное	облако	
Amazon Elastic Compute
Cloud (Amazon EC2) – это	
веб-сервис,	
предоставляющий	
безопасные	
масштабируемые	
вычислительные	ресурсы	
в	облаке.	Он	помогает	
разработчикам,	облегчая	
проведение	
крупномасштабных	
вычислений	в	облаке.
Amazon EMR – это	веб-
сервис,	который	
позволяет	компаниям,	
ученым,	аналитикам	и	
разработчикам	легко	и	
недорого	обрабатывать	
огромные	объемы	
данных.	В	нем	
используется	удаленная	
инфраструктура	Hadoop,	
работающая	в	
масштабной	
вычислительной	
инфраструктуре	Amazon
Elastic Compute Cloud.
EMR
Подход	к	проектированию	глобально	
распределенных	NoSQL	БД
• Оценка	необходимости	создания	
распределенной	системы	и	
применимости	NoSQL
• Проектирование	сценария	
использования
• Выбор	технологии	NoSQL
• Проектирование	приложений
• Проектирование	технической	
реализации
• Проектирование	и	организация	
операционной	деятельности
Нужны	ли	в	вашем	проекте	распределенные	NoSQL	
решения
• Высокая	нагрузка	существенно	
изменяющаяся	во	времени
• Отсутствие	критических	требований	к	
консистентности данных
• Парадоксально	высокий	uptime
• Относительно	простая	схема	без	наличия	
значительного	количества	связей
• Отсутствие	необходимости	моментально	
строить	отчетность	по	всему	объему	данных
• Высокие	требования	к	latency	со	стороны	
клиентских	приложений
• Высокие	требования	к	консистентности данных
• Стабильная	нагрузка	без	существенных	
изменений	в	течение	времени
• Относительно	редко	меняющаяся	схема	в	
хорошо	определенной	предметной	области
• Отсутствие	сверх	высоких	требований	по	
доступности	и	latency	по	запросам	со	стороны	
приложений
• Необходимость	строить	отчетность	/	анализ	с	
использованием	полного	функционала	SQL
Проектирование	сценария	использования
Выбор	технологии:	Обзор
Пример подхода	к	выбору	технологии
Изучение	технологии
Crash	course:	Cassandra
Crash	course:	MongoDB
Проектирование	схемы	данных
• Наборы	данных	(keyspaces,	
collections)
• Идентификационные	ключи	
и	ключи	распределения	
данных
• Структура	индексов
• Структура	коллекций
• Структура	запросов
• Структура	связей
Проектирование	схемы	данных	существенно	различается	в	зависимости	от	класса	
БД	(document-oriented,	key-value,	graph,	etc.) и	в	большой	степени	зависит	от	
особенностей	реализации	конкретной	БД.
Проектирование	схемы	данных
Проектирование	схемы	данных
• Правильный	выбор	
PRIMARY_KEY
• Корректное	разделение	на	
keyspaces и	column	families
• Массовое	дублирование	
данных
• Структура	запросов
• Пред	процессинг	данных	
для	формирования	
отчетности	и	read-intensive	
workloads
Проектирование	взаимодействия	приложений	с	БД
Проектирование	взаимодействия	
приложений	с	БД
Проектирование	взаимодействия	
приложений	с	БД
Выбор	географии	развертывания
Проектирование	архитектуры	развертывания
Проектирование	архитектуры	
развертывания
Проектирование	архитектуры	
развертывания
Выбор	типов	вычислительных	ресурсов	и	хранилищ
Всегда	базируется	на	специфике	базы	данных,	специфике	схемы	и	паттернов	
доступа.	Тип	вычислительных	ресурсов	и	хранилищ	должен	адаптироваться	под	
конкретные	нужды.
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
Спасибо	за	внимание!

Architecture of NoSQL distributed clusters on AWS