- Общая информация.
Эмулируется приложение запущенное в облачной инфраструктуре на виртуальных машинах. Приложение использует базу данных, развернутую на отдельной виртуальной машине. Нужно оптимизировать расходы на инфраструктуру с наименьшими простоями в работе приложения.
- Детали.
Описание работы эмуляции – участникам не известно. Все числа приведены для примера. Основной параметр, определяющий нагрузку на приложение – количество входящих запросов. Количество входящих запросов изменяется в течении дня от 0 до нескольких тысяч по определенному закону.
На обработку каждого запроса требуются ресурсы приложения и ресурсы базы данных.
Время обработки запроса складывается из времени обработки в приложении и времени выполнения запроса в БД.
При выполнении запроса больше 400ms он считается неуспешным
Для работы приложения необходимо иметь как минимум одну виртуальную машину и одну виртуальную машину с базой данных.
2.1. Ресурсы приложения
выполнение каждого запроса требует 0.001 CPU и 5Mb памяти
Время выполнения запроса – 50ms
Накладные расходы приложения на каждой виртуальной машине – 0.05 CPU, 300Mb памяти
Если суммарное количество требуемых ресурсов CPU превышает 95% от выделенных, то приложение перестает отвечать и уходит в оффлайн
Если суммарное количество требуемых ресурсов памяти превышает 95% от выделенной, то приложение перестает отвечать и уходит в оффлайн
2.2. Ресурсы БД
выполнение каждого запроса требует 0.001 CPU и 30Mb памяти
Время выполнения запроса – 50ms
Накладные расходы ядра БД на каждой машине с БД – 0.05 CPU, 512Mb памяти
Если суммарное количество требуемых ресурсов CPU превышает превышает 95% от выделенных, то приложение перестает отвечать и уходит в оффлайн
Если суммарное количество требуемых ресурсов памяти превышает 95% от выделенной, то приложение перестает отвечать и уходит в оффлайн
2.3. Общие принципы работы с виртуальными машинами:
При изменении количества ресурсов виртуальной машины - виртуальная машина перестает работать на 3 минуты. Тарификация машины продолжается
При заказе новой виртуальной машины - она становится доступной через 5 минут . Но тарификация начинается с момента создания машины
2.4. Время ответа приложения
Время ответа приложения зависит от нагрузки на CPU для виртуальных машин и базы данных. Виртуальные машины и базы данных вносят разные задержки в обработку запроса. Если время ответа на запрос превышает 400мс, то приложение уходит в оффлайн.
- API
3.1 Запрос ресурсов: (/api/resource).
Возвращается список из:
тип ресурса - db/vm
стоимость ресурса (cost)
нагрузка на cpu
нагрузка на память
количество cpu
количество памяти
ID ресурса
состояние неработоспособности ресурса (failed) после заказа или изменения
3.2 Запрос цен.
Возвращается список ценовых позиций:
тип ресурса vm/db
стоимость ресурса
количество cpu
количество ram
ID позиции
3.3 Запрос текущей статистики.
Возвращает текущую статистику по пользователю, запрос включает:
"availability": доступность сервиса по шкале 0…1. 1 означает работу сервиса 100% времени без пропущенных запросов
"cost_total": общие затраты накопительным итогом
"db_cpu": всего цпу для баз данных
"db_cpu_load": текущая нагрузка на цпу базы данных.
"db_ram": всего памяти для базы данных
"db_ram_load": текущая нагрузка на память базы данных
"last1": затраты за последнюю минуту
"last15": затраты за последние 15 минут
"last5": затраты за последние 5 минут
"lastDay": затраты за последний день
"lastHour": затраты за последний час
"lastWeek": затраты за последнюю неделю
"offline_time": общее время оффлайна
"online": признак работоспособности
"online_time": общее время онлайна
"requests": текущее количество запросов
"requests_total": общее количество запросов, поступившее к приложению
"response_time": время ответа приложения (должно быть меньше 400 для работоспособного приложения)
"vm_cpu": всего цпу для виртуальных машин
"vm_cpu_load": нагрузка на цпу для виртуальных машин
"vm_ram": всего памяти для виртуальных машин
"vm_ram_load": нагрузка на память для виртуальных машин