Вопрос: Что такое Amazon SWF?
Amazon Simple Workflow Service (SWF) – это веб-сервис, упрощающий координацию работы распределенных компонентов приложений. Amazon SWF позволяет создавать приложения, используемые для различных целей, среди которых приложения для обработки мультимедийных данных, серверные веб-приложения, рабочие бизнес-процессы и конвейеры для анализа данных в виде скоординированных заданий. Задания представляют собой обращения к различным этапам обработки в приложении, которые могут выполняться с помощью исполняемого кода, вызовов веб-сервисов, действий человека или исполнения сценариев.

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

Начать работу с AWS бесплатно

Создать бесплатный аккаунт
или войти в Консоль

Уровень бесплатного пользования AWS включает 750 часов использования узла микрокэша Amazon ElastiCache.

Сведения об уровне бесплатного пользования AWS »

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

Для координации работы исполнителей в приложении надо написать программу, называемую решающим блоком, на языке программирования по вашему выбору. Разделение этапов обработки и их координации позволяет контролировать выполнение приложения, предоставляя гибкие возможности по их независимому развертыванию, запуску, масштабированию и обновлению. Можно развернуть исполнителей и решающие блоки либо в облаке (например в инстансе Amazon EC2 или Lambda), либо на машинах, защищенных корпоративными брандмауэрами. Из-за разъединения исполнителей и решающих блоков функциональный код ваших приложений можно динамически изменять, что позволяет быстро обновлять приложение для соответствия новым требованиям. Например, можно удалять, пропускать или повторять задания, а также создавать новые потоки приложений, просто изменив решающий блок.

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

Вопрос: Для чего предназначен сервис Amazon SWF?
Amazon SWF можно использовать для решения многих проблем, возникающих при создании приложений с распределенными компонентами. Например, можно использовать Amazon SWF и сопутствующую интегрированную среду программирования AWS Framework Flow для решения следующих задач.

  • Написания приложений в виде асинхронных программ, используя простые программные конструкции, которые позволяют абстрагироваться от решения базовых задач, таких как инициирующие задания для удаленного запуска, а также отслеживания состояния выполнения программы.
  • Контроль за состоянием выполнения вашего приложения (например, определения того, какие этапы завершены, какие из них выполняются и т. д.) Вам не нужно использовать базы данных, пользовательские системы или специальные решения, чтобы сохранить состояние выполнения.
  • Взаимодействие между компонентами приложения и управления потоком заданий. С Amazon SWF вам не нужно разрабатывать протокол взаимодействия или беспокоиться о потерянных или повторяющихся заданиях.
  • Централизации координации этапов в своем приложении. Логику координации не нужно распределять по разным компонентам, она может быть сосредоточена в одной программе.
  • Интеграции в свои приложения ряда программ и компонентов, среди которых устаревшие системы и облачные сервисы сторонних поставщиков. Предоставляя вашим приложениям гибкие возможности по выбору того, где и в какой комбинации их компоненты будут развернуты, Amazon SWF помогает вам осуществлять постепенный перенос компонентов приложений из частных центров обработки данных в инфраструктуру публичного облака без снижения доступности приложений или их производительности.
  • Автоматизации рабочих процессов, включающих в себя задания, для выполнения которых человеку требуется длительное время (например, задания утверждения, просмотра, анализа и т. д.) Amazon SWF надежно отслеживает состояние этапов обработки, которая выполняется в течение нескольких дней или месяцев.
  • Создания надстройки над Amazon SWF на уровне приложения для обеспечения поддержки для конечных пользователей определенных языков, зависящих от домена. Поскольку Amazon SWF предоставляет вам гибкие возможности по выбору языка программирования, вы можете легко создавать интерпретаторы для специализированных языков (например, XPDL) и настраиваемых пользовательских интерфейсов, включая инструменты моделирования.
  • Обеспечение подробного аудита и видимость всех запущенных экземпляров приложений. Вы можете включить возможности отображения, предоставляемые Amazon SWF, в свои собственные пользовательские интерфейсы, используя API, предоставляемые Amazon SWF.

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

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

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

