Сервис AWS Step Functions теперь доступен всем

Попробовать AWS Step Functions бесплатно

Уровень бесплатного пользования сервисом AWS Step Functions включает 4000 бесплатных переходов между состояниями в месяц.  

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


Вопрос: Что такое AWS Step Functions?

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

AWS Step Functions управляет работой приложения и соответствующей инфраструктурой, чтобы обеспечить доступность приложения в любом масштабе.

Вопрос: Каковы преимущества разработки приложений с использованием оркестрации сервисов для координации задач?

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

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

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

  • Обработка документов и данных. Консолидация данных из разных БД в единые отчеты. Очистка и преобразование крупных пакетов данных в полезные форматы.
  • DevOps. Разработка инструментов для непрерывной интеграции и непрерывного развертывания. Создание событийно-зависимых приложений, которые автоматически реагируют на изменения инфраструктуры.
  • Электронная коммерция. Автоматизация наиболее важных бизнес-процессов, таких как выполнение заказов и инвентаризация.
  • Интернет-приложения. Реализация надежных процессов регистрации и аутентификации пользователей.

Вопрос: Как работает сервис AWS Step Functions?

AWS Step Functions позволяет представить приложение в виде конечного автомата – последовательности действий, совокупность которых полностью описывает поведение приложения. Под состояниями конечного автомата понимаются задачи, последовательные шаги, параллельные шаги, условные действия (выбор) и/или таймеры (ожидание). Задачи – это единицы работы, которые могут выполняться функциями AWS Lambda, инстансами Amazon EC2 любого типа, контейнерами, локальными серверами и любыми другими устройствами и сервисами, для управления которыми можно использовать API Step Functions. На визуальной консоли автоматически отмечается каждое состояние в порядке выполнения, что упрощает разработку многоступенчатых приложений. На консоли отображается статус каждого шага в режиме реального времени и подробная история всех выполнений. Step Functions управляет и масштабирует шаги приложения и соответствующие вычислительные ресурсы, гарантируя надежную работу приложения при увеличении спроса.

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

AWS Step Functions рекомендуется использовать для координации сервисных компонентов при разработке высокомасштабируемых и легко контролируемых приложений. Если же необходима надежная, масштабируемая выделенная очередь для отправления, хранения и приема сообщений в ходе взаимодействия между сервисами, лучше использовать Amazon Simple Queue Service (SQS). Step Functions отслеживает все задачи и события в приложении. В Amazon SQS необходимо самостоятельно реализовать отслеживание на уровне приложения, особенно если в приложении используется несколько очередей. Консоль Step Functions и API видимости обеспечивают детальный анализ работы приложений, позволяющий осуществлять поиск выполняющихся заданий, переходить к детальному просмотру того или иного задания и управлять ходом их выполнения. В Amazon SQS необходимо дополнительно реализовывать такие функциональные возможности. Step Functions предлагает ряд возможностей, позволяющих облегчить процесс разработки приложений, в числе которых передача данных между заданиями и гибкость при распределении задач. В Amazon SQS необходимо внедрять некоторые функциональные возможности на уровне приложения. Если при использовании сервиса Amazon SQS можно создавать основные рабочие процессы для координации распределенного приложения, то при использовании Step Functions все эти возможности предоставляются сразу вместе с другими возможностями на уровне приложения.

Вопрос: Когда лучше использовать AWS Step Functions, а когда – AWS Batch?

AWS Batch – это сервис для эффективного выполнения в облаке AWS пакетных вычислительных заданий любого масштаба. AWS Step Functions следует использовать при разработке распределенного приложения в виде последовательности действий, включая последовательные, параллельные и условные (выбор). AWS Batch можно использовать для выполнения заданий в приложении, Step Functions – для подачи нескольких заданий Batch со взаимозависимостями. Batch следует использовать при автоматизации управления вычислительной инфраструктурой в целях масштабирования до того уровня, когда пакетное выполнение заданий действительно необходимо.

Вопрос: Когда следует использовать AWS Step Functions, а когда – Amazon Simple Workflow Service (SWF)?

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

Вопрос: Что ждет существующий сервис Amazon Simple Workflow (SWF)?

AWS продолжит поддержку сервиса Amazon Simple Workflow (SWF) и всех клиентов Amazon SWF.

Вопрос: Как AWS Step Functions работает с другими сервисами AWS?

AWS Step Functions работает с рядом других сервисов AWS, включая AWS CloudFormation, AWS Lambda, Amazon EC2, Amazon EC2 Container Service (ECS), Amazon API Gateway, Amazon CloudWatch, AWS CloudTrail и Auto Scaling.

