Вопрос: Что такое HAQM SWF?
HAQM Simple Workflow Service (SWF) – это веб-сервис, упрощающий координацию работы распределенных компонентов приложений. HAQM SWF позволяет создавать приложения, используемые для различных целей, среди которых приложения для обработки мультимедийных данных, серверные веб-приложения, рабочие бизнес-процессы и конвейеры для анализа данных в виде скоординированных заданий. Задания представляют собой обращения к различным этапам обработки в приложении, которые могут выполняться с помощью исполняемого кода, вызовов веб-сервисов, действий человека или исполнения сценариев.
Координация заданий включает в себя управление выполнением зависимых заданий, планирование и параллельное выполнение заданий в соответствии с логикой работы приложения. HAQM SWF обеспечивает разработчикам полный контроль за реализацией этапов обработки и координацией заданий, управляющих этими этапами, избавляя от необходимости решения сложных базовых задач, таких как слежение за ходом выполнения заданий и поддержание необходимого состояния процесса. HAQM SWF также предоставляет интегрированную среду программирования AWS Flow Framework, позволяющую разработчикам использовать асинхронное программирование при разработке своих приложений. Используя HAQM SWF, разработчики пользуются преимуществом простоты программирования и имеют возможность оптимизировать использование ресурсов, сокращать задержки и увеличивать пропускную способность своих приложений.
Начать работу с AWS бесплатно
Создать бесплатный аккаунтили войти в Консоль
Уровень бесплатного пользования AWS включает 750 часов использования узла микрокэша HAQM ElastiCache.
Вопрос: В чем преимущество проектирования приложений в виде скоординированных заданий? Как HAQM SWF может мне помочь в этом?
В HAQM SWF задания представляют собой обращения к логическим этапам обработки в приложении. Задания обрабатываются исполнителями, являющимися программами, которые взаимодействуют с HAQM SWF для получения заданий, их обработки и возвращения результатов такой обработки. Каждый исполнитель реализует определенный этап обработки приложения. Можно создавать исполнители на разных языках программирования и даже использовать существующие компоненты для их быстрого создания. Для создания исполнителей можно использовать, к примеру, облачные сервисы, корпоративные приложения, устаревшие системы и даже простые сценарии. Независимо контролируя количество исполнителей для обработки каждого типа задания, вы можете эффективно контролировать пропускную способность своего приложения.
Для координации работы исполнителей в приложении надо написать программу, называемую решающим блоком, на языке программирования по вашему выбору. Разделение этапов обработки и их координации позволяет контролировать выполнение приложения, предоставляя гибкие возможности по их независимому развертыванию, запуску, масштабированию и обновлению. Можно развернуть исполнителей и решающие блоки либо в облаке (например в инстансе HAQM EC2 или Lambda), либо на машинах, защищенных корпоративными брандмауэрами. Из-за разъединения исполнителей и решающих блоков функциональный код ваших приложений можно динамически изменять, что позволяет быстро обновлять приложение для соответствия новым требованиям. Например, можно удалять, пропускать или повторять задания, а также создавать новые потоки приложений, просто изменив решающий блок.
При реализации исполнителей и решающих блоков стоит сосредоточиться на дифференцированной логике своего приложения, поскольку от нее зависит выполнение конкретных этапов обработки и их координация. HAQM SWF обеспечивает обработку всех базовых операций, например хранение заданий до тех пор, пока они не будут назначены, наблюдение за назначенными заданиями и регулярное предоставление информации об их завершении. HAQM SWF также обеспечивает возможность постоянного наблюдения за всеми заданиями с помощью API или консоли.
Вопрос: Для чего предназначен сервис HAQM SWF?
HAQM SWF можно использовать для решения многих проблем, возникающих при создании приложений с распределенными компонентами. Например, можно использовать HAQM SWF и сопутствующую интегрированную среду программирования AWS Framework Flow для решения следующих задач.
- Написания приложений в виде асинхронных программ, используя простые программные конструкции, которые позволяют абстрагироваться от решения базовых задач, таких как инициирующие задания для удаленного запуска, а также отслеживания состояния выполнения программы.
- Контроль за состоянием выполнения вашего приложения (например, определения того, какие этапы завершены, какие из них выполняются и т. д.) Вам не нужно использовать базы данных, пользовательские системы или специальные решения, чтобы сохранить состояние выполнения.
- Взаимодействие между компонентами приложения и управления потоком заданий. С HAQM SWF вам не нужно разрабатывать протокол взаимодействия или беспокоиться о потерянных или повторяющихся заданиях.
- Централизации координации этапов в своем приложении. Логику координации не нужно распределять по разным компонентам, она может быть сосредоточена в одной программе.
- Интеграции в свои приложения ряда программ и компонентов, среди которых устаревшие системы и облачные сервисы сторонних поставщиков. Предоставляя вашим приложениям гибкие возможности по выбору того, где и в какой комбинации их компоненты будут развернуты, HAQM SWF помогает вам осуществлять постепенный перенос компонентов приложений из частных центров обработки данных в инфраструктуру публичного облака без снижения доступности приложений или их производительности.
- Автоматизации рабочих процессов, включающих в себя задания, для выполнения которых человеку требуется длительное время (например, задания утверждения, просмотра, анализа и т. д.) HAQM SWF надежно отслеживает состояние этапов обработки, которая выполняется в течение нескольких дней или месяцев.
- Создания надстройки над HAQM SWF на уровне приложения для обеспечения поддержки для конечных пользователей определенных языков, зависящих от домена. Поскольку HAQM SWF предоставляет вам гибкие возможности по выбору языка программирования, вы можете легко создавать интерпретаторы для специализированных языков (например, XPDL) и настраиваемых пользовательских интерфейсов, включая инструменты моделирования.
- Обеспечение подробного аудита и видимость всех запущенных экземпляров приложений. Вы можете включить возможности отображения, предоставляемые HAQM SWF, в свои собственные пользовательские интерфейсы, используя API, предоставляемые HAQM SWF.
Клиенты используют HAQM SWF для создания приложений для кодирования видео, социальной коммерции, выделения инфраструктуры, конвейеров MapReduce, управления бизнес-процессами, а также в ряде других случаев. Для получения дополнительной информации о примерах использования см. вопрос «Какие задачи можно решать с помощью SWF?». Чтобы узнать, как наши клиенты используют HAQM SWF в настоящее время, см. примеры использования.
Вопрос: В чем преимущество HAQM SWF над собственными решениями и существующими продуктами для управления рабочими процессами?
При создании решений для координации заданий в распределенной среде разработчики должны учитывать несколько моментов. Задания, которые управляют этапами обработки, могут долго выполняться, при этом могут возникать сбои, тайм-ауты, может потребоваться перезапуск. Они часто выполняются с различной пропускной способностью и задержками. Отслеживание и визуализация заданий во всех этих случаях является не только сложной, но и однообразной работой. По мере масштабирования приложений и заданий разработчики сталкиваются со сложными аспектами работы распределенных систем. Например, они должны гарантировать, что задание назначено только один раз, при этом результат ее выполнения будет надежно отслеживаться независимо от возможных сбоев или отключений. Используя HAQM SWF, разработчики могут сосредоточиться на дифференцированной логике своего приложения, т.е. на алгоритмах выполнения заданий и их координации.
При использовании существующих продуктов для управления рабочими процессами разработчикам часто приходится изучать специализированные языки программирования, размещать дорогие базы данных и отказываться от контроля за выполнением заданий. Специализированные языки программирования усложняют процесс описания сложных приложений и не обладают достаточной гибкостью для быстрого внесения изменений. При этом HAQM SWF – это облачный сервис, позволяющий разработчикам использовать любой привычный язык программирования и контролировать, где обрабатываются задания. Используя слабосвязанную модель для распределенных приложений, HAQM SWF позволяет осуществлять гибкое внесение изменений.
Вопрос: Что такое исполнители и решающие блоки?
В HAQM SWF приложение реализуется путем создания исполнителей и решающих блоков, которые напрямую взаимодействуют с сервисом. Исполнители – это программы, которые взаимодействуют с HAQM SWF для получения заданий, их обработки и возвращения результатов обработки. Решающий блок – это программа, которая управляет координацией заданий, т.е. их порядком, параллельным выполнением и планированием в соответствии с алгоритмом приложения. Исполнителей и решающий блок можно запускать либо в облачной инфраструктуре (например, в инстансе HAQM EC2), либо на машинах, защищенных брандмауэрами. HAQM SWF выступает в роли посредника при взаимодействии исполнителей с решающим блоком. Он позволяет решающему блоку бесперебойно получать данные о ходе выполнения заданий и постоянно инициировать новые задания. В то же время HAQM SWF сохраняет задания, назначая для их выполнения исполнителей, когда они готовы, и наблюдает за ходом их выполнения. Это гарантирует, что задание назначено только один раз и не будет назначено повторно. Поскольку HAQM SWF надежно сохраняет состояние приложения, исполнителям и решающим блокам не нужно отслеживать ход выполнения. Они могут работать независимо друг от друга и быстро масштабироваться. Дополнительные сведения об этапах создания приложений с помощью HAQM SWF см. в разделе «Функциональные возможности» на странице описания сервиса HAQM SWF.
В HAQM SWF можно запустить параллельно несколько одинаковых рабочих процессов. Каждый запуск называется выполнением рабочего процесса или просто выполнением. Для идентификации выполнений используются уникальные имена. С помощью консоли управления HAQM SWF (или API отображения) можно просмотреть сразу все выполнения, а также перейти к детальному просмотру определенного выполнения, чтобы получить подробную информацию на уровне задания.
Вопрос: Какие удобства обеспечивает HAQM SWF при программировании приложений?
Как и другие сервисы AWS, HAQM SWF предоставляет основной SDK для API веб-сервисов. Кроме того, HAQM SWF предлагает SDK, называемый AWS Flow Framework, который позволяет быстро и просто разрабатывать приложения на основе HAQM SWF. AWS Flow Framework позволяет абстрагироваться от деталей координации на уровне заданий с помощью знакомых элементов программирования. Во время запуска вашей программы инфраструктура производит вызовы HAQM SWF, отслеживает состояние выполнения вашей программы, используя историю выполнения, которая хранится в HAQM SWF, и вызывает соответствующие части вашего программного кода в нужные моменты времени. Предлагая интуитивно понятную инфраструктуру программирования для доступа к HAQM SWF, AWS Flow Framework позволяет разработчикам создавать целые приложения в виде асинхронных взаимодействий, оформленных в виде рабочего процесса. Для получения более подробной информации см. вопрос «Что такое AWS Flow Framework?».
Вопрос: Когда стоит использовать HAQM SWF, когда – AWS Step Functions?
AWS Step Functions – полностью управляемый сервис для координации компонентов распределенных приложений и микросервисов с помощью виртуальных рабочих процессов. Вместо создания программы принятия решений достаточно определить машины состояния в JSON. Клиентам AWS рекомендуется начать использовать Step Functions в своих новых приложениях. Если Step Functions не отвечает вашим требованиям, попробуйте HAQM Simple Workflow (SWF). HAQM SWF обеспечивает полный контроль над логикой механизмов оркестрации, но усложняет разработку приложений. Программы для принятия решений можно написать на любом языке, либо воспользоваться средой Flow и составить из ее из программных элементов, которые организуют асинхронное взаимодействие автоматически. AWS продолжит поддерживать сервис HAQM SWF, среду Flow, а также всех клиентов, использующих HAQM SWF.
Вопрос: Чем отличаются сервисы HAQM SWF и HAQM SQS?
И HAQM SQS, и HAQM SWF предназначены для того, чтобы упростить процесс создания интегрированных приложений или микросервисов.
- HAQM Simple Queue Service (HAQM SQS) предлагает надежные размещенные очереди с широкими возможностями масштабирования, предназначенные для хранения сообщений во время их передачи между приложениями или микросервисами. HAQM SQS позволяет передавать данные между компонентами распределенного приложения и разделять эти компоненты.
- HAQM Simple Workflow Service (HAQM SWF) – это веб-сервис, благодаря которому проще координировать работу компонентов распределенных приложений.
Ниже приведены основные различия между HAQM SWF и HAQM SQS.
- Действия API сервиса HAQM SWF ориентированы на выполнение заданий. Действия API сервиса HAQM SQS ориентированы на обработку сообщений.
- HAQM SWF отслеживает все задания и события в приложении. В HAQM SQS необходимо самостоятельно реализовать отслеживание на уровне приложения, особенно если в приложении используется несколько очередей.
- Консоль HAQM SWF и API видимости обеспечивают детальный анализ работы приложений, позволяющий осуществлять поиск выполняющихся заданий, переходить к детальному просмотру того или иного задания и управлять ходом выполнения. В HAQM SQS необходимо дополнительно реализовывать такие функциональные возможности.
- HAQM SWF предлагает ряд функций, позволяющих облегчить процесс разработки приложений, в числе которых передача данных между заданиями, передача сигналов и гибкость при распределении заданий. В HAQM SQS необходимо реализовывать некоторые функциональные возможности на уровне приложения.
- HAQM SWF предоставляет не только основной SDK для вызова API сервиса, но и среду AWS Flow Framework. С ее помощью можно создавать распределенные приложения, используя программные конструкции для создания асинхронных взаимодействий.
Если при использовании сервиса HAQM SQS можно создавать основные рабочие процессы для координации распределенного приложения, то при использовании HAQM SWF вы сразу получаете все эти возможности вместе с другими возможностями на уровне приложения.
Рекомендуем ознакомиться с каждым из сервисов, чтобы определить, какое из решений лучше подходит в конкретном случае.
Вопрос: Какие задачи можно решать с помощью SWF?
В качестве примеров использования HAQM SWF можно привести обработку мультимедийных данных, автоматизацию бизнес-процессов, анализ данных, перемещение инфраструктуры в облачную среду, а также пакетную обработку данных. Ниже приведены некоторые примеры использования.
Пример использования №1. Кодирование видео с помощью HAQM S3 и HAQM EC2. В этом примере использования видео большого размера загружаются в HAQM S3 в виде фрагментов. Загрузка фрагментов должна контролироваться. После того как фрагмент загружен, он кодируется путем загрузки в инстанс HAQM EC2. Перекодированный фрагмент сохраняется в другом местоположении HAQM S3. После выполнения кодирования всех фрагментов видеофайла выполняется их объединение в общий файл, полностью сохраняемый в хранилище HAQM S3. Во время этого процесса могут возникнуть сбои из-за ошибок при кодировании одного или нескольких фрагментов. Такие сбои должны быть обнаружены и обработаны.
При использовании HAQM SWF такое приложение реализуется в виде рабочего процесса, где каждый видеофайл обрабатывается как один выполняющийся рабочий процесс. При этом различные исполнители выполняют следующие задания: загрузку фрагмента в HAQM S3, загрузку фрагмента из HAQM S3 в инстанс HAQM EC2 и его кодирование, сохранение фрагмента в HAQM S3, объединение нескольких фрагментов в один файл, а также загрузку целого файла в HAQM S3. В этом примере использования решающий блок инициирует параллельный запуск заданий, чтобы обеспечить параллельную обработку. Он инициирует задание для кодирования загруженного фрагмента, не дожидаясь загрузки других фрагментов. Если возникает сбой задания кодирования для какого-то фрагмента, решающий блок повторно запускает это задание только для этого фрагмента. Состояние приложения, которое хранится в HAQM SWF, позволяет решающему блоку контролировать рабочий процесс. Например, решающий блок использует его для определения того, что все фрагменты были закодированы, а также для определения их местоположения в HAQM S3, чтобы их можно было объединить. Ход выполнения непрерывно отслеживается в консоли управления HAQM SWF. В случае сбоев задания, при выполнении которых возникли проблемы, определяются и перезапускаются, чтобы завершить обработку фрагментов.
Пример использования №2. Обработка больших каталогов продукции с помощью HAQM Mechanical Turk. При проверке данных в больших каталогах продукты в каталоге обрабатывается пакетами. Разные пакеты могут обрабатываться параллельно. При обработке каждого из пакетов данные о продуктах извлекаются с серверов ЦОД и преобразуются в файлы CSV (файлы, значения в которых разделены запятыми), необходимые для пользовательского интерфейса реквестора HAQM Mechanical Turk (RUI). Файл CSV загружается для формирования и запуска заданий для обработки человеком (HIT). После выполнения заданий HIT полученный файл CSV проходит процесс обратного преобразования для получения данных в исходном формате. Результаты оцениваются, и сотрудники HAQM Mechanical Turk получают оплату за приемлемые результаты. Невыполненные задания отправляются на повторную обработку, а приемлемые результаты заданий HIT используются при обновлении каталога. При обработке пакетов система отслеживает качество работы сотрудников HAQM Mechanical Turk и назначает соответствующий уровень оплаты. Невыполненные задания HIT повторно пакетируются и заново проходят конвейер обработки.
При использовании HAQM SWF приведенный выше пример реализуется в виде набора рабочих процессов. Рабочий процесс обработки пакета BatchProcess выполняет обработку одного пакета. У него есть исполнители, которые извлекают данные, преобразуют их и отправляют через HAQM Mechanical Turk. Рабочий процесс BatchProcess выводит как допустимые, так и неудачно выполненные задания для обработки человеком. Они используются в качестве входных данных для трех других рабочих процессов: MTurkManager, UpdateCatalogWorkflow и RerunProducts. Рабочий процесс MTurkManager осуществляет выплаты за приемлемые результаты выполнения заданий для обработки человеком, сообщает о неудачном выполнении заданий для обработки человеком тем сотрудникам, которые работали над ними, а также обновляет свою базу данных, используемую для слежения за качеством результатов. Рабочий процесс UpdateCatalogWorkflow обновляет главный каталог на основании приемлемых результатов выполнения заданий для обработки человеком. Рабочий процесс RerunProducts ожидает накопления достаточно большого количества продуктов с неудачно выполненными заданиями для обработки человеком. После чего он создает пакет и отправляет назад в рабочий процесс BatchProcess. Полная сквозная обработка каталога осуществляется рабочим процессом CleanupCatalog, который инициирует выполнение указанных выше дочерних рабочих процессов. Наличие набора четко определенных рабочих процессов позволяет для этого примера использования спроектировать, обеспечить аудит и систематический запуск системы для обработки каталогов с несколькими миллионами продуктов.
Пример использования №3. Перенос компонентов из центра обработки данных в облако. Выполнение критически важных бизнес-операций осуществляется в частном центре обработки данных, но их необходимо полностью переместить в облако, не допуская перерывов в работе.
Если используется HAQM SWF, то в приложениях можно объединить исполнители, в т. ч. компоненты, которые работают в ЦОД, с исполнителями, которые запущены в облаке. Для эффективного переноса исполнителей ЦОД сперва необходимо развернуть в облаке новые исполнители того же типа. Исполнители в ЦОД продолжат работать как обычно, параллельно с новыми исполнителями в облаке. Исполнители в облаке тестируются и проверяются путем передачи им части нагрузки. Во время тестирования приложение продолжит функционировать без перебоев благодаря работе исполнителей ЦОД. После успешного завершения тестирования исполнители в центре обработки данных постепенно останавливаются, а количество исполнителей в облаке увеличивается, что в конечном итоге приводит к тому, что исполнители остаются работать исключительно в облаке. Описанную процедуру можно повторить для всех других исполнителей в центре обработки данных, благодаря чему приложение будет полностью перенесено в облако. Если по неким соображениям определенные этапы обработки должны выполняться исключительно в частном ЦОД, то соответствующие исполнители могут продолжить свою работу в частном ЦОД, участвуя при этом в выполнении приложения.
См. наши примеры использования для получения информации о более интересных приложениях и системах, которые разработчики и предприятия создают с помощью HAQM SWF.
Вопрос: Использует ли HAQM сервис HAQM SWF при создании своих приложений?
Да. Разработчики в HAQM используют HAQM SWF для большого числа проектов и запуска миллионов рабочих процессов ежедневно. Эти примеры использования включают в себя основные бизнес-процессы, лежащие в основе веб-сайтов HAQM.com и AWS, реализации нескольких веб-сервисов AWS и их API, анализ данных с помощью MapReduce для оперативного принятия решений и управления контентом пользователя, таким как веб-страницы, видео и книги Kindle.
Вопрос: Как начать работу с HAQM SWF?
Чтобы зарегистрироваться в сервисе HAQM SWF, перейдите на страницу сведений о сервисе HAQM SWF и нажмите кнопку «Зарегистрироваться». Если у вас еще нет аккаунта HAQM Web Services, вам будет предложено создать его. После регистрации вы сможете осуществить краткий обзор возможностей в консоли управления AWS, выполнив все шаги запуска простого приложения для преобразования изображений с помощью HAQM SWF. Вы также можете загрузить примеры AWS Flow Framework, чтобы узнать о различных возможностях этого сервиса. Чтобы начать пользоваться HAQM SWF в своих приложениях, обратитесь к документации HAQM SWF.
Вопрос: Есть ли примеры рабочих процессов, с помощью которых я могу ознакомиться с возможностями HAQM SWF?
Да. Начав работать с HAQM SWF, вы можете воспользоваться примером в Консоли управления AWS, который проведет вас через все этапы регистрации домена и типов, развертывания исполнителей и решающих блоков, а также запуска исполнителей на выполнение. Вы можете загрузить исходный код для исполнителей и решающих блоков, которые используются в этом пошаговом руководстве, запустить эти процессы в своей инфраструктуре и даже изменить их для создания своих собственных приложений. Вы также можете загрузить примеры AWS Flow Framework, которые показывают различные варианты использования HAQM SWF, например, для распределенной обработки данных, заданий Cron, а также развертывания стека приложения. Изучив представленный исходный код, вы сможете больше узнать о возможностях HAQM SWF и об использовании AWS Flow Framework для создания своих распределенных приложений.
Вопрос: Каким образом можно получить доступ к HAQM SWF?
Вы можете получить доступ к HAQM SWF любым из следующих способов.
- С помощью AWS SDK для Java, Ruby, .NET или PHP.
- С помощью AWS Flow Framework для Java (входит в состав AWS SDK для Java).
- С помощью API веб-сервисов HAQM SWF.
- Консоль управления AWS
Вопрос: Что такое регистрация?
Регистрация – это однократно выполняемое действие, которое вы выполняете для каждого разного типа рабочего процесса и действия. Вы можете зарегистрироваться либо программно, либо с помощью консоли управления HAQM SWF. Во время регистрации вы предоставляете уникальный идентификатор типа для каждого типа действия и рабочего процесса. Вы также предоставить информацию по умолчанию, которая используется во время работы рабочего процесса, например, значения тайм-аутов и параметры распределения заданий.
Вопрос: Что такое домены?
В SWF вы определяете логические контейнеры, называемые доменами, для ресурсов вашего приложения. Домены можно создавать только на уровне вашего аккаунта AWS, при этом они не могут быть вложенными. Домен может иметь любое имя, определяемое пользователем. Каждый ресурс приложения, такой как тип рабочего процесса, тип действия или выполнение, принадлежит только одному домену. Во время регистрации необходимо указать домен, в котором должны быть зарегистрированы рабочий процесс или действие. Когда вы запускаете выполнение, оно автоматически создается в том же домене, к которому относится его тип рабочего процесса. Идентификаторы ресурсов (например, идентификатор типа, идентификатор выполнения) являются уникальными только в одном домене, т. е. вы можете повторно использовать идентификаторы в разных доменах.
Вопрос: Как можно управлять ресурсами приложений в различных средах и группах?
Можно использовать домены для организации ресурсов приложения так, чтобы ими можно было легче управлять, при этом они не оказывали бы случайного влияния друг на друга. Например, можно создавать различные домены для среды разработки, тестирования и рабочей среды, а также создавать соответствующие ресурсы в каждом из них. Хотя вы можете зарегистрировать одинаковый тип рабочего процесса в каждом из этих доменов, он будет обрабатываться как отдельный ресурс в каждом домене. Вы можете изменять его настройки в домене для разработки или управлять выполнением процессов в тестовом домене, не затрагивая соответствующие ресурсы в рабочем домене.
Вопрос: Как решающий блок координирует рабочие процессы в HAQM SWF?
Решающий блок можно рассматривать как особый тип исполнителя. Как и исполнители, он может быть написан на любом языке программирования и может запрашивать у HAQM SWF задания. Тем не менее, он выполняет особые задания, которые называются заданиями управления. HAQM SWF выдает задания управления всякий раз, когда при выполнении рабочего процесса возникают переходы, такие как при завершении заданий действия или при истечении времени ожидания. Задание управления содержит информацию о входящих данных, исходящих данных и текущем состоянии начатых ранее заданий действия. Ваш решающий блок использует эти данные для принятия решений о следующих действиях, включая запуск каких-либо новых активных заданий и их возврат в HAQM SWF. В свою очередь HAQM SWF выполняет эти решения, инициируя новые активные задания, где это необходимо, и обеспечивает их мониторинг. Постоянно выполняя задания управления, решающий блок контролирует порядок, время и параллельное выполнение заданий действия, а также последовательность выполнения всех этапов обработки в приложении. SWF выдает первое задание управления, когда запущено выполнение. Начиная с этого момента HAQM SWF выполняет решения, принятые вашим решающим блоком, для дальнейшего выполнения процесса. Выполнение продолжается до тех пор, пока решающий блок не принимает решение о его завершении.
Чтобы помочь решающему блоку в принятии решений, SWF ведет текущую запись всех сведений о выполняемых заданиях. Эта запись называется историей и является уникальной для каждого выполнения. Когда запускается выполнение, начинается запись новой истории. На тот момент запуска в истории содержится исходная информация, например, исходные данные для выполнения. Позже, когда исполнители обрабатывают активные задания, HAQM SWF обновляет историю, добавляя информацию об их входных и выходных данных, а также их последнем состоянии. Когда решающий блок получает задание управления, он может проверить историю выполнения. HAQM SWF гарантирует, что история точно отражает состояние выполнения на момент получения задания управления. Таким образом, решающий блок может использовать историю для определения того, что произошло в процессе выполнения заданий, и принятия решений о дальнейших действиях.
Вопрос: Как убедиться, что исполнитель и решающий блок получают только те задания, которые они могут обрабатывать?
Вы можете использовать списки заданий, чтобы определить, какие задания были назначены. Списки заданий являются ресурсами HAQM SWF, в которые добавляются инициированные задания и из которых задания запрашиваются. Списки заданий идентифицируются с помощью имен, определяемых пользователем. В списке заданий могут присутствовать задания с различными типами идентификаторов, но все они должны быть либо активными заданиями, либо заданиями управления. Во время регистрации необходимо указать список заданий по умолчанию для каждого типа действия и рабочего процесса. HAQM SWF также позволяет создавать списки заданий во время исполнения. Можно создать список заданий, просто назначив ему имя и начав пользоваться им. Вы можете использовать списки заданий следующим образом.
- При инициации задания действия решающий блок может добавить его в определенный список заданий или запросить у HAQM SWF его добавление в список заданий по умолчанию для своего типа действия.
- Во время начала выполнения вы можете запросить у HAQM SWF добавление всех его заданий управления в определенный список заданий или в список заданий по умолчанию для этого типа рабочего процесса.
- При запросе заданий решающие блоки и исполнители указывают, из какого списка они хотят их получать. Если задание доступно в списке, SWF отправляет его в ответ, а также включает идентификатор его типа.
На основании приведенной выше информации вы можете контролировать, в какой список заданий будет добавлено задание, а также кто сможет запрашивать задания из каждого списка. Таким образом, вы можете гарантировать, что исполнители и решающие блоки будут получать только те задания, которые они смогут обработать.
Вопрос: Что такое AWS Flow Framework? Как эта среда поможет мне в координации рабочих процессов?
AWS Flow Framework – это интегрированная среда программирования, которая позволяет быстро и просто разрабатывать приложения на основе HAQM SWF. Она позволяет абстрагироваться от деталей координации на уровне заданий и асинхронного взаимодействия с помощью простых конструкций программирования. Координация рабочих процессов в HAQM SWF включает инициирование удаленных действий, выполнение которых занимает разное время (например, заданий действия), а также правильное установление зависимостей между ними.
AWS Flow Framework позволяет боле удобно выражать оба задания координации с помощью знакомых понятий программирования. Например, инициировать задание действия так же просто, как сделать вызов метода. AWS Flow Framework автоматически преобразует вызов в решение для инициирования задания действия, и позволяет HAQM SWF назначать задание исполнителю, осуществлять его мониторинг и сообщать о его завершении. Среда выдает результат выполнения задания, включающий выходные данные, которые доступны вам в коде в виде значений, возвращаемых при вызове метода. Чтобы выразить зависимость от задания, необходимо просто использовать возвращаемые значения в своем коде, как в случае использования обычных вызовов метода. Среда выполнения автоматически будет ожидать завершения выполнения задания и продолжит выполнение только тогда, когда результаты станут доступны. Среда выполнения в фоновом режиме получает рабочие задания и задания управления из HAQM SWF, вызывая соответствующие методы в вашей программе в нужное время, и формирует решения для отправки назад в HAQM SWF. Предлагая доступ к HAQM SWF с помощью интуитивно понятной интегрированной среды программирования, AWS Flow Framework позволяет легко использовать асинхронное и событийно-управляемое программирование при разработке ваших приложений.
Вопрос: Как исполнители и решающие блоки взаимодействуют с HAQM SWF? Не потребляет ли протокол опроса много ресурсов?
Обычно протоколы, основанные на опросе, требуют от разработчиков поиска оптимальной частоты выполнения опросов. Если опросы будут выполняться слишком часто, то вполне возможно, что для многих опросов будут возвращаться пустые результаты. Это приводит к возникновению ситуации, когда большая часть приложений и сетевых ресурсов будут потрачены на опросы, не дающие значимых результатов для дальнейшего выполнения заданий. Если опросы будут выполняться недостаточно часто, то сообщения могут храниться дольше, приводя к увеличению задержек при работе приложения.
Для преодоления неэффективности, присущей опросам, HAQM SWF использует длительный опрос. Длительный опрос значительно снижает количество опросов, которые возвращаются без каких-либо заданий. Когда исполнители и решающие блоки опрашивают HAQM SWF на предмет имеющихся заданий, соединение сохраняется в течение минуты, если ни одно задание не доступно. Если в течение этого периода появляется доступное задание, оно возвращается в ответ на запрос длительного опроса. Сохранение соединения в течение определенного периода времени позволяет избавиться от дополнительных опросов, которые могли бы также вернуть пустые результаты. Используя длительные опросы, ваши приложения пользуются всеми преимуществами, связанными с безопасностью и возможностью управления потоком, не жертвуя преимуществами, связанными с задержками и эффективностью, которые предлагают веб-сервисы, основанные на push-уведомлениях.
Вопрос: Можно ли использовать существующий веб-сервис в качестве исполнителя?
Исполнители используют стандартные запросы HTTP GET для получения заданий HAQM SWF и возвращения результатов. Для использования существующего веб-сервиса в качестве исполнителя вы можете создать оболочку, которая получает задания из HAQM SWF, вызывает необходимые API веб-сервиса и возвращает результаты обратно в HAQM SWF. В оболочке вы преобразуете входные данные задания в параметры для API ваших веб-сервисов. Кроме того, вы также преобразуете выходные данные из API веб-сервисов в результаты задания и возвращаете их в HAQM SWF.
Вопрос: Имеются ли в HAQM SWF ограничения, связанные с выбором определенных языков программирования?
Нет, вы можете использовать любой язык программирования для создания рабочего или управляющего процесса, а также можете взаимодействовать с HAQM SWF с помощью API веб-сервисов. Пакеты SDK AWS на данный момент имеются для Java, .NET, PHP и Ruby. AWS SDK для Java включает в себя AWS Flow Framework.
Вопрос: Я хочу быть уверенным в том, что при каждой активации моего бизнес-процесса будет только одно его выполнение (например, для транзакций, отправки данных или назначения). Как это сделать?
Когда начинается выполнение нового рабочего процесса, вы предоставляете идентификатор для этого выполнения рабочего процесса. Это позволяет связать выполнение с бизнес-объектом или действием (например, с идентификатором клиента, именем файла, серийным номером). HAQM SWF гарантирует, что идентификатор выполнения будет уникальным, пока оно запущено. В течение этого времени любые попытки начать выполнение с тем же идентификатором завершатся неудачей. Это позволяет вам легко удовлетворить потребности бизнеса, когда для определенной бизнес-операции не должно быть запущено более одного выполнения, например, для транзакций, отправки данных или назначения заданий. Рассмотрим рабочий процесс, используемый для регистрации нового пользователя на веб-сайте. Когда пользователь нажимает кнопку отправки, в качестве названия выполнения можно использовать уникальный адрес электронной почты пользователя. Если выполнение уже существует, то вызов запуска выполнения завершится с ошибкой. Не требуется никакого дополнительного кода для предотвращения конфликтов, возникающих в результате нажатия пользователем кнопки более одного раза во время выполнения регистрации.
После завершения выполнения рабочего процесса (независимо от того, успешно оно завершилось или нет) вы можете начать выполнение другого рабочего процесса с тем же идентификатором. Это вызовет новый запуск выполнения рабочего процесса с тем же идентификатором выполнения, но с другим идентификатором запуска. Идентификатор запуска генерируется HAQM SWF, при этом несколько выполнений с одинаковыми идентификаторами выполнения рабочего процесса можно отличать с помощью идентификатора запуска. Разрешая подобным образом использовать идентификаторы выполнения рабочего процесса, HAQM SWF позволяет обрабатывать сложные ситуации, такие как выполнение повторных попыток. Например, предположим, что в приведенном выше примере регистрации пользователя выполнение рабочего процесса завершилось с ошибкой при создании записи для пользователя в базе данных. Вы можете начать повторное выполнение рабочего процесса с тем же идентификатором выполнения (адресом электронной почты пользователя), при этом вам не нужно будет создавать новый идентификатор для повторной попытки регистрации.
Вопрос: Как HAQM SWF может помочь при масштабировании приложения?
HAQM SWF позволяет масштабировать приложения, предоставляя полный контроль над количеством исполнителей, которые запускаются для каждого типа действия, и количеством инстансов, которые запускаются для решающего блока. Увеличивая число исполнителей или инстансов решающего блока, вы увеличиваете объем вычислительных ресурсов, выделяемых для соответствующих этапов обработки, и тем самым повышаете производительность этих этапов. Для автоматического изменения масштаба вы можете использовать данные этапа выполнения, доступ к которым HAQM SWF предоставляет с помощью своих API. Например, HAQM SWF предоставляет информацию о числе заданий в списке. Поскольку увеличение этого числа означает, что исполнители не справляются с нагрузкой, вы можете автоматически добавлять новых исполнителей всякий раз, когда количество необработанных заданий будет превышать определенное пороговое значение.
Вопрос: Я запускаю большое количество критически важных приложений. Как можно осуществлять их мониторинг и масштабирование?
В дополнение к консоли управления HAQM SWF предоставляет полный набор API видимости. Можно использовать их для получения информации о времени выполнения, чтобы контролировать все ваши выполнения и автоматически их масштабировать в зависимости от нагрузки. Можно получить подробные данные по каждому типу рабочего процесса, такие как число открытых и закрытых выполнений в определенном временном диапазоне. Используя API видимости, вы также можете создавать свои собственные приложения для мониторинга.
Вопрос: У меня множество выполнений, работающих в любое время, но несколько из них часто завершаются с ошибкой или зависают. Как можно обнаруживать подобные выполнения и устранять проблемы?
HAQM SWF позволяет осуществлять поиск выполнений с помощью консоли управления и API видимости. Можно осуществлять поиск по различным критериям, включая временные интервалы, в течение которых выполнение начинается или завершается, текущему состоянию (т.е. открыто или закрыто), а также стандартным сбоям (например, истекло, прекращено). Чтобы сгруппировать несколько выполняющихся рабочих потоков, можно использовать до 5 тегов, чтобы связать пользовательский текст с выполнением рабочих процессов при их запуске. В консоли управления AWS можно использовать теги при поиске выполняющихся рабочих процессов.
Чтобы найти выполнения, которые могли зависнуть, можно начать с поиска с учетом времени, чтобы определить те выполнения, которые выполняются дольше, чем ожидалось. После этого можно рассмотреть каждое из них, чтобы получить более подробную информацию и определить, связано ли длительное выполнение заданий с их правильной работой или сбоем, или решающий блок просто не инициировал задания. Это может помочь установить проблему на уровне заданий.
Вопрос: У меня тип действия, который можно использовать в нескольких приложениях. Можно ли использовать его в этих приложениях?
Да. Несколько приложений могут совместно использовать данный тип действия в том случае, если приложения и действия зарегистрированы в одном домене. Для реализации этого у вас могут быть разные решающие блоки, инициирующие задания для конкретного типа действия и добавляющие их в список заданий, к которому будут обращаться рабочие процессы для получения этого действия. Исполнители этого типа действия затем будут получать задания действия из всех различных приложений. Если вы хотите указать, из какого приложения поступило задание действия, или вы хотите развернуть разные наборы рабочих процессов для разных приложений, можете использовать несколько списков заданий. См. вопрос Как убедиться, что исполнитель и решающий блок получают только те задания, которые они могут обрабатывать?
Вопрос: Можно ли использовать AWS Identity and Access Management (IAM) для управления доступом к HAQM SWF?
Да. Можно предоставить пользователям IAM разрешения для доступа к HAQM SWF. Пользователи IAM могут получать доступ только к тем доменам SWF и API, которые вы укажете.
Вопрос: Можно ли запускать мои рабочие процессы под защитой брандмауэра?
Да. Исполнители используют стандартные запросы HTTP GET для запроса заданий из HAQM SWF и возвращения вычисленных результатов. Поскольку исполнители всегда инициируют запросы в HAQM SWF, вам не придется настраивать брандмауэр, чтобы разрешить входящие запросы.
Вопрос: Не является ли отображение функционального кода в виде рабочих и управляющих процессов риском для безопасности?
Исполнители используют стандартные запросы HTTP GET для запроса заданий из HAQM SWF и возвращения вычисленных результатов. Поэтому вам не нужно раскрывать какую-либо конечную точку для своих исполнителей. Кроме того, HAQM SWF выдает задания исполнителям только в том случае, когда решающий блок инициирует эти задания. Поскольку вы пишете код решающего блока, у вас есть полный контроль над тем, когда и как инициируются задания, включая входные данные, которые передаются с их помощью исполнителям.
Вопрос: Как HAQM SWF может помочь в надежной координации заданий в моем приложении?
HAQM SWF предоставляет полезные гарантии, связанные с назначением заданий. Сервис гарантирует, что задание назначено только один раз и не будет назначено повторно. Таким образом, даже если у вас может быть множество исполнителей для конкретного типа действия (или несколько инстансов решающего блока), HAQM SWF даст конкретное задание только одному исполнителю (или одному инстансу решающего блока). Кроме того, при выполнении рабочего потока HAQM SWF сохраняет в ожидании ответа не более одного задания управления. Поэтому можно запустить несколько инстансов решающих блоков, не беспокоясь, что два инстанса станут выполнять одно задание одновременно. Эти средства позволяют координировать рабочий процесс, не беспокоясь о повторных, потерянных или конфликтующих заданиях.
Вопрос: Сколько типов рабочих процессов, типов действий и доменом можно зарегистрировать с помощью HAQM SWF?
Вы можете иметь не более 10 000 рабочих процессов и типов действий (в общей сложности), которые либо зарегистрированы, либо являются устаревшими в каждом домене. Вы можете иметь не более 100 доменов HAQM SWF (в том числе зарегистрированных и устаревших доменов) в своем аккаунте AWS. Если вы думаете, что превысите вышеуказанные лимиты, используйте эту форму, чтобы связаться с командой HAQM SWF для обсуждения своего сценария использования и попросить установить более высокий лимит.
Вопрос: Существуют ли ограничения на количество выполнений рабочих процессов, которые можно запускать одновременно?
В любой момент времени у вас может быть не более 100 000 открытых выполнений в одном домене. Какие-либо другие ограничения, связанные с суммарным числом выполнений, которые вы запускаете, или числом выполнений, поддерживаемых HAQM SWF, отсутствуют. Если вы думаете, что превысите вышеуказанные лимиты, используйте эту форму, чтобы связаться с командой HAQM SWF для обсуждения своего сценария использования и попросить установить более высокий лимит.
Вопрос: Как долго может выполняться рабочий процесс?
Каждый рабочий процесс может выполняться в течение не более одного года. В истории выполнения каждого рабочего процесса может содержаться не более 25 000 событий. Если в вашем примере использования требуется выйти за эти пределы, вы можете воспользоваться функциями HAQM SWF, обеспечивающими продолжительное выполнение и структуризацию своих приложений с помощью выполнений дочерних рабочих процессов.
Вопрос: Что произойдет, если выполнение моего рабочего процесса будет приостановлено на длительный период времени?
HAQM SWF не принимает никаких специальных действий, если выполнение рабочего процесса было приостановлено на длительный период времени. Неактивные выполнения зависят от таймаутов, которые вы задали. Например, если вы установите максимальную продолжительность выполнения в 1 день, то неактивное выполнение будет прекращено по таймауту, если оно превысит лимит в 1 день. На неактивные выполнения также распространяются ограничения HAQM SWF, связанные с максимальной продолжительностью работы выполнений (1 год).
Вопрос: Сколько времени занимает обработка задания исполнителем?
HAQM SWF не накладывает каких-либо определенных ограничений на время обработки задания исполнителем. Это приводит к принудительному применению тайм-аута, указанного для максимальной продолжительности задания действия. Обратите внимание на то, что поскольку HAQM SWF ограничивает выполнение сроком в 1 год, исполнитель не может работать дольше указанного времени для обработки задания.
Вопрос: Как долго может HAQM SWF хранить задание, прежде чем исполнитель запросит его?
HAQM SWF не накладывает каких-либо определенных ограничений на продолжительность хранения заданий до того, как исполнитель запросит его. Тем не менее, при регистрации типа действия вы можете установить тайм-аут по умолчанию, определяющий, как долго HAQM SWF будет хранить задания действия этого типа. Вы также можете задавать этот тайм-аут или переписывать значение тайм-аута по умолчанию с помощью кода своего управляющего процесса при планировании задания действия. Поскольку HAQM SWF ограничивает время выполнение рабочего процесса одним годом, то задание не будет храниться дольше одного года, если тайм-аут не указан.
Вопрос: Можно ли запланировать выполнение нескольких заданий действия путем выдачи одного решения?
Да, вы можете планировать до 100 заданий действия в одном решении, а также принимать несколько решений одно за другим.
Вопрос: Сколько заданий для исполнителей, сигналов и маркеров может использоваться в выполнении рабочего процесса и по всем выполнениям одновременно?
Какие-либо ограничения, связанные с общим числом заданий действия, сигналов и таймеров, используемых при выполнении рабочего процесса, отсутствуют. Однако на данный момент вы можете иметь не более 1000 открытых заданий действия для каждого выполнения рабочего процесса. Они включают в себя задания действия, которые были инициированы, а также задания действия, которые обрабатываются исполнителями. Аналогично может быть до 1000 открытых таймеров на каждое выполнение рабочего процесса и до 1000 открытых дочерних выполнений на каждое выполнение рабочего процесса.
Вопрос: Какой объем данных можно передавать при выполнении рабочего процесса?
Какие-либо ограничения, связанные с общим объемом данных, передаваемых при выполнении рабочего процесса, отсутствуют. Тем не менее, API HAQM SWF накладывают определенные максимальные ограничения на параметры, которые используются для передачи данных в рамках выполнения. Например, входные данные, которые передаются в задание действия, и входные данные, которые отправляются с помощью сигнала, не могут превышать 32 000 символов.
Вопрос: Хранит ли HAQM SWF завершенные выполнения? Если да, то как долго?
HAQM SWF хранит историю завершенных выполнений в течение любого количества дней, которые вы укажете, но не более 90 дней (т. е. примерно 3 месяцев). В этот период вы можете получать доступ к истории и осуществлять поиск выполнения программно или с помощью консоли.
Вопрос: Когда вызовы API пропускаются?
При отсутствии редких всплесков нагрузки может происходить пропуск вызовов, когда происходит большое количество вызовов API за очень короткий промежуток времени. Если вы обнаружите, что часто происходит пропуск, или ваше приложение часто сталкивается с пиковыми нагрузками, используйте эту форму, чтобы связаться с командой HAQM SWF для обсуждения своего сценария использования и попросить установить другие настройки для пропуска для своего аккаунта.
Вопрос: В каком регионе доступен сервис HAQM SWF?
Сервис HAQM SWF (SWF) доступен в следующих регионах: Восток США (Северная Вирджиния), Запад США (Орегон), Запад США (Северная Калифорния), ЕС (Ирландия), ЕС (Франкфурт), Азия и Тихий океан (Сингапур), Азия и Тихий океан (Токио), Азия и Тихий океан (Сидней), Южная Америка (Сан-Паулу) и AWS GovCloud (США).
Вопрос: Доступен ли сервис HAQM SWF между зонами доступности?
Да, HAQM SWF управляет вашей историей выполнения рабочего процесса и другими элементами ваших рабочих процессов между 3 зонами доступности, благодаря чему ваши приложения могут продолжать полагаться на HAQM SWF даже при возникновении сбоя в одной зоне доступности.
Вопрос: Где находятся точки доступа к сервису HAQM SWF?
См. страницу Справочной документации AWSдля получения дополнительной информации о точках доступа.
Вопрос: Ваши цены указаны с учетом налогов?
Если не указано иное, представленные здесь цены не включают применимые налоги и сборы, в том числе НДС и применимый налог с продаж.Для клиентов с платежным адресом в Японии использование сервисов AWS облагается потребительским налогом Японии. Подробнее.