41
API в SAAS, с облаком и без ресурсы, SLA, балансировка, расширяемость и всякая чепуха

API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

  • Upload
    eatdog

  • View
    48

  • Download
    2

Embed Size (px)

Citation preview

Page 1: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

API в SAAS, с облаком и без

ресурсы, SLA, балансировка, расширяемость и всякая чепуха

Page 2: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Обо мне

• Егор Назаркин

• So;ware Engineer

• Киев, Украина

Page 3: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Easy-to-use Machine Learning service that helps people build models and predict on them.

Page 4: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

внутри платформы

intake transform build

serve

client

Page 5: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

внутри платформы

Page 6: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

примеры использованияприложение на входе на выходе

рекомендации товаров клик по позиции список “похожих”

исследование и предсказание

цены

недвижимость, авиабилеты

динамика и склонность

(вероятность) изменения

поиск мошенничества

атрибуты транзакции

принять/отклонить транзакцию

вовлеченность в игру

игровая активность

изменение сложности

Page 7: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

типичное (wsgi) приложение

Web Appclient reverse proxy

Page 8: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

конфигурация

Page 9: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

round robin

Web Appclient reverse proxy balancer

Page 10: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

конфигурация

Page 11: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Проблемы

• предсказания делаются на обученых моделях

• модель может занимать гигабайты памяти

• обработка запроса длится от 20 до 600 миллисекунд

• загрузка в память занимает в 10-30 раз больше времени

Page 12: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Каждому узлу по собственной модели

1

2

3

4

5

6node

client reverse proxy balancer

Page 13: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Hash ключ

Page 14: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Конфигурация

Page 15: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Пропадание узла• умирает один сервер — нужно перебалансировать всю систему

4 / 12 3 / 12

1 2 3

4 5 6

7 8 9

10 11 12

1 2 3 4

5 6 7 8

9 10 11 12

Page 16: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Consistent hash10.0.0.1

10.0.0.2

10.0.0.3

10.0.0.4

1

23

4

Page 17: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Consistent hash10.0.0.1

10.0.0.210.0.0.4

1

23

4

Page 18: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

С nginx

160 * weight

hGps://www.nginx.com/resources/wiki/modules/consistent_hash/

Page 19: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

И что?

Page 20: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Почему не подходит?• пассивная проверка хоста

• необходимость обновления конфигурации на всех узлах (вспомнить про consul)

• нужен “прогрев” моделей в кеше узла

• масштабирование?

Page 21: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Структура кластераload balancer

workermodel

node

router

Page 22: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Architecture

worker1

worker2

worker3

uWSGI emperor modesentinelcontroller +

algorithmAPI

nginx

Page 23: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

uWSGI

Page 24: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

fill_vassals.py

Page 25: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Controller.lua

Page 26: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Controller.py

Page 27: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Controller.py

Page 28: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Controller.py

Page 29: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Controller.py

Page 30: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Controller.py

Page 31: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Mappers

• Random

• Hash

• Hash Ring

• Model weight

Page 32: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Random

Page 33: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Hash

Page 34: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Model weight

m1 m2

h1 h2 h3 h4

Page 35: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Model weight

Page 36: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Hash ring

Page 37: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Hash ring

Page 38: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
Page 39: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Итоги

• Know your instrument!

• Сопротивляйся

• Минимизируй зоопарк решений

• Старайся уменьшить объем работы

• Конфигурация

• Расширяемость

• Тестирование

Page 40: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Ссылки• So You Wanna Go On-prem Do Ya — hGp://bit.ly/1THE0CS

• HAProxy zero-downtime, zero-delay reloads with multibinder — hGp://bit.ly/2gp4dwC

• Autoscaled Internal Load Balancing using HAProxy and Consul on Compute Engine — h!ps://goo.gl/ZZPDCr

• load balancing и оптимальная загрузка кластера — hGps://goo.gl/kbDTP8

• Prediction API as a service on premise solution — hGp://bit.ly/2hkzna1

Page 41: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость

Вопросы?