API для работы с сервисами: Базовые моменты
По своей сути API являет собой набор готовых классов, функций, переменных и констант, предоставляемых приложением для использования во внешних программных продуктах. Эти интерфейсы находят применение в самых разнообразных сферах: от IoT до аналитики и интеграции сервисов.
Роберто Медрано (Roberto Medrano) из SOA Software считает, интерфейсы программирования приложений помогут развивать инновации в двух направлениях. Во-первых, компании смогут открыть свои данные, чтобы подстегнуть разработку креативных решений от компаний-партнеров и сторонних разработчиков (пример реализации клиентского приложения для API 1cloud на C# можно найти здесь).
Во-вторых, по словам Медрано, продукты и сервисы, снабженные API, предоставляют разработчикам инструменты, чтобы те могли сконцентрироваться на создании новых полезных продуктов, не думая об управлении backend-разработкой и серверами.
Еще API не просто обеспечивают передачу и обмен данными, но позволяют их проанализировать. «API предоставляют нам огромное количество данных о поведении покупателя, которые невозможно было бы получить другими способами», — отмечает Медрано. На их основе можно попытаться понять, нужны ли модификации и изменения в работающих системах.
Развивая сервис 1cloud, мы столкнулись с необходимостью повышения качества интеграции клиентских приложений с нашим облаком. Иными словами, облегчить взаимодействие с нашей инфраструктурой для клиентов и партнеров. Для решения этой задачи мы разработали свой API.
API 1cloud позволяет автоматизировать процесс масштабирования виртуальной инфраструктуры. Например, можно подключить дополнительные виртуальные машины при повышении нагрузки, а когда произойдет спад активности — автоматически их отключить. Таким образом, интерфейсы программирования приложений можно использовать для совершения всех действий, доступных пользователям в графическом интерфейсе системы управления.
Одним из самых часто встречающихся применений API является создание нового виртуального сервера. Сформировав и отправив POST-запрос, пользователь «поднимает» новую ВМ с указанными параметрами. Вот один из вариантов запросов:
curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/Server" -d '{"Name":"testAPI","CPU":1,"RAM":1024,"HDD":40,"imageID":1,"HDDType":"SSD","IsHighPerformance":true}'
В ответ на него придет JSON-объект с атрибутами созданного сервера:
{
"ID":777,
"Name":"testAPI",
"State":"Active",
"IsPowerOn":true,
"CPU":1,
"RAM":1024,
"HDD":40,
"IP":"5.200.XX.XX",
"AdminUserName":"1CloudAdmin",
"AdminPassword":"XXXXXXXX",
"Image":"WinServer2008R2x64En",
"IsHighPerformance":false,
"HDDType":"SAS",
"LinkedNetworks":[{"NetworkID":57, "IP":"10.0.1.1"}, {"NetworkID":98, "IP":"10.0.2.4"}]
}
Еще один вид выполняемых задач — это создание шаблона виртуального сервера. Для этого пользователю нужно отправить POST-запрос по адресу api.1cloud.ru/image. Вот пример:
curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/image" -d '{"Name":"Шаблон","TechName":"TemplateAPI","ServerID":6940}'
Ответом будет JSON-объект, содержащий все атрибуты созданного шаблона. Например:
{
"ID":72,
"Name":"testAPITemplate"
}
Созданный шаблон впоследствии можно удалить — просто отправляем запрос DELETE по адресу api.1cloud.ru/image{id}, где {id} — это идентификатор удаляемого шаблона.
curl -X DELETE -H 'Content-Type: application/json' -H 'Authorization: Bearer 75bb9805c018b1267b2cf599a38b95a3a811e2ef7ad9ca5ed838ea4c6bafaf50' "https://api.1cloud.ru/image/72"
Таким образом, с помощью методов API можно развернуть сервер, отправив всего один запрос. Автоматизировать мы можем все задачи по управлению хостингом. API-интерфейс может быть полезен как частным пользователям, которые не хотят разбираться со сложными технологиями, так и крупным клиентам, в планах которых начало предоставления собственных услуг на базе инфраструктуры провайдера.
Кстати об инфраструктуре. При её создании мы хотели как можно сильнее разделить компоненты хостинга. В этом случае при увеличении нагрузки мы сможем просто перенести нужный сервис на новый сервер. Система 1cloud содержит следующие элементы: сайт, внутренняя панель, панель администратора и службы поддержки, сервис нотификации, сервис обработки задач, платежный сервис, сервис отработки асинхронных заданий, сервис мониторинга.
Сайт 1cloud, о редизайне которого мы недавно рассказывали, служит своеобразной витриной, которую в первую очередь видят посетители. Для повышения удобства использования нами были добавлены важные для пользователей элементы, вроде калькулятора, позволяющего произвести расчет стоимости услуг. Другие сервисы отвечают за тарификацию и списание денег с клиентов, отправку автоматических сообщений с уведомлениями и мониторинг системы с целью поиска «зависших» задач. Подробнее об этом вы можете прочитать вот здесь.
Если вернуться к вопросу об API, то он также способен помочь в развитии Интернета вещей. «Интернета вещей без API не бывает — каждый бит информации, переходящей с устройства на устройство, передается с помощью API», — говорит Медрано. Более того, IoT позволяет проводить «передачу данных на уровне устройств, не тратя время на их стороннюю обработку».
Так что же значит Интернет вещей для бизнеса? То, чем он является для отдельно взятой организации зависит от того, чем компания собирается заниматься. Тем не менее, определенный «скелет» все же существует и, по словам исследователя компании 451 Research Брайана Партриджа (Brian Partridge), состоит из устройств, объединяющей их сети и облачного сервиса.
Интернет вещей подразумевает наличие связей между множеством элементов, что серьезно усложняет инфраструктуру. Однако, согласно данным Tech Pro Research, 29% из опрошенных американских компаний уже используют IoT для сбора данных, а еще 26% планируют это делать в ближайшем будущем.
А ведь, по данным Gartner, количество генерируемых данных с каждым годом будет только увеличиваться и к 2020 году достигнет 40 зеттабайт.
Данные всегда были основной Интернета вещей, соответственно нужно позаботиться об их безопасности. По словам Партриджа, существуют три главные опасности, связанные с передачей данных в Интернете вещей:
- Обеспечение конфиденциальности — предотвращение доступа к данным со стороны третьих лиц
- Сохранение целостности — передача данных с невозможностью перехвата или изменения
- Аутентификация — способ определения того, достигли ли передаваемые данные точки назначения
Задача заключается не только в том, чтобы безопасно подключить устройство к сети, а обеспечить безопасность взаимодействия разных устройств. Партридж говорит, что ему часто задают один и тот же вопрос: «Так стоит ли избегать Интернета вещей?» Он всегда отвечает, что бояться IoT-технологий не нужно, поскольку они дают компаниям большие возможности по развитию бизнеса.
При этом точкой интереса в обеспечении безопасности должны стать не устройства и программное обеспечение, а способы взаимодействия различных элементов связанной системы. Все это открывает новые возможности для провайдеров услуг — они могут предложить в качестве сервиса защиту «точек взаимодействия» и шлюзов. Это поможет бизнесу обеспечить безопасность своих данных. Не все компании смогут самостоятельно обеспечить безопасность данных IoT-систем, потому им будет проще обратиться к сторонним поставщикам, которые помогут защитить корпоративные системы.
P.S. Пара наших публикаций по теме на Хабре: