Как сэкономить с помощью прикладного программного интерфейса (API)

Многие провайдеры IaaS-услуг обеспечили дружественный пользовательский веб-интерфейс к своей облачной платформе. Но сегодня этого уже мало, так как клиентам может потребоваться управлять своей облачной инфраструктурой не вручную, а в автоматическом режиме. Для этого используется прикладной программный интерфейс (API - application programming interface).

Что такое прикладной программный интерфейс?

Все мы привыкли к графическим интерфейсам пользователей, в которых, щелкая, выделяя, перетаскивая элементы управления или информационные объекты (например, файлы), мы добиваемся нужного нам результата.

Некоторым знакома работа с командной строкой, когда в текстовом окне черного цвета мы набираем слова, которые служат директивами на выполнение тех или иных действий. Если мы захотим увидеть содержимое какой-то папки, мы дадим соответствующую команду операционной системе. В Windows она будет, например, такой:

dir d:\folder1\folder12\*.*

Команды можно давать не только операционной системе, но и программам, решающим практические задачи. Причем, отдавать их может не только человек, но и другая программа, «знающая», как обратиться к первой.

Набор возможных команд к приложению и способ их передачи называется прикладным программным интерфейсом (API, Application Programming Interface).

Когда может потребоваться автоматическое управление?

Короткий ответ — когда требуется сэкономить. Дополнительным эффектом такой экономии будет повышение надежности работы виртуальной инфраструктуры. Практически всегда, когда для каких-то действий можно придумать четкий алгоритм, автомат будет выполнять их намного стабильнее и надежнее, чем человек.

Ситуаций, в которых автоматизированное управление облачной инфраструктурой приносит положительный результат, много. В качестве наиболее распространенного и простого примера можно привести выключение виртуальных машин по заданному расписанию в периоды, когда их работа не требуются.

Стоит уточнить, что облачные виртуальные машины, арендованные у IaaS-провайдера, в большинстве случаев тарифицируются по продолжительности их работы. Соответственно, если в какой-то период сервер не нужен, его можно выключить, чтобы напрасно не расходовать деньги на оплату его холостой работы.

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

Иная ситуация с серверами, которые используются с временными интервалами:

  1. складской или бухгалтерский серверы, если они не нужны ночью, можно выключить;
  2. виртуальные серверы, которые работают в терминальном режиме как офисные, могут быть выключены, когда сотрудника нет на рабочем месте;
  3. виртуальные машины, которые применяются в учебном процессе, должны работать только во время занятий.

Какими дистанционными командами можно управлять виртуальными серверами в 1cloud?

Проще говоря, команда представляет собой URL-запрос к серверу, управляющему облачной инфраструктурой.

https://api.1cloud.ru/Server/777/Action/999

Условный сценарий автоматического управления временем работы группы виртуальных машин мог бы выглядеть так:

21:00

https://api.1cloud.ru/Server/123/Action/5

https://api.1cloud.ru/Server/124/Action/5

https://api.1cloud.ru/Server/125/Action/5 
 
07:00

https://api.1cloud.ru/Server/123/Action/3

https://api.1cloud.ru/Server/124/Action/3

https://api.1cloud.ru/Server/125/Action/3 

Учтите, что это — упрощенный пример. Точный формат команд можно узнать из соответствующей технической документации или обратиться в техническую поддержку.

Заключение

Совсем не обязательно сводить такое управление к простому включению и выключению серверов. Оно может быть более сложным и гибким. Например, вместо выключения сервера можно уменьшать его вычислительные характеристики: сокращать число используемых им процессорных ядер и объем оперативной памяти. Такой прием будет весьма полезным интернет-магазину, если знать распределение интенсивности его посещения по времени суток или дням месяца.