A Amazon Web Service lançou o AWS Step Functions, um serviço que permite a coordenação de aplicações distribuídas e microserviços usando workflows visuais. O console do AWS Step Functions permite a especificação de uma máquina de estados em formato JSON , responsável por executar de forma coordenada todos os passos necessários para uma aplicação, por exemplo, chamar uma função AWS Lambda ou um microserviço dentro de um container disponibilizado no AWS EC2 Container Services (ECS).
Cada uma das máquina de estado criada através do AWS Step Function define um conjunto de estados e as transições entre eles. Os estados podem ser ativados sequencialmente ou em paralelo. No caso de uma ativação em paralelo, o serviço garantirá que todos os estados paralelos sejam atingidos antes do processo seguir adiante. Os estados podem realizar alguma tarefa, tomar decisões e controlar o progresso da máquina de estado.
É possível executar várias cópias de uma mesma máquina de estados ao mesmo tempo. Para esses casos, cada uma das cópias é chamada de uma "execução". De acordo com o AWS Blog, o serviço AWS Step Functions permitirá rodar milhares de execuções de forma concorrente.
Todo o trabalho realizado dentro de uma máquina de estado AWS Step Functions é conduzido por uma "tarefa". Uma tarefa pode ser:
Uma função AWS Lambda: uma tarefa totalmente baseada na nuvem e que roda em um serviço Lambda. As funções Lambda podem ser escritas em JavaScript (que podem ser escritas utilizando-se o console AWS Management ou carregadas no serviço AWS Lambda), em Java ou Python (que devem ser carregadas no serviço AWS Lambda).
Uma atividade: um conceito que se refere a uma tarefa a ser realizada por um aplicação "worker" ou por um microserviço disponibilizado em uma plataforma como AWS EC2 ou AWS ECS.
- Uma aplicação worker pode ser implementada em qualquer linguagem que possa fazer chamadas à API do AWS Step Functions.
- Uma aplicação worker deve criar um pool de AWS Step Functions através de chamadas às API 'GetActivityTask' e 'SendTask'. Segundo o Blog da AWS, em última análise uma atividade pode inclusive ser uma 'tarefa humana' que depende de uma intervenção humana para ter continuidade.
- Se uma atividade possuir um sistema de heartbeat para timeout, o worker que o implementa precisa mandar requisições de atualização através da ação 'SendTaskHeartbeat'.
As atividades não são versionadas e devem sempre ser compatíveis com versões anteriores. Caso seja necessária uma mudança na definição de uma atividade, e essa mudança a tornar incompatível com versões anteriores, uma nova atividade deve ser criada pelo Step Functions com um nome diferente.
O tratamento de erros e a lógica de novas tentativas de execução fazem parte da definição de uma máquina de estados e, dessa forma, também podem ser especificadas em formato JSON.
Ao se criar uma especificação de máquina de estado, o gem Ruby 'statelint' do novo AWS Labs pode ser utilizado para validar o JSON criado manualmente ou por alguma ferramenta, verificando erros comuns como estados fora do escopo ou omissão de um estado terminal.
O design de uma máquina de estado pode ser visualizado no console do AWS Step Functions, e sua execução acompanhada através de um diagrama codificado em cores ,ajudando na identificação de erros no andamento e o sucesso ou falha em cada um dos passos.
Apesar do AWS Step Functions ter sido liberado recentemente, Simon Wardley, pesquisador do Leading Edge Forum, sugere que a utilização do Step Functions juntamente com uma solução 'serverless', como o AWS Lambda, pode apoiar a codificação de regras de negócio de maneira a aumentar a agilidade num futuro próximo. Como consequência, foram iniciadas as primeiras tentativas de criar uma Business Process Execution Language (BPEL - Linguagem de Execução de Processos de Negócio).
"Quando se pensa em AWS Lambda, AWS Step Functions e outras soluções, é necessário se fazer uma análise de uma forma purista e profunda da automação a ser implementada, levando-se em conta não somente o que automatizar e como transformar isso em mapas ou sistemas relacionados. É necessário definir como disponibilizar tais automações em todos os lugares. Imaginando um cenário em escala e com a competitividade que acredito que atingiremos, essa questão se torna essencial.
O Blog da AWS especifica que o AWS Step Functions está disponível nas regiões US East (Virginia do Norte), US East (Ohio), US West (Oregon), EU (Irlanda), and Asia Pacific (Tóquio). Através do AWS Free Tier é possível executar, sem encargos, até 4.000 transições de estado por mês. Fora do Free Tier, o custo é de US$ 0,025 por 1.000 transições de estado.
Informações adicionais sobre AWS Step Functions podem ser encontradas na página do produto, no Blog da AWS e em um webinar da AWS recentemente disponibilizado no YouTube.