SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Принципы автоматического
масштабирования
приложения в AWS
Регеда Антон
Масштабируемость
физические ресурсы системы должны
быть прямо пропорциональны её
производительности
Ресурсы
Производительность
Scale up
• ресурсы компьютера/сети ограничены
• суперкомпьютеры дорогие
• низкая отказоустойчивость
2 CPU
4 CPU
64 CPU
Cache server
App server
Database
Scale out
• сеть лагает (timeouts everywhere)
• неравномерная нагрузка
• DevOps неизбежен
2 CPU
64 CPU
App cluster
Database
2 CPU
2 CPU
Cache server
Автомасштабирование
система самостоятельно выделяет ресурсы для своей
производительности
Что нагружается?
• CPU
• Inbound traffic
• Queue depth
• etc.
Выделенные ресурсы
0
25
50
75
100
9:00 12:00 15:00 18:00 20:00 0:00 2:00
Ресурсы
НагрузкаВпустую
$$$
Выделенные ресурсы
0
35
70
105
140
9:00 12:00 15:00 18:00 20:00 0:00 2:00
Ресурсы
Нагрузка
Впустую
$$$
Downtime
Облачные ресурсы
0
27.5
55
82.5
110
9:00 12:00 15:00 18:00 20:00 0:00 2:00
Ресурсы
Нагрузка
Методологии autoscaling
Когда график
нагрузки
известен
заранее
Основанные на времени
Load balancer
Server Server
Основанные на времени
Load balancer
Server Server
20:00
Основанные на времени
Load balancer
Server Server
Основанные на времени
Load balancer
Server Server Server
Когда нагрузка
непредсказуема
Реагирующие на нагрузку
Load balancer
Server
60%
Server
60%
Реагирующие на нагрузку
Load balancer
Server
80%
Server
80%
Реагирующие на нагрузку
Load balancer
Server
60%
Server
60%
Server
40%
Реагирующие на нагрузку
Load balancer
Server
30%
Server
30%
Server
30%
Реагирующие на нагрузку
Load balancer
Server
45%
Server
45%
Предсказывающие нагрузку
Миф №1
Автомасштабирование
защитит от DDOS
AWS Auto scaling
Магии нет!
Архитектура AWS Auto scaling
Elastic
Load
Balancer
Auto scaling group
EC2 Instance
EC2 Instance
…
Amazon CloudWatch
Scale up
Rule
Scale
down
Rule
Scale up
Scale down
Основные понятия
Groups
Launch configurations
Scaling plans
Scaling plans
• scale up early (70% CPU in 3 min)
• scale down slowly (30% CPU in 20 min)
• разные стратегии для разных приложений
0:00 0:10 0:20 0:30 0:40 0:50 1:00
Traffic (вчера)
0:00 0:10 0:20 0:30 0:40 0:50 1:00
Traffic (сегодня)
Downtime
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Traffic (сегодня)
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Instances
222
1
2
11
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Instances
70
50
Scaling
Plan
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Instances
Alert!
Alert!
Alert!
Alert! Alert!
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Instances
Рано! Нагрузка растёт!
Я один
не справлюсь!
Мы не
сбалансировались!
$$$
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Instances
222
1
2
11
0
30
60
90
0:00 0:10 0:20 0:30 0:40 0:50 1:00
CPU (avg) Instances
222
1
2
11
70
50
0:00 0:10 0:20 0:30 0:40 0:50 1:00
Instances
22222
11
70
30
CPU (avg)
0
1
2
0:00 0:10 0:20 0:30 0:40 0:50 1:00
Reserved On-demand
Приложение в условиях autoscaling
Deploy
• Async deploy (backward compatibility, session stickness)
• Оптимизируй время деплоя (ssd, gzip)
• Прогревай кэш до прихода трафика (health check grace
period)
Heartbeat
• нельзя терять выделенные ресурсы
• выбирай правильные условия
Deployed Configured Warmed up Ready
Толерантность к падению
• no uploads
• logs in kibana/graylog
• graceful shutdown (SIGTERM, SIGINT, lifecycle hooks)
• use transactions
Сессия пользователя
• Session store
• Signed cookies
Сессия пользователя
App Redis
HASH:XYZ XYZ
ID:1024OK
Session store
Сессия пользователя
App
Redis
App
Session store
Сессия пользователя
App Redis
App Redis
Session store
Сессия пользователя
Signed cookies
App
ID:1024,HASH:XYZ
OK HMAC(1024,SECRET) == XYZ
Сессия пользователя
Signed cookies
App
Redis
App
HMAC
HMAC
Мониторинг
• Instances count
• CPU, queue depth, etc. (scale condition)
• Load traffic
• Heartbeat steps
Масштабируемость ≠ производительность
• email: regeda@inbox.ru
• twitter: @regeda
Hiring!

Más contenido relacionado

Destacado

Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...
Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...
Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...
Ontico
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Ontico
 
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Ontico
 
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Ontico
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Ontico
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Ontico
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Ontico
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Ontico
 

Destacado (20)

Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
Оптимизация сайта. Диагнозы и курсы лечения / Иван Михеев (AGIMA)
 
Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...
Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...
Воспитать в себе обезьяну. О том, как все успеть, не превращаясь в биоробота ...
 
Распознавание лиц в реальном времени по базам фотографий глобального масштаба...
Распознавание лиц в реальном времени по базам фотографий глобального масштаба...Распознавание лиц в реальном времени по базам фотографий глобального масштаба...
Распознавание лиц в реальном времени по базам фотографий глобального масштаба...
 
Event-based self-healing monitoring / Кирилл Сотников (Cognician)
Event-based self-healing monitoring / Кирилл Сотников (Cognician)Event-based self-healing monitoring / Кирилл Сотников (Cognician)
Event-based self-healing monitoring / Кирилл Сотников (Cognician)
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
Архитектура и алгоритмы для индексации всей музыки ВКонтакте / Алексей Акулов...
 
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
 
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
 
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
Amazing threesome, rrr... React. Redux. Real world / Ростислав Галкин (Babo)
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Балансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в ОдноклассникахБалансировка нагрузки и отказоустойчивость в Одноклассниках
Балансировка нагрузки и отказоустойчивость в Одноклассниках
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
 
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)Как отвечать за продакшн / Андрей Сумин (Mail.ru)
Как отвечать за продакшн / Андрей Сумин (Mail.ru)
 
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 

Similar a Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)

Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
Aleksandr Boichenko
 

Similar a Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno) (6)

Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Сложности и практики тестирования производительности
Сложности и практики тестирования производительностиСложности и практики тестирования производительности
Сложности и практики тестирования производительности
 
Практические шаги создания системы резервного копирования
Практические шаги создания системы резервного копированияПрактические шаги создания системы резервного копирования
Практические шаги создания системы резервного копирования
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks Server
 
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)
 

Más de Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Más de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Принципы автоматического масштабирования приложения в AWS / Антон Регеда (Juno)