Autoscaling for fun and profit

Preview:

Citation preview

Autoscaling for fun and profitAlexander Demidko,

Software Engineer @ Metamarkets

API

Kafka Druid

0.5PB сырых входящих/день => $$$$

API

Kafka Druid

Batch – EC2 Spot :)

Real-time – EC2 On-Demand $-(

• Быстро реагировать

• Выбирать стратегию: A) +10 контейнеров (30 мин)=> –10 контейнеров B) +40 контейнеров (20 мин)=> –40 контейнеров

• Учитывать прогнозы: объем входящих данных = f(время)пропускная способность = g(контейнеров)

Monte Carlo Tree Search

стоимость = железо + пенальти за задержку

число контейнеров

penalty(s, l)(x) = (atan(x*s – l*s) + atan(l*s)) / (0.5*π + atan(l*s))

• Selection - выбираем, где строить новый узел (exploration VS exploitation tradeoff) • Expansion - строим его :) • Simulation - эвристически оцениваем, во сколько он обойдется • Backpropagation - обновляем стоимости решений в дереве

Simulation

Уменьшение размерности дерева

• Дискретизация числа контейнеров • Дискретизация времени

Guardian

job_A - 5 => 10 контейнеровjob_B - 8 => 6 контейнеров

job_C - 15 => 20 контейнеров

job_A - 5 => 15 контейнеров

job_D - 2 => 4 контейнеров

Health monitoring

t_curr t_last

Kafka

Колебания: не можем точно выставить идеальное число контейнеров Число Kafka партиций % Число контейнеров must be(0)

avg = 35100 / (24*60) ~ 24

Уменьшили объем железа почти в 2 раза

Математика/реализация: 20/80

Спасибо!

Recommended