Перейти к главному контенту

Простой сервис рабочих процессов Amazon

Почему именно SWF?

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

Если этапы приложения выполняются более чем за 500 миллисекунд, то вам потребуется отслеживать состояние обработки и выполнять восстановление или повторный запуск при сбое, и в этом вам поможет сервис Amazon SWF.

Если вы ищете сервис визуального потока процессов с низким содержанием кода для оркестрации сервисов AWS, автоматизации бизнес-процессов или создания бессерверных приложений, узнайте больше об AWS Step Functions.

Преимущества

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

Amazon SWF работает на базе высокодоступных ЦОД Amazon, поэтому функции отслеживания состояния и движок обработки заданий будут доступны приложениям в любой момент. Amazon SWF сохраняет задания с обеспечением избыточности, надежно назначает их компонентам приложения, отслеживает ход их выполнения и сохраняет их последнее состояние.

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

Сервис Amazon SWF незаметно для пользователя масштабируется в соответствии с уровнем использования приложения. При добавлении в приложение новых облачных потоков процессов или увеличении их сложности не требуется ручное управление ими.

Сервис Amazon SWF позволяет создавать компоненты приложения и логику координации на любом языке программирования и запускать их в облаке или локально.

Сведения о продукте Amazon SWF

С помощью Amazon SWF управлять рабочими процессами приложения очень просто.

Функции Amazon SWF

Amazon SWF действует как центр координирования всех различных компонентов приложения:

  • управляет состоянием приложения;
  • отслеживает выполнение рабочих процессов и регистрирует ход выполнения;
  • задерживает и распределяет задания;
  • назначает задания определенным хостам приложений.

Для работы с Amazon SWF следуйте приведенным инструкциям.

  • Задавать имена рабочих процессов можно с помощью Консоли управления AWS или API Amazon SWF.
  • Для запуска нового рабочего процесса используйте API Amazon SWF. В результате будет запущена конкретная последовательность заданий рабочего процесса, называемая его выполнением.
  • С помощью API Amazon SWF машин-исполнителей (исполнитель – это компонент приложения, выполняющий некоторое задание) определяйте порядок заданий, управляйте условными процессами и реализуйте циклы для выполнения рабочих процессов.
  • С помощью API Amazon SWF ваших исполнителей запрашивайте и выполняйте задания рабочих процессов в облаке или локально.
  • Отслеживайте состояние и ход выполнения рабочих процессов и связанных с ними заданий в Консоли управления AWS.

Ознакомьтесь с примером работы в Консоли управления AWS, который включает этапы регистрации и запуска демонстрационного приложения. Подробные сведения см. в документации.

Подробное описание

Amazon SWF – это полностью управляемый сервис работы с процессами для создания масштабируемых и эластичных приложений. Amazon SWF содержит простые API, которые могут быть вызваны из кода, написанного на любом языке программирования и выполняемого на инстансах EC2 или любых машинах с подключением к Интернету, расположенных по всему миру.

Amazon SWF работает как узел координации, с которым взаимодействуют хосты вашего приложения. Вам требуется создать желаемые рабочие процессы и связанные с ними задания, а также код для их выполнения и сохранить эти элементы с помощью Amazon SWF. Каждый запуск рабочего процесса рассматривается как отдельное его выполнение. Вы программируете запросы компонентами вашего приложения различных заданий, выполняемых в ходе рабочего процесса, а сервис Amazon SWF координирует выполнение заданий в определенном вами порядке на ваших хостах, как в облаке, так и локальных. Для регистрации успешного выполнения или сбоя задания приложения взаимодействуют с сервисом Amazon SWF посредством API. После этого сервис либо продолжает выполнение заданий в последовательности, назначая следующее задание рабочего процесса хосту приложения, либо перезапускает невыполненное задание в зависимости от функционального кода приложения.

Авторизуйтесь в Консоли управления AWS, чтобы начать выполнение рабочего процесса Amazon SWF. Выполнение рабочего процесса можно также начать с помощью API Amazon SWF. Сервис Amazon SWF использует интуитивно понятный интерфейс, отличающийся простотой использования и высокой гибкостью.

  • StartWorkflowExecution: запускает последовательность рабочих задач и делает первую задачу доступной одному из хостов вашего приложения.
  • DescribeWorkflowExecution: предоставляет статус выполнения рабочего процесса и задач.
  • PollForActivityTask: хосты вашего приложения (в облаке или локально) запрашивают и выполняют рабочие задачи в непрерывном цикле.
  • RespondActivityTaskCompleted: хост приложения сообщает Amazon SWF об успешном выполнении задачи. После этого Amazon SWF продолжает выполнение рабочего процесса, передавая следующее задание хосту приложения.
  • TerminateWorkflowExecution: перестаньте продвигать выполнение определенного рабочего процесса. После этого Amazon SWF больше не будет назначать хосту приложения следующие задания этого конкретного выполнения рабочего процесса.

Надлежащее использование и ограничения

Использование данного сервиса регламентируется пользовательским соглашением Amazon Web Services.

Примеры использования

