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

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

  • Upload
    ontico

  • View
    453

  • Download
    4

Embed Size (px)

Citation preview

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

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

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

Масштабируемостьфизические ресурсы системы должны быть прямо пропорциональны её производительности

Ресурсы

Производительность

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

Scale up• ресурсы компьютера/сети ограничены • суперкомпьютеры дорогие • низкая отказоустойчивость

2 CPU

4 CPU

64 CPU

Cache server

App server

Database

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

Scale out• сеть лагает (timeouts everywhere) • неравномерная нагрузка • DevOps неизбежен

2 CPU

64 CPU

App cluster

Database

2 CPU

2 CPU

Cache server

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

Автомасштабированиесистема самостоятельно выделяет ресурсы для своей производительности

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

Что нагружается?• CPU • Inbound traffic • Queue depth • etc.

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

Выделенные ресурсы

0

25

50

75

100

9:00 12:00 15:00 18:00 20:00 0:00 2:00

Ресурсы

НагрузкаВпустую$$$

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

Выделенные ресурсы

0

35

70

105

140

9:00 12:00 15:00 18:00 20:00 0:00 2:00

Ресурсы

Нагрузка

Впустую$$$

Downtime

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

Облачные ресурсы

0

27.5

55

82.5

110

9:00 12:00 15:00 18:00 20:00 0:00 2:00

Ресурсы

Нагрузка

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

Методологии autoscaling

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

Когда график нагрузки известен заранее

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

Основанные на времени

Load balancer

Server Server

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

Основанные на времени

Load balancer

Server Server

20:00

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

Основанные на времени

Load balancer

Server Server

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

Основанные на времени

Load balancer

Server Server Server

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

Когда нагрузка непредсказуема

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

Реагирующие на нагрузку

Load balancer

Server 60%

Server 60%

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

Реагирующие на нагрузку

Load balancer

Server 80%

Server 80%

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

Реагирующие на нагрузку

Load balancer

Server 60%

Server 60%

Server 40%

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

Реагирующие на нагрузку

Load balancer

Server 30%

Server 30%

Server 30%

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

Реагирующие на нагрузку

Load balancer

Server 45%

Server 45%

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

Предсказывающие нагрузку

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

Миф №1Автомасштабирование

защитит от DDOS

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

AWS Auto scalingМагии нет!

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

Архитектура 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

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

Scaling plans• scale up early (70% CPU in 3 min) • scale down slowly (30% CPU in 20 min) • разные стратегии для разных приложений

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

0:00 0:10 0:20 0:30 0:40 0:50 1:00

Traffic (вчера)

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

0:00 0:10 0:20 0:30 0:40 0:50 1:00

Traffic (сегодня)

Downtime

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

0

30

60

90

0:00 0:10 0:20 0:30 0:40 0:50 1:00

CPU (avg) Traffic (сегодня)

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

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

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

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

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

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!

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

0

30

60

90

0:00 0:10 0:20 0:30 0:40 0:50 1:00

CPU (avg) Instances

Рано! Нагрузка растёт!

Я один не справлюсь!

Мы не сбалансировались!

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

$$$

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

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

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

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

0:00 0:10 0:20 0:30 0:40 0:50 1:00

Instances

22222

11

70

30

CPU (avg)

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

0

1

2

0:00 0:10 0:20 0:30 0:40 0:50 1:00

Reserved On-demand

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

Приложение в условиях autoscaling

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

Deploy• Async deploy (backward compatibility, session stickness) • Оптимизируй время деплоя (ssd, gzip) • Прогревай кэш до прихода трафика (health check grace

period)

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

Heartbeat• нельзя терять выделенные ресурсы • выбирай правильные условия

Deployed Configured Warmed up Ready

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

Толерантность к падению• no uploads • logs in kibana/graylog • graceful shutdown (SIGTERM, SIGINT, lifecycle hooks) • use transactions

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

Сессия пользователя• Session store • Signed cookies

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

Сессия пользователя

App Redis

HASH:XYZ XYZ

ID:1024OK

Session store

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

Сессия пользователя

AppRedis

App

Session store

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

Сессия пользователя

App Redis

App Redis

Session store

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

Сессия пользователяSigned cookies

AppID:1024,HASH:XYZ

OK HMAC(1024,SECRET) == XYZ

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

Сессия пользователяSigned cookies

AppRedis

App

HMAC

HMAC

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

Мониторинг• Instances count • CPU, queue depth, etc. (scale condition) • Load traffic • Heartbeat steps

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

Масштабируемость ≠ производительность

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

• email: [email protected] • twitter: @regeda

Hiring!