Вопрос: Что такое исполнители и решающие блоки?
В Amazon SWF приложение реализуется путем создания исполнителей и решающих блоков, которые напрямую взаимодействуют с сервисом. Исполнители – это программы, которые взаимодействуют с Amazon SWF для получения заданий, их обработки и возвращения результатов обработки. Решающий блок – это программа, которая управляет координацией заданий, т.е. их порядком, параллельным выполнением и планированием в соответствии с алгоритмом приложения. Исполнителей и решающий блок можно запускать либо в облачной инфраструктуре (например, в инстансе Amazon EC2), либо на машинах, защищенных брандмауэрами. Amazon SWF выступает в роли посредника при взаимодействии исполнителей с решающим блоком. Он позволяет решающему блоку бесперебойно получать данные о ходе выполнения заданий и постоянно инициировать новые задания. В то же время Amazon SWF сохраняет задания, назначая для их выполнения исполнителей, когда они готовы, и наблюдает за ходом их выполнения. Это гарантирует, что задание назначено только один раз и не будет назначено повторно. Поскольку Amazon SWF надежно сохраняет состояние приложения, исполнителям и решающим блокам не нужно отслеживать ход выполнения. Они могут работать независимо друг от друга и быстро масштабироваться. Дополнительные сведения об этапах создания приложений с помощью Amazon SWF см. в разделе «Функциональные возможности» на странице описания сервиса Amazon SWF.

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

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

Вопрос: Когда стоит использовать Amazon SWF, когда – AWS Step Functions?

AWS Step Functions – полностью управляемый сервис для координации компонентов распределенных приложений и микросервисов с помощью виртуальных рабочих процессов. Вместо создания программы принятия решений достаточно определить машины состояния в JSON. Клиентам AWS рекомендуется начать использовать Step Functions в своих новых приложениях. Если Step Functions не отвечает вашим требованиям, попробуйте Amazon Simple Workflow (SWF). Amazon SWF обеспечивает полный контроль над логикой механизмов оркестрации, но усложняет разработку приложений. Программы для принятия решений можно написать на любом языке, либо воспользоваться средой Flow и составить из ее из программных элементов, которые организуют асинхронное взаимодействие автоматически. AWS продолжит поддерживать сервис Amazon SWF, среду Flow, а также всех клиентов, использующих Amazon SWF.

Вопрос: Чем отличаются сервисы Amazon SWF и Amazon SQS?

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

  • Amazon Simple Queue Service (Amazon SQS) предлагает надежные размещенные очереди с широкими возможностями масштабирования, предназначенные для хранения сообщений во время их передачи между приложениями или микросервисами. Amazon SQS позволяет передавать данные между компонентами распределенного приложения и разделять эти компоненты.
  • Amazon Simple Workflow Service (Amazon SWF) – это веб-сервис, благодаря которому проще координировать работу компонентов распределенных приложений.

Ниже приведены основные различия между Amazon SWF и Amazon SQS.

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

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

Рекомендуем ознакомиться с каждым из сервисов, чтобы определить, какое из решений лучше подходит в конкретном случае.

Вопрос: Какие задачи можно решать с помощью SWF?

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

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

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

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

