SlideShare a Scribd company logo
Принципы автоматического
масштабирования
приложения в 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!

More Related Content

PPSX
презентация2
PDF
Всему своё время / Роман Ивлиев (Банки.ру)
PDF
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
PDF
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PDF
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
ODP
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
PDF
Genuine web-scale железо. Как FB, Apple и Google разрушают традиции в компьют...
презентация2
Всему своё время / Роман Ивлиев (Банки.ру)
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
Как Web-акселератор акселерирует ваш сайт / Александр Крижановский (Tempesta ...
Genuine web-scale железо. Как FB, Apple и Google разрушают традиции в компьют...

Viewers also liked (20)

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

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

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

More from Ontico (20)

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

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