API в SAAS, с облаком и без: ресурсы, SLA, балансировка,...
Transcript of API в SAAS, с облаком и без: ресурсы, SLA, балансировка,...
![Page 1: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/1.jpg)
API в SAAS, с облаком и без
ресурсы, SLA, балансировка, расширяемость и всякая чепуха
![Page 2: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/2.jpg)
Обо мне
• Егор Назаркин
• So;ware Engineer
• Киев, Украина
![Page 3: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/3.jpg)
Easy-to-use Machine Learning service that helps people build models and predict on them.
![Page 4: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/4.jpg)
внутри платформы
intake transform build
serve
client
![Page 5: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/5.jpg)
внутри платформы
![Page 6: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/6.jpg)
примеры использованияприложение на входе на выходе
рекомендации товаров клик по позиции список “похожих”
исследование и предсказание
цены
недвижимость, авиабилеты
динамика и склонность
(вероятность) изменения
поиск мошенничества
атрибуты транзакции
принять/отклонить транзакцию
вовлеченность в игру
игровая активность
изменение сложности
![Page 7: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/7.jpg)
типичное (wsgi) приложение
Web Appclient reverse proxy
![Page 8: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/8.jpg)
конфигурация
![Page 9: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/9.jpg)
round robin
Web Appclient reverse proxy balancer
![Page 10: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/10.jpg)
конфигурация
![Page 11: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/11.jpg)
Проблемы
• предсказания делаются на обученых моделях
• модель может занимать гигабайты памяти
• обработка запроса длится от 20 до 600 миллисекунд
• загрузка в память занимает в 10-30 раз больше времени
![Page 12: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/12.jpg)
Каждому узлу по собственной модели
1
2
3
4
5
6node
client reverse proxy balancer
![Page 13: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/13.jpg)
Hash ключ
![Page 14: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/14.jpg)
Конфигурация
![Page 15: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/15.jpg)
Пропадание узла• умирает один сервер — нужно перебалансировать всю систему
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, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/16.jpg)
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, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/17.jpg)
Consistent hash10.0.0.1
10.0.0.210.0.0.4
1
23
4
![Page 18: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/18.jpg)
С nginx
160 * weight
hGps://www.nginx.com/resources/wiki/modules/consistent_hash/
![Page 19: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/19.jpg)
И что?
![Page 20: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/20.jpg)
Почему не подходит?• пассивная проверка хоста
• необходимость обновления конфигурации на всех узлах (вспомнить про consul)
• нужен “прогрев” моделей в кеше узла
• масштабирование?
![Page 21: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/21.jpg)
Структура кластераload balancer
workermodel
node
router
![Page 22: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/22.jpg)
Architecture
worker1
worker2
worker3
uWSGI emperor modesentinelcontroller +
algorithmAPI
nginx
![Page 23: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/23.jpg)
uWSGI
![Page 24: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/24.jpg)
fill_vassals.py
![Page 25: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/25.jpg)
Controller.lua
![Page 26: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/26.jpg)
Controller.py
![Page 27: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/27.jpg)
Controller.py
![Page 28: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/28.jpg)
Controller.py
![Page 29: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/29.jpg)
Controller.py
![Page 30: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/30.jpg)
Controller.py
![Page 31: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/31.jpg)
Mappers
• Random
• Hash
• Hash Ring
• Model weight
![Page 32: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/32.jpg)
Random
![Page 33: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/33.jpg)
Hash
![Page 34: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/34.jpg)
Model weight
m1 m2
h1 h2 h3 h4
![Page 35: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/35.jpg)
Model weight
![Page 36: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/36.jpg)
Hash ring
![Page 37: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/37.jpg)
Hash ring
![Page 38: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/38.jpg)
![Page 39: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/39.jpg)
Итоги
• Know your instrument!
• Сопротивляйся
• Минимизируй зоопарк решений
• Старайся уменьшить объем работы
• Конфигурация
• Расширяемость
• Тестирование
![Page 40: API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/40.jpg)
Ссылки• 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, балансировка, расширяемость](https://reader034.fdocument.pub/reader034/viewer/2022042605/586f8f171a28ab54768b7431/html5/thumbnails/41.jpg)
Вопросы?