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

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

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

Простой сервис рабочих процессов Amazon (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.

Принцип работы

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

Примечание

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

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

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