Кодирование видео с помощью сервисов Amazon S3 и Amazon EC2. В этом примере использования видео большого размера загружаются в Amazon S3 в виде фрагментов. Загрузка фрагментов должна контролироваться. После того как фрагмент загружен, он кодируется путем загрузки в инстанс Amazon EC2. Перекодированный фрагмент сохраняется в другом местоположении Amazon S3. После выполнения кодирования всех фрагментов видеофайла выполняется их объединение в общий файл, полностью сохраняемый в хранилище Amazon S3. Во время этого процесса могут возникнуть сбои из-за ошибок при кодировании одного или нескольких фрагментов. Такие сбои должны быть обнаружены и обработаны с помощью системы по управлению потоками процессов сервиса Amazon SWF.

Переносите компоненты из центров обработки данных (ЦОД) в облако. Выполнение критически важных бизнес-операций осуществляется в частном центре обработки данных, но их необходимо полностью переместить в облако, не допуская перерывов в работе. В приложениях на основе сервиса Amazon SWF можно объединить исполнители, в т. ч. компоненты, которые работают в ЦОД, с исполнителями, которые запущены в облаке. Для эффективного переноса исполнителей ЦОД сперва необходимо развернуть в облаке новые исполнители того же типа. Исполнители в ЦОД продолжат работать как обычно, параллельно с новыми исполнителями в облаке. Исполнители в облаке тестируются и проверяются путем передачи им части нагрузки. Во время тестирования приложение продолжит функционировать без перебоев благодаря работе исполнителей ЦОД. После успешного тестирования исполнители ЦОД будут поэтапно остановлены, а облачные исполнители вертикально масштабируются. Таким образом, будет осуществлен полный переход на облачное приложение по управлению потоками процессов. Этот облачный процесс можно повторить для всех исполнителей ЦОД, выполняя полное перемещение приложения в облако. Если по неким соображениям определенные этапы обработки должны выполняться исключительно в частном ЦОД, то соответствующие исполнители могут продолжить свою работу в частном ЦОД, участвуя при этом в выполнении приложения.

Обрабатывайте большие каталоги продукции с помощью Amazon Mechanical Turk. При проверке данных в больших каталогах продукты в каталоге обрабатывается пакетами. Разные пакеты могут обрабатываться параллельно. При обработке каждого из пакетов данные о продуктах извлекаются с серверов ЦОД и преобразуются в файлы CSV (файлы, значения в которых разделены запятыми), необходимые для пользовательского интерфейса реквестора Amazon Mechanical Turk (RUI). Файл CSV загружается для формирования и запуска заданий для обработки человеком (HIT). После выполнения заданий HIT полученный файл CSV проходит процесс обратного преобразования для получения данных в исходном формате. Результаты оцениваются, и сотрудники Amazon Mechanical Turk получают оплату за приемлемые результаты. Невыполненные задания отправляются на повторную обработку, а приемлемые результаты заданий HIT используются при обновлении каталога. При обработке пакетов система отслеживает качество работы сотрудников Amazon Mechanical Turk и назначает соответствующий уровень оплаты. Невыполненные задания HIT повторно пакетируются и заново проходят конвейер обработки.

AWS Flow Framework

AWS Flow Framework – это набор вспомогательных библиотек, который ускоряет и упрощает создание приложений с использованием сервиса Amazon Simple Workflow.

Как это работает

Простая модель программирования AWS Flow Framework позволяет легко создавать приложения для выполнения операций на множестве машин. С помощью AWS Flow Framework можно быстро создать задания, скоординировать их выполнение и указать зависимости между ними – так же, как это делается в обычных программах. Например, можно запускать метод приложения на удаленном компьютере простым вызовом метода в коде приложения, который размещен на отдельном локальном компьютере. AWS Flow Framework обеспечивает работу комплексного двустороннего процесса, требуемого для выполнения удаленного метода, и возвращает его результат локальному приложению, используя сохраненную сервисом Amazon Simple Workflow информацию. Результат любого выполненного метода можно использовать для соединения отдельных взаимозависимых частей кода. AWS Flow Framework позволяет с помощью несложного синтаксиса выражать зависимости между методами с использованием простого подхода, который предусматривает блокирование и ожидание обратного вызова. Кроме того, он позволяет обрабатывать сбои на удаленной машине точно так же, как и локальные ошибки, и без труда задавать правила повторного выполнения важных методов приложения в случае их сбоя.

Примечание

AWS Flow Framework для Ruby больше не находится в стадии активной разработки. Хоть существующий код и будет работать, новые функции и версии не будут появляться. Исходный код Flow Framework для Ruby по-прежнему будет доступен в архиве AWS SWF GitHub. Если ваше приложение Simple Workflow на базе Ruby развивается и меняется, возможно, стоит рассмотреть несколько вариантов, включая переход на AWS Step Functions или использование собственного API Simple Workflow. Подробнее см. в руководстве для разработчиков AWS Simple Workflow.

С помощью AWS Flow Framework достаточно написать простой код, а выполнение всей работы с API Amazon Simple Workflow обеспечат встроенные объекты и классы данного сервиса. К числу выполняемых AWS Flow Framework операций относится создание и выполнение этапов работы приложения, отслеживание хода выполнения; кроме того, он позволяет определять правила осуществления повторных попыток в случае сбоев и др. Тем временем Amazon Simple Workflow Service обслуживает состояние выполнения приложения, раздает задания доступным исполнителям и проверяет историю всех ваших заданий.

AWS Flow Framework – это платформа Java с открытым исходным кодом, разработанная и управляемая AWS. Ниже приведены ссылки на библиотеки, исходный код, документацию, примеры и другие ресурсы.