Everest

Everest: облачная платформа для публикации, выполнения и композиции вычислительных приложений в распределенной среде

 

Сайт проекта: http://everest.distcomp.org/

Возможность беспрепятственно использовать и сочетать при решении задач существующие вычислительные приложения и ресурсы является ключевым фактором, влияющим на производительность исследований во многих областях науки. Однако научные приложения зачастую требуют особой квалификации для своей установки, конфигурации и запуска, которой не обладает большинство исследователей. То же относится к конфигурации и использованию вычислительных ресурсов, требуемых для запуска приложений. Кроме того, исследователи часто ощущают потребность в автоматизации совместного использования нескольких приложений и в эффективном запуске приложений на нескольких доступных ресурсах.
Разрабатываемая в рамках проекта облачная платформа Everest реализует новый подход к решению проблем публикации, выполнения и композиции вычислительных приложений в распределенной среде. Данный подход, основанный на использовании моделей облачных вычислений и современных технологий Web,  объединяет преимущества существующих подходов и в то же время устраняет присущие им недостатки.

 

Структура облачной платформы Everest

В отличие от существующих решений, Everest является облачной платформой, реализующей модель облачных вычислений Platform as a Service (PaaS). Это означает, что вся функциональность платформы доступна через удаленные интерфейсы: пользовательский веб-интерфейс и программный интерфейс (REST API). Один экземпляр платформы может обслуживать много пользователей, позволяя им размещать свои приложения, запускать их и делиться ими с другими пользователями без необходимости установки дополнительного ПО на компьютеры пользователей. Размещенные в Everest приложения автоматически становятся доступными через веб-интерфейс и REST API. Последний позволяет автоматизировать работу с приложениями, осуществлять их композицию в рамках расчетных схем (workflow) и работать с приложениями из внешних систем. Другой отличительной чертой Everest является поддержка запуска приложений на произвольных комбинациях внешних вычислительных ресурсов, подключенных пользователями платформы.

В части их внешнего интерфейса приложения Everest следуют единой модели. А именно - приложение имеет набор входов (определяют запрос к приложению) и выходов (определяют результат расчетов для некоторого запроса). Данные приложения удобно представлять в виде “черных ящиков” с некоторыми входными и выходными портами, или в виде “функции” с некоторыми аргументами и возвращаемыми значениями. Описанная модель позволяет реализовать унифицированный REST-интерфейс для доступа к приложениям по сети, что необходимо для поддержки композиции приложений. Данный интерфейс реализован как часть REST API платформы.

В создаваемую платформу заложена поддержка приложений с произвольной структурой, в том числе состоящих из нескольких вычислительных задач и генерирующих данные задачи динамически. Для упрощения создания приложений Everest включает универсальные реализации данных шагов (т.н. каркасы), которые могут быть настроены пользователем под цели конкретного приложения. Реализованный “декларативный” подход позволяет во многих случаях избежать программирования при размещении в Everest приложений.

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

Разработан механизм интеграции внешних вычислительных ресурсов с создаваемой облачной платформой, обеспечивающий безопасный запуск заданий на ресурсах от имени пользователей платформы и гибкое связывание ресурсов с приложениями. Основной метод подключения ресурсов к платформе основан на использовании специально разработанной программы, так называемого агента. Агент выполняется на стороне ресурса и играет роль посредника между платформой и ресурсом. Помимо доступа к отдельным серверам и кластерам через описанного агента, была реализована интеграция платформы с европейской грид-инфраструктурой EGI.

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