Вот отдельные примеры того, что можно делать, используя различные сервисы AWS:

  • запускать несколько сопутствующих ресурсов, необходимых для конечных автоматов и действий AWS Step Functions, с помощью сервиса AWS CloudFormation;
  • реализовывать задания с помощью функций Lambda или программ, работающих на EC2 либо в контейнерах ECS;
  • связывать API Step Functions с методами API сервиса API Gateway;
  • на основании метрик CloudWatch масштабировать рабочую группу инстансов EC2, выполняющих действия AWS Step Functions.

Вопрос: Как AWS Step Functions работает с AWS Lambda?

Функции AWS Lambda можно использовать для выполнения задач в конечном автомате. AWS Step Functions передает вход на указанную функцию Lambda и ожидает результата. Lambda позволяет создавать задачи на любом поддерживаемом языке без выделения серверов и управления ими. Подробнее об использовании Step Functions с Lambda см. в документации Step Functions.

Вопрос: Как AWS Step Functions работает с Amazon EC2 и другими вычислительными ресурсами?

Все работы в конечном автомате выполняются в виде задач. Задачей может быть действие, включающее в себя любой код на любом языке. Действия могут выполняться на Amazon EC2, Amazon ECS, мобильных устройствах – по сути, на любом компьютере, который может работать с API сервиса AWS Step Functions. С помощью вызовов API каждое из действий выполняет длинный опрос Step Functions для получения задач и входных данных, выполнения работы и возврата результата.

Вопрос: Как AWS Step Functions работает с сервисом Amazon API Gateway?

Amazon API Gateway – это полностью управляемый сервис для разработчиков, предназначенный для публикации, обслуживания, мониторинга и обеспечения безопасности API в любых масштабах. За несколько щелчков мыши в Консоли управления AWS можно связать API Step Functions с методами API сервиса API Gateway, и при отправке HTTPS-запроса заданному методу API сервис API Gateway вызовет соответствующие операции API Step Functions.

С помощью API сервиса Amazon API Gateway можно запускать конечные автоматы Step Functions, координирующие работу компонентов распределенного серверного приложения. Можно также интегрировать задачи выполняемых пользователями операций с шагами выполнения приложения, например запросы на подтверждение и ответы на них. Можно выполнять даже бессерверные асинхронные вызовы API сервисов, используемых приложением.

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

Вопрос: Как AWS Step Functions работает с сервисом Amazon CloudWatch?

Amazon CloudWatch – это сервис мониторинга ресурсов AWS и приложений, работающих на AWS. Amazon CloudWatch собирает и отслеживает метрики, настраивает предупреждения и автоматически реагирует на изменения в сервисе AWS Step Functions.

Вот отдельные примеры того, что можно делать, используя Amazon CloudWatch и AWS Step Functions:

  • вести мониторинг метрик рабочего процесса Step Functions;
  • запускать рабочие процессы Step Functions в ответ на события CloudWatch;
  • генерировать предупреждения, когда метрики сервиса Step Functions переходят граничные значения;
  • создавать график работы процессов Step Functions для временных интервалов минимальной длительностью в одну минуту, используя события CloudWatch.

Вопрос: Можно ли использовать AWS Step Functions с локальными ресурсами?

Да. Приложения AWS Step Functions могут одновременно работать с исполнителями в локальном ЦОД и в облаке. Исполнители в ЦОД будут работать, как обычно, параллельно с любыми исполнителями в облаке.


Вопрос: Как начать работу с AWS Step Functions?

Чтобы начать работу с AWS Step Functions, перейдите на страницу AWS Step Functions и нажмите кнопку «Бесплатный доступ». Если у вас еще нет аккаунта Amazon Web Services, вам будет предложено создать его. После регистрации можно использовать пошаговое руководство в консоли AWS Step Functions и создать образец конечного автомата. В Консоли управления AWS выберите «AWS Step Functions» Выберите схему «Hello World» и добавьте функцию «HelloWorld» Lambda. После этого можно просмотреть и запустить свой конечный автомат. Начать использование AWS Step Functions в приложениях поможет документация AWS Step Functions.

Вопрос: Какие языки можно использовать в AWS Step Functions?

Для создания действий можно использовать любые языки, если они обеспечивают возможность взаимодействовать с AWS Step Functions через API веб-сервиса. Можно также использовать AWS SDK на удобном языке программирования. AWS Lambda поддерживает код, написанный на Node.js (JavaScript), Python, Java (совместимый с Java 8) и C# (с библиотекой .NET Core). Конечные автоматы определяются в формате JSON с использованием Amazon States Language.


Вопрос: Как происходит аутентификация пользователей?

Сервис AWS Step Functions интегрирован с AWS Identity and Access Management (IAM). Доступ к API Step Functions можно регулировать с помощью политик IAM.


Вопрос: Как вычисляется стоимость использования AWS Step Functions?

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