Облако AWS предоставляет различные сервисы для создания бессерверных приложений на своей платформе. Есть вычислительные сервисы, такие как AWS Lambda и AWS Fargate, а есть другие интеграционные сервисы, которые связывают различные вычислительные сервисы, такие как AWS Step Functions, Amazon API Gateway и т. д.
В этой статье мы рассмотрим AWS Step Functions.
Введение
Официальное определение AWS Step function звучит следующим образом:
Step Functions — это служба бессерверной оркестровки, которая позволяет объединять функции AWS Lambda и другие службы AWS для создания критически важных для бизнеса приложений. С помощью графической консоли Step Functions вы видите рабочий процесс вашего приложения как серию управляемых событиями шагов.
Одной из важнейших характеристик Step-функций является использование модели Finite State Machines (FSM). Машины состояний выполняют простую работу, используя состояния и функции для выполнения поставленных перед ними задач. Использование машин состояний гарантирует отсутствие проблемы бесконечных циклов, что само по себе является дорогостоящей операцией.
Два наиболее важных ключевых слова — это состояния и переходы. Машина определяется ее состояниями и отношениями между ними, известными как переходы.
Добавление большего количества состояний увеличивает сложность FSM. Машины состояний определяются с помощью языка Amazon States Language, основанного на JSON.
Когда использовать шаговые функции
Служба повышает отказоустойчивость приложений множеством способов. Например, разработчики могут реализовать контрольные точки и перезапуски, чтобы убедиться, что задачи приложения выполняются в порядке и в соответствии с ожиданиями. Они могут использовать встроенные функции try/catch для автоматического устранения ошибок и исключений. Они даже могут задавать собственные параметры обработки повторных попыток: скорость отката, максимальное количество попыток и эквиваленты ошибок.
Кроме того, AWS Step Functions легко интегрируется с другими службами AWS. Разработчики могут настроить ее на параллельный запуск с другими задачами, приостановку внешних рабочих процессов или ожидание завершения других внутренних заданий. Пользователи могут внедрять программы машинного обучения в свои приложения с помощью AWS SageMaker, возможности пакетных вычислений с помощью AWS Batch, бессерверный ETL с помощью AWS Glue и многое другое.
Пошаговые функции также полезны для длительных или отложенных рабочих процессов. Они позволяют выполнять рабочий процесс в течение года, реализуя при этом состояние ожидания.
Глубокое погружение в пошаговые функции
Типы состояний
Существует 8 типов состояний:
- Состояние задачи — Выполнение некоторой работы в вашей машине состояний. AWS Step Functions могут вызывать функции Lambda непосредственно из состояния задачи.
- Состояние выбора — Сделайте выбор между ветвями выполнения.
- Состояние неудачи — останавливает выполнение и отмечает его как неудачу.
- Состояние Succeed — останавливает выполнение и отмечает его как успех
- Состояние Pass — Просто передать вход на выход или ввести некоторые фиксированные данные.
- Состояние ожидания — Обеспечивает задержку на определенный промежуток времени или до указанного времени/даты.
- Параллельное состояние — Запуск параллельных ветвей выполнения
- Состояние Map — Добавляет условие цикла for-each.
Важные функции
- AWS Step Functions позволяет вам объединять уже существующие функции Lambda и микросервисы в новые композиции, одновременно координируя их. Задачи вашего рабочего процесса могут выполняться везде, на инстансах, контейнерах, функциях, мобильных устройствах и других платформах.
- Функции шагов поддерживают строгий барьер между логикой и реализацией вашего приложения. Вы можете менять порядок шагов, добавлять, перемещать, менять местами и перетасовывать их без изменения бизнес-логики.
- Независимо от того, занимает ли операция секунды или месяцы, Step Functions автоматически справляется с ошибками и исключениями с помощью встроенных функций try/catch и повторных попыток.
- Step Functions поддерживает мощность сервиса в нескольких зонах доступности в каждом регионе и обладает встроенной отказоустойчивостью, обеспечивая высокую доступность как сервиса, так и поддерживаемых им рабочих процессов приложений.
- Step Functions автоматически масштабирует операции и базовые вычисления для выполнения шагов вашего приложения в ответ на изменение рабочей нагрузки.
- AWS Step Functions имеет SLA 99,9%.
- AWS Step Functions обеспечивает доступ к метаданным о выполнении рабочих процессов, чтобы вы могли легко идентифицировать связанные ресурсы. Это облегчает корреляцию журналов для ускорения отладки и измерения данных о производительности рабочего процесса.
- Также поддерживаются шаблоны обратного вызова. Шаблоны обратного вызова автоматизируют рабочие процессы для приложений с человеческими действиями и пользовательскими интеграциями со сторонними службами.
- AWS Step Functions поддерживает события выполнения рабочих процессов, что позволяет быстрее и проще создавать и отслеживать бессерверные рабочие процессы, управляемые событиями. Уведомления о событиях выполнения могут автоматически доставляться при запуске или завершении рабочего процесса через CloudWatch Events, достигая таких целей, как AWS Lambda, Amazon SNS, Amazon Kinesis или AWS Step Functions для автоматического реагирования на событие.
Ценообразование
При выполнении каждого шага рабочего процесса Step Functions подсчитывает переход состояния. При расчете вознаграждения учитываются все переходы состояний ваших машин состояний, включая повторные попытки.