Почему API (интерфейсы прикладного программирования) пользуются такой большой популярностью у разработчиков ПО? Причина в том, что они хорошо сочетаются с микросервисами, что особенно важно в связи с развитием облачных приложений, отмечают опрошенные порталом Enterprisers Project эксперты.
«Микросервисы — это подход к дизайну приложений и разработке ПО, который на практике применяет Закон Деметры, связывая разрозненные услуги в гибридных средах», — пояснил вице-президент OpsRamp Бхану Сингх. Микросервисы подходят для современных распределенных гибридных облачных и многоуровневых ИТ-инфраструктур, однако при этом возникает вопрос: что обеспечивает связность этих сложнейших инфраструктур?
Большую часть этой работы берут на себя API. Сингх отмечает, что каждый компонент микросервисов предоставляет стандартные API, к которым, в свою очередь, могут подключаться другие сервисы. Таким образом, в архитектуре микросервисов именно API поддерживают совместимость и интероперабельность между компонентами. «API являются средством коммуникации и взаимодействия между отдельными независимыми микросервисами. Они являются частью более обширной экосистемы приложений, предоставляя независимую дискретную услугу из любой точки экосистемы», — уточнил Сингх.
Учитывая взаимозависимость API и микросервисов, нужно следить за их развитием в комплексе, тем более, что все больше ИТ-команд отходит от монолитной схемы разработки в пользу более современных методов. Enterprisers Project собрал мнения экспертов, чтобы выявить важные тенденции развития API и микросервисов.
Декларативные API
Разработчики применяют два основных типа API — императивные и декларативные, — и именно последние помогают сделать архитектуры микросервисов более выполнимыми. Архитектор ПО CYBRIC Барри Уокер поясняет: «Декларативные API показывают, чего разработчик пытается достичь, тогда как императивные API предусматривают последовательное выполнение инструкций. Декларативный API — это высокоуровневая конструкция».
Эффективность декларативных API вырастает по мере масштабируемости микросервисов. Их также имеет смысл применять, когда характер разработки микросервисов имеет изначально несвязанный характер, это же касается и распределенных систем в целом. «Привлекательность декларативных API заключается в том, что разработчику не нужно заботиться о том, как и что он делает — эти функции на себя берет базовая инфраструктура. Мы создаем малосвязанные между собой микросервисы, когда одни сервисы не должны знать о внутренней работе других служб. Это достигается при помощи декларативных API и позволяет нам создавать гибкие и устойчивые системы с задействованием независимых сервисов», — говорит Уокер.
Парадигма «ожидаемого состояния»
Последние тенденции в программировании показывают, что вместо императивных API, описывающих на том или ином уровне детализации, как решить задачу и представить результат, разработчики отдают предпочтение декларативным API, которые приводят к достижению «ожидаемого состояния» системы или среды. В целом, декларативное программирование идет от человека к машине, тогда как императивное — от машины к человеку. Как следствие, декларативные программы не используют понятия состояния, то есть не содержат переменных и операторов присваивания.
«Архитекторам ПО нравится элегантность микросервисов, но настройка отдельных компонентов — это настоящая проблема, поэтому фреймворки оркестровки, такие как Kubernetes, приобретают все большую популярность. Они придают архитектурам микросервисов практичность в масштабах предприятия», — говорит старший директор по доставке приложений Nexient Нейт Берент-Спилсон.
Эта практичность обеспечивается за счет декларативного подхода. «Вместо того, чтобы вынуждать пользователей предпринимать определенные шаги для определения состояния, [Kubernetes] делает это автоматически, нужно просто задекларировать выбор. Когда Kubernetes обнаруживает условия за пределами желаемого состояния, он автоматически принимает меры, чтобы вернуть их обратно в пределы. Это мощная парадигма для сложных, быстро меняющихся ИТ-сред, таких как облако и микросервисы, где внести необходимые корректировки вручную практически невозможно», — объясняет Берент-Спилсон.
ИТ-команды уже оценили преимущества Kubernetes. «Декларативный подход к организации оркестровки открывает парадигму „желаемого состояния“, применяемой в более широком смысле», — добавил он.
API-шлюзы
«Растущая популярность шлюзов API является одной из наиболее заметных тенденций на рынке ПО. Они выступают как своего рода консоль управления и консьерж для распределенных архитектур, включая микросервисы», — говорит Берент-Спилсон. По его словам, API-шлюзы — это не новая технология, а интерес к ней подогревается вследствие того, что все больше организаций сталкиваются с точкой перегиба. Это значит, что им не обойтись без шлюзов для управления и оркестровки API.
Применение шлюзов несет ряд выгод. «Они используют метаданные для быстрого отображения всех микросервисов, связанных с различными категориями вашего приложения, и позволяют управлять версиями», — говорит Берент-Спилсон.
Их также можно применять для создания макета конечной точки API в целях тестирования, особенно в DevOps- или других высокоскоростных средах. «Это идеально подходит для фронтэнд-команд, которым API нужен сразу после подписания договора [или утверждения проекта], и у них нет времени ждать команду бэкэнда для установки mock-объекта API, не говоря уже о его полной версии. Фронтэнд-команда может разработать виртуальный API в комплекте с интеграционными тестами, и когда появляется реальная версия, она может быстро их воспроизвести, чтобы убедиться, что она соответствуют ожиданиям», — сказал он.
Наконец, API-шлюз может ускорить и «демократизировать» разработку, поскольку позволяет разработчикам публиковать новые API без помощи оперативного отдела. «Если вы столкнулись с проблемой создания микросервисов, лучше всего разобраться с этим самому. Самодиагностика обеспечивает большую гибкость и быстрое развертывание, чего большинство организаций пытаются достичь с помощью микросервисов», — отметил Берент-Спилсон.
Бизнес-преимущества
Микросервисы вызывают все большее внимание ИТ-профессионалов. По словам Сингха, лучше всего преимущества API и микросервисов выражаются в плане их приспособляемости к определенному кругу бизнес-задач.
Он выделяет пять тенденций применения API как части стратегии микросервисов:
- обеспечение скорости и гибкости, необходимых для использования внутренних и внешних инноваций для удовлетворения потребностей бизнеса;
- интеллектуальная интеграция между независимыми и зависимыми системами в гибридных средах;
- создание так называемого «моста к облаку». Другими словами, начало миграции и подключение корпоративной инфраструктуры к облачным сервисам;
- автоматизация сложных задач при сохранении должной прозрачности процессов и контроля;
- повышение производительности за счет лучшей поддержки и отладки.
Примером того, как умная интеграция в гибридную облачную среду помогает достичь желаемых результатов, служит созданное на базе микросервисов и работающее в частном облаке приложение для выгрузки или обработки больших массивов данных, которое при помощи API может подключаться к публичной службе хранения облачных данных, что избавляет предприятие от приобретения локальной СХД для частного облака. Все, что для этого требуется — настройка API.
«Микросервисы делают приложения „умными“, т. е. они могут принимать решения — что им брать из публичного облака, что использовать как бессерверную функцию или задействовать эту функцию из частного облака, если так будет дешевле. Микросервисные приложения учитывают риски, пропускную способность сетей, производительность и т. д.», — сказал Сингх.