HighLoad++ 2017
Зал «Найроби + Касабланка», 8 ноября, 16:00
Тезисы:
http://www.highload.ru/2017/abstracts/2996.html
Наш проект – это облачный CI-сервис, на котором пользователи запускают тесты разрабатываемых проектов.
В этом году система автозакупки нашего проекта приобрела 37218 машин (Amazon Instances). Это позволило обработать 189488 "задач" (прогонов тестов) наших клиентов.
Тесты – это всегда ресурсоемкие задачи с максимальным потреблением процессорных мощностей и памяти. Мы не можем прогнозировать, сколько параллельных вычислений и в какой момент времени будет. Перед нами стояла задача построения архитектуры системы, которая умеет очень быстро увеличивать, а также быстро уменьшать мощности кластера.
4. Что от нас ожидают пользователи?
• Различные окружения и языки
5. Что от нас ожидают пользователи?
• Различные окружения
• Версионирование сервисов
5.5.x
5.6.x
5.7.x
8.x
...
8.x
9.x
10.x
6. Что от нас ожидают пользователи?
• Различные окружения
• Версионирование сервисов
• Быстрое освобождение ресурсов
7. Что от нас ожидают пользователи?
• Различные окружения
• Версионирование сервисов
• Быстрое освобождение ресурсов
• Малое время ожидания запуска
8. Что от нас ожидают пользователи?
• Различные окружения
• Версионирование сервисов
• Быстрое освобождение ресурсов
• Малое время ожидания запуска
• Параллельный запуск задач
11. Проблемы CI/CD сервисов
• Shared- или "честные" ресурсы
• Постоянный наплыв задач
0
01
02
03
04
05
06
07
12. Проблемы CI/CD сервисов
• Shared- или "честные" ресурсы
• Постоянный наплыв задач
• Практически невозможно планировать нагрузки
2009 2010 2011 2012 2013 2014
20
22
24
26
28
30
32
34
36
13. Проблемы CI/CD сервисов
• Shared- или "честные" ресурсы
• Постоянный наплыв задач
• Практически невозможно планировать нагрузки
• Изолированность ресурсов
14. Проблемы CI/CD сервисов
• Shared- или "честные" ресурсы
• Постоянный наплыв задач
• Практически невозможно планировать нагрузки
• Изолированность ресурсов
• Мониторинг нагрузки на "ноду"
15. Проблемы CI/CD сервисов
• Shared- или "честные" ресурсы
• Постоянный наплыв задач
• Практически невозможно планировать нагрузки
• Изолированность ресурсов
• Мониторинг нагрузки на "ноду"
• Отказоустойчивость
17. Способы решения проблем
Плюсы
+Единая система, простая дистрибуция
+Скорость и простота
Минусы
- Один сервер - бутылочное горлышко
- Ограниченность масштабирования
- Простой ресурсов
19. Способы решения проблем
Плюсы
+Разделение рабочих нагрузок
+Меньший размер инстансов
+Более гибкие решения
масштабирования
+Балансировка нагрузки
Минусы
- Управление
- Сложность
22. Облачный автоскейлинг как решение
• Предоставляется облачным провайдером
• Базируется на основных метриках
• Загрузка CPU
• Нагрузка на сеть
23. Облачный автоскейлинг как решение
• Предоставляется облачным провайдером
• Базируется на основных метриках
• Загрузка CPU
• Нагрузка на сеть
• Возможны расширенные метрики
24. Облачный автоскейлинг как решение
• Предоставляется облачным провайдером
• Базируется на основных метриках
• Загрузка CPU
• Нагрузка на сеть
• Возможны расширенные метрики
• Автомасштабирование на основе очередей
36. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
37. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
38. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
39. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
40. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
41. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
42. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
43. Как все работает?
Новая задача
Есть
свободная
нода?
да
нет
Назначить задачу
Запросить ноду
запрашиваем опять
Хранилище нод
запрос
добавить в
мониторинг
44. А есть ли разница?
Azure
AWS EC2 Spot
$353/mo
1x
8 CPU
64 GB
$133/mo
8x
2 CPU
8 GB
45. А есть ли разница?
Azure
AWS EC2 Spot
$353/mo
1x
8 CPU
64 GB
$353/mo
1x
8 CPU
64 GB
+ $133/mo
8x
2 CPU
8 GB
$49/mo
3x
2 CPU
8 GB
+
48. Такой разный биллинг
• Посекундная оплата AWS
• Как это повлияло на наше решение
• Мониторинг загруженности пула
60 60 30
60 60 60
Prolongation time
Instances
Taskspernode
Time
49. Такой разный биллинг
• Посекундная оплата AWS
• Как это повлияло на наше решение
• Мониторинг загруженности пула
• Добавляем немного "мозгов" в автоскейлинг