Giter VIP home page Giter VIP logo

cloudresources's Introduction

Репозиторий для сервиса по оптимизации облачных затрат

  1. Общая информация.

Эмулируется приложение запущенное в облачной инфраструктуре на виртуальных машинах. Приложение использует базу данных, развернутую на отдельной виртуальной машине. Нужно оптимизировать расходы на инфраструктуру с наименьшими простоями в работе приложения.

  1. Детали.

Описание работы эмуляции – участникам не известно. Все числа приведены для примера. Основной параметр, определяющий нагрузку на приложение – количество входящих запросов. Количество входящих запросов изменяется в течении дня от 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мс, то приложение уходит в оффлайн.

  1. 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": нагрузка на память для виртуальных машин

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.