При использовании Amazon SWF приведенный выше пример реализуется в виде набора рабочих процессов. Рабочий процесс обработки пакета BatchProcess выполняет обработку одного пакета. У него есть исполнители, которые извлекают данные, преобразуют их и отправляют через Amazon Mechanical Turk. Рабочий процесс BatchProcess выводит как допустимые, так и неудачно выполненные задания для обработки человеком. Они используются в качестве входных данных для трех других рабочих процессов: MTurkManager, UpdateCatalogWorkflow и RerunProducts. Рабочий процесс MTurkManager осуществляет выплаты за приемлемые результаты выполнения заданий для обработки человеком, сообщает о неудачном выполнении заданий для обработки человеком тем сотрудникам, которые работали над ними, а также обновляет свою базу данных, используемую для слежения за качеством результатов. Рабочий процесс UpdateCatalogWorkflow обновляет главный каталог на основании приемлемых результатов выполнения заданий для обработки человеком. Рабочий процесс RerunProducts ожидает накопления достаточно большого количества продуктов с неудачно выполненными заданиями для обработки человеком. После чего он создает пакет и отправляет назад в рабочий процесс BatchProcess. Полная сквозная обработка каталога осуществляется рабочим процессом CleanupCatalog, который инициирует выполнение указанных выше дочерних рабочих процессов. Наличие набора четко определенных рабочих процессов позволяет для этого примера использования спроектировать, обеспечить аудит и систематический запуск системы для обработки каталогов с несколькими миллионами продуктов.

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

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

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

Вопрос: Использует ли Amazon сервис Amazon SWF при создании своих приложений?
Да. Разработчики в Amazon используют Amazon SWF для большого числа проектов и запуска миллионов рабочих процессов ежедневно. Эти примеры использования включают в себя основные бизнес-процессы, лежащие в основе веб-сайтов Amazon.com и AWS, реализации нескольких веб-сервисов AWS и их API, анализ данных с помощью MapReduce для оперативного принятия решений и управления контентом пользователя, таким как веб-страницы, видео и книги Kindle.

Вопрос: Как начать работу с Amazon SWF?
Чтобы зарегистрироваться в сервисе Amazon SWF, перейдите на страницу сведений о сервисе Amazon SWF и нажмите кнопку «Зарегистрироваться». Если у вас еще нет аккаунта Amazon Web Services, вам будет предложено создать его. После регистрации вы сможете осуществить краткий обзор возможностей в консоли управления AWS, выполнив все шаги запуска простого приложения для преобразования изображений с помощью Amazon SWF. Вы также можете загрузить примеры AWS Flow Framework, чтобы узнать о различных возможностях этого сервиса. Чтобы начать пользоваться Amazon SWF в своих приложениях, обратитесь к документации Amazon SWF.

Вопрос: Есть ли примеры рабочих процессов, с помощью которых я могу ознакомиться с возможностями Amazon SWF?
Да. Начав работать с Amazon SWF, вы можете воспользоваться примером в Консоли управления AWS, который проведет вас через все этапы регистрации домена и типов, развертывания исполнителей и решающих блоков, а также запуска исполнителей на выполнение. Вы можете загрузить исходный код для исполнителей и решающих блоков, которые используются в этом пошаговом руководстве, запустить эти процессы в своей инфраструктуре и даже изменить их для создания своих собственных приложений. Вы также можете загрузить примеры AWS Flow Framework, которые показывают различные варианты использования Amazon SWF, например, для распределенной обработки данных, заданий Cron, а также развертывания стека приложения. Изучив представленный исходный код, вы сможете больше узнать о возможностях Amazon SWF и об использовании AWS Flow Framework для создания своих распределенных приложений.

Вопрос: Каким образом можно получить доступ к Amazon SWF?
Вы можете получить доступ к Amazon SWF любым из следующих способов.

  • С помощью AWS SDK для Java, Ruby, .NET или PHP.
  • С помощью AWS Flow Framework для Java (входит в состав AWS SDK для Java).
  • С помощью API веб-сервисов Amazon SWF.
  • Консоль управления AWS


Вопрос: Что такое регистрация?
Регистрация – это однократно выполняемое действие, которое вы выполняете для каждого разного типа рабочего процесса и действия. Вы можете зарегистрироваться либо программно, либо с помощью консоли управления Amazon SWF. Во время регистрации вы предоставляете уникальный идентификатор типа для каждого типа действия и рабочего процесса. Вы также предоставить информацию по умолчанию, которая используется во время работы рабочего процесса, например, значения тайм-аутов и параметры распределения заданий.

Вопрос: Что такое домены?
В SWF вы определяете логические контейнеры, называемые доменами, для ресурсов вашего приложения. Домены можно создавать только на уровне вашего аккаунта AWS, при этом они не могут быть вложенными. Домен может иметь любое имя, определяемое пользователем. Каждый ресурс приложения, такой как тип рабочего процесса, тип действия или выполнение, принадлежит только одному домену. Во время регистрации необходимо указать домен, в котором должны быть зарегистрированы рабочий процесс или действие. Когда вы запускаете выполнение, оно автоматически создается в том же домене, к которому относится его тип рабочего процесса. Идентификаторы ресурсов (например, идентификатор типа, идентификатор выполнения) являются уникальными только в одном домене, т. е. вы можете повторно использовать идентификаторы в разных доменах.

Вопрос: Как можно управлять ресурсами приложений в различных средах и группах?
Можно использовать домены для организации ресурсов приложения так, чтобы ими можно было легче управлять, при этом они не оказывали бы случайного влияния друг на друга. Например, можно создавать различные домены для среды разработки, тестирования и рабочей среды, а также создавать соответствующие ресурсы в каждом из них. Хотя вы можете зарегистрировать одинаковый тип рабочего процесса в каждом из этих доменов, он будет обрабатываться как отдельный ресурс в каждом домене. Вы можете изменять его настройки в домене для разработки или управлять выполнением процессов в тестовом домене, не затрагивая соответствующие ресурсы в рабочем домене.

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

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

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

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

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

Вопрос: Что такое AWS Flow Framework? Как эта среда поможет мне в координации рабочих процессов?
AWS Flow Framework – это интегрированная среда программирования, которая позволяет быстро и просто разрабатывать приложения на основе Amazon SWF. Она позволяет абстрагироваться от деталей координации на уровне заданий и асинхронного взаимодействия с помощью простых конструкций программирования. Координация рабочих процессов в Amazon SWF включает инициирование удаленных действий, выполнение которых занимает разное время (например, заданий действия), а также правильное установление зависимостей между ними.

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

Вопрос: Как исполнители и решающие блоки взаимодействуют с Amazon SWF? Не потребляет ли протокол опроса много ресурсов?
Обычно протоколы, основанные на опросе, требуют от разработчиков поиска оптимальной частоты выполнения опросов. Если опросы будут выполняться слишком часто, то вполне возможно, что для многих опросов будут возвращаться пустые результаты. Это приводит к возникновению ситуации, когда большая часть приложений и сетевых ресурсов будут потрачены на опросы, не дающие значимых результатов для дальнейшего выполнения заданий. Если опросы будут выполняться недостаточно часто, то сообщения могут храниться дольше, приводя к увеличению задержек при работе приложения.

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

Вопрос: Можно ли использовать существующий веб-сервис в качестве исполнителя?
Исполнители используют стандартные запросы HTTP GET для получения заданий Amazon SWF и возвращения результатов. Для использования существующего веб-сервиса в качестве исполнителя вы можете создать оболочку, которая получает задания из Amazon SWF, вызывает необходимые API веб-сервиса и возвращает результаты обратно в Amazon SWF. В оболочке вы преобразуете входные данные задания в параметры для API ваших веб-сервисов. Кроме того, вы также преобразуете выходные данные из API веб-сервисов в результаты задания и возвращаете их в Amazon SWF.

Вопрос: Имеются ли в Amazon SWF ограничения, связанные с выбором определенных языков программирования?
Нет, вы можете использовать любой язык программирования для создания рабочего или управляющего процесса, а также можете взаимодействовать с Amazon SWF с помощью API веб-сервисов. Пакеты SDK AWS на данный момент имеются для Java, .NET, PHP и Ruby. AWS SDK для Java включает в себя AWS Flow Framework.

Вопрос: Я хочу быть уверенным в том, что при каждой активации моего бизнес-процесса будет только одно его выполнение (например, для транзакций, отправки данных или назначения). Как это сделать?
Когда начинается выполнение нового рабочего процесса, вы предоставляете идентификатор для этого выполнения рабочего процесса. Это позволяет связать выполнение с бизнес-объектом или действием (например, с идентификатором клиента, именем файла, серийным номером). Amazon SWF гарантирует, что идентификатор выполнения будет уникальным, пока оно запущено. В течение этого времени любые попытки начать выполнение с тем же идентификатором завершатся неудачей. Это позволяет вам легко удовлетворить потребности бизнеса, когда для определенной бизнес-операции не должно быть запущено более одного выполнения, например, для транзакций, отправки данных или назначения заданий. Рассмотрим рабочий процесс, используемый для регистрации нового пользователя на веб-сайте. Когда пользователь нажимает кнопку отправки, в качестве названия выполнения можно использовать уникальный адрес электронной почты пользователя. Если выполнение уже существует, то вызов запуска выполнения завершится с ошибкой. Не требуется никакого дополнительного кода для предотвращения конфликтов, возникающих в результате нажатия пользователем кнопки более одного раза во время выполнения регистрации.

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

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

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

Вопрос: У меня множество выполнений, работающих в любое время, но несколько из них часто завершаются с ошибкой или зависают. Как можно обнаруживать подобные выполнения и устранять проблемы?
Amazon SWF позволяет осуществлять поиск выполнений с помощью консоли управления и API видимости. Можно осуществлять поиск по различным критериям, включая временные интервалы, в течение которых выполнение начинается или завершается, текущему состоянию (т.е. открыто или закрыто), а также стандартным сбоям (например, истекло, прекращено). Чтобы сгруппировать несколько выполняющихся рабочих потоков, можно использовать до 5 тегов, чтобы связать пользовательский текст с выполнением рабочих процессов при их запуске. В консоли управления AWS можно использовать теги при поиске выполняющихся рабочих процессов.

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

Вопрос: У меня тип действия, который можно использовать в нескольких приложениях. Можно ли использовать его в этих приложениях?
Да. Несколько приложений могут совместно использовать данный тип действия в том случае, если приложения и действия зарегистрированы в одном домене. Для реализации этого у вас могут быть разные решающие блоки, инициирующие задания для конкретного типа действия и добавляющие их в список заданий, к которому будут обращаться рабочие процессы для получения этого действия. Исполнители этого типа действия затем будут получать задания действия из всех различных приложений. Если вы хотите указать, из какого приложения поступило задание действия, или вы хотите развернуть разные наборы рабочих процессов для разных приложений, можете использовать несколько списков заданий. См. вопрос Как убедиться, что исполнитель и решающий блок получают только те задания, которые они могут обрабатывать?

Вопрос: Можно ли использовать AWS Identity and Access Management (IAM) для управления доступом к Amazon SWF?
Да. Можно предоставить пользователям IAM разрешения для доступа к Amazon SWF. Пользователи IAM могут получать доступ только к тем доменам SWF и API, которые вы укажете.

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

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

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

Вопрос: Сколько типов рабочих процессов, типов действий и доменом можно зарегистрировать с помощью Amazon SWF?
Вы можете иметь не более 10 000 рабочих процессов и типов действий (в общей сложности), которые либо зарегистрированы, либо являются устаревшими в каждом домене. Вы можете иметь не более 100 доменов Amazon SWF (в том числе зарегистрированных и устаревших доменов) в своем аккаунте AWS. Если вы думаете, что превысите вышеуказанные лимиты, используйте эту форму, чтобы связаться с командой Amazon SWF для обсуждения своего сценария использования и попросить установить более высокий лимит.

Вопрос: Существуют ли ограничения на количество выполнений рабочих процессов, которые можно запускать одновременно?
В любой момент времени у вас может быть не более 100 000 открытых выполнений в одном домене. Какие-либо другие ограничения, связанные с суммарным числом выполнений, которые вы запускаете, или числом выполнений, поддерживаемых Amazon SWF, отсутствуют. Если вы думаете, что превысите вышеуказанные лимиты, используйте эту форму, чтобы связаться с командой Amazon SWF для обсуждения своего сценария использования и попросить установить более высокий лимит.

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

Вопрос: Что произойдет, если выполнение моего рабочего процесса будет приостановлено на длительный период времени?
Amazon SWF не принимает никаких специальных действий, если выполнение рабочего процесса было приостановлено на длительный период времени. Неактивные выполнения зависят от таймаутов, которые вы задали. Например, если вы установите максимальную продолжительность выполнения в 1 день, то неактивное выполнение будет прекращено по таймауту, если оно превысит лимит в 1 день. На неактивные выполнения также распространяются ограничения Amazon SWF, связанные с максимальной продолжительностью работы выполнений (1 год).

Вопрос: Сколько времени занимает обработка задания исполнителем?
Amazon SWF не накладывает каких-либо определенных ограничений на время обработки задания исполнителем. Это приводит к принудительному применению тайм-аута, указанного для максимальной продолжительности задания действия. Обратите внимание на то, что поскольку Amazon SWF ограничивает выполнение сроком в 1 год, исполнитель не может работать дольше указанного времени для обработки задания.

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

Вопрос: Можно ли запланировать выполнение нескольких заданий действия путем выдачи одного решения?
Да, вы можете планировать до 100 заданий действия в одном решении, а также принимать несколько решений одно за другим.

Вопрос: Сколько заданий для исполнителей, сигналов и маркеров может использоваться в выполнении рабочего процесса и по всем выполнениям одновременно?
Какие-либо ограничения, связанные с общим числом заданий действия, сигналов и таймеров, используемых при выполнении рабочего процесса, отсутствуют. Однако на данный момент вы можете иметь не более 1000 открытых заданий действия для каждого выполнения рабочего процесса. Они включают в себя задания действия, которые были инициированы, а также задания действия, которые обрабатываются исполнителями. Аналогично может быть до 1000 открытых таймеров на каждое выполнение рабочего процесса и до 1000 открытых дочерних выполнений на каждое выполнение рабочего процесса.

Вопрос: Какой объем данных можно передавать при выполнении рабочего процесса?
Какие-либо ограничения, связанные с общим объемом данных, передаваемых при выполнении рабочего процесса, отсутствуют. Тем не менее, API Amazon SWF накладывают определенные максимальные ограничения на параметры, которые используются для передачи данных в рамках выполнения. Например, входные данные, которые передаются в задание действия, и входные данные, которые отправляются с помощью сигнала, не могут превышать 32 000 символов.

Вопрос: Хранит ли Amazon SWF завершенные выполнения? Если да, то как долго?

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

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

Вопрос: В каком регионе доступен сервис Amazon SWF?
Сервис Amazon SWF (SWF) доступен в следующих регионах: Восток США (Северная Вирджиния), Запад США (Орегон), Запад США (Северная Калифорния), ЕС (Ирландия), ЕС (Франкфурт), Азия и Тихий океан (Сингапур), Азия и Тихий океан (Токио), Азия и Тихий океан (Сидней), Южная Америка (Сан-Паулу) и AWS GovCloud (США).

Вопрос: Доступен ли сервис Amazon SWF между зонами доступности?
Да, Amazon SWF управляет вашей историей выполнения рабочего процесса и другими элементами ваших рабочих процессов между 3 зонами доступности, благодаря чему ваши приложения могут продолжать полагаться на Amazon SWF даже при возникновении сбоя в одной зоне доступности.

Вопрос: Где находятся точки доступа к сервису Amazon SWF?
См. страницу Справочной документации AWSдля получения дополнительной информации о точках доступа.

Вопрос: Ваши цены указаны с учетом налогов?

Если не указано иное, представленные здесь цены не включают применимые налоги и сборы, в том числе НДС и применимый налог с продаж.Для клиентов с платежным адресом в Японии использование сервисов AWS облагается потребительским налогом Японии. Подробнее.