fbpx

Amazon SWF – Serviço de Fluxo de Trabalho Simples da Amazon

Compartilhar no facebook
Compartilhar no linkedin
Compartilhar no twitter
Compartilhar no whatsapp
Compartilhar no telegram

O Amazon SWF facilita a criação de aplicativos que coordenam o trabalho entre componentes distribuídos. No Amazon SWF, uma tarefa representa uma unidade lógica de trabalho que é executada por um componente do seu aplicativo.

A coordenação de tarefas no aplicativo envolve o gerenciamento de dependências, agendamento e simultaneidade entre tarefas, de acordo com o fluxo lógico do aplicativo.

O Amazon SWF oferece controle total sobre a implementação e coordenação de tarefas sem se preocupar com complexidades subjacentes, como acompanhar o progresso e manter o estado.

Ao usar o Amazon SWF, você implementa trabalhadores para executar tarefas.

Esses funcionários podem executar na infraestrutura de nuvem, como o Amazon EC2, ou em suas próprias instalações. Você pode criar tarefas de longa execução que podem falhar, atingir o tempo limite ou exigir reinicializações ou tarefas que podem ser concluídas com taxa de transferência e latência variáveis.

 

O Amazon SWF armazena tarefas, as atribui aos trabalhadores quando estão prontos, monitora seu progresso e mantém seu estado, incluindo detalhes sobre sua conclusão.

Para coordenar tarefas, você escreve um programa que obtém o estado mais recente de cada tarefa do Amazon SWF e o utiliza para iniciar tarefas subseqüentes. O Amazon SWF mantém o estado de execução de um aplicativo de forma durável, para que ele seja resistente a falhas em componentes individuais.

Com o Amazon SWF, você pode implementar, implantar, dimensionar e modificar esses componentes do aplicativo de forma independente.

 

Fluxos de Trabalho

Usando o Amazon SWF, você pode implementar aplicativos assíncronos distribuídos como fluxos de trabalho. Os fluxos de trabalho coordenam e gerenciam a execução de atividades que podem ser executadas de forma assíncrona em vários dispositivos de computação e que podem apresentar processamento sequencial e paralelo.

Ao projetar um fluxo de trabalho, analise seu aplicativo para identificar suas tarefas componentes, representadas no Amazon SWF como atividades. A lógica de coordenação do fluxo de trabalho determina a ordem em que as atividades são executadas.

 

Domínios de Fluxo de Trabalho

Os domínios fornecem uma maneira de definir o escopo dos recursos do Amazon SWF na sua conta da AWS. Você deve especificar um domínio para todos os componentes de um fluxo de trabalho, como o tipo de fluxo de trabalho e os tipos de atividade. É possível ter mais de um fluxo de trabalho em um domínio; no entanto, os fluxos de trabalho em domínios diferentes não podem interagir entre si.

 

Histórico do Fluxo de Trabalho

O histórico do fluxo de trabalho é um registro detalhado, completo e consistente de todos os eventos que ocorreram desde o início da execução do fluxo de trabalho. Um evento representa uma alteração discreta no estado de execução do seu fluxo de trabalho, como atividades agendadas e concluídas, tempos limite de tarefas e sinais.

 

Atores

O Amazon SWF consiste em vários tipos diferentes de recursos programáticos conhecidos como atores. Os atores podem ser iniciantes no fluxo de trabalho, decisores ou trabalhadores de atividades.

Esses atores se comunicam com o Amazon SWF por meio de sua API. Você pode desenvolver atores em qualquer linguagem de programação.

Um iniciador de fluxo de trabalho é qualquer aplicativo que possa iniciar execuções de fluxo de trabalho. Por exemplo, um iniciador de fluxo de trabalho pode ser um site de comércio eletrônico em que um cliente faz um pedido.

Outro iniciador de fluxo de trabalho pode ser um aplicativo móvel, em que um cliente solicita comida para viagem ou solicita um táxi.

As atividades em um fluxo de trabalho podem ser executadas sequencialmente, em paralelo, de forma síncrona ou assíncrona. A lógica que coordena as tarefas em um fluxo de trabalho é chamada de decisão.

O decisor agenda as tarefas da atividade e fornece dados de entrada para os trabalhadores da atividade. O decisor também processa eventos que chegam enquanto o fluxo de trabalho está em andamento e fecha o fluxo de trabalho quando o objetivo foi concluído.

Um trabalhador da atividade é um processo (ou thread) de um único computador que executa as tarefas da atividade no seu fluxo de trabalho. Diferentes tipos de trabalhadores da atividade processam tarefas de diferentes tipos de atividade, e vários trabalhadores da atividade podem processar o mesmo tipo de tarefa.

Quando um trabalhador de atividade está pronto para processar uma nova tarefa de atividade, ele pesquisa o Amazon SWF em busca de tarefas apropriadas para esse trabalhador de atividade. Após receber uma tarefa, o responsável pela atividade processa a tarefa até a conclusão e, em seguida, retorna o status e o resultado ao Amazon SWF. O trabalhador da atividade pesquisa uma nova tarefa.

 

Tarefas

O Amazon SWF fornece atribuições de trabalho aos trabalhadores e decisores, dados como um dos três tipos de tarefas: tarefas de atividade, tarefas do AWS Lambda e tarefas de decisão.

Uma tarefa de atividade instrui um trabalhador de atividade a desempenhar sua função, como verificar inventário ou cobrar um cartão de crédito. A tarefa de atividade contém todas as informações que o responsável pela atividade precisa para desempenhar sua função.

Uma tarefa do AWS Lambda é semelhante a uma tarefa de atividade, mas executa uma função do AWS Lambda em vez de uma atividade tradicional do Amazon SWF. Para obter mais informações sobre como definir uma tarefa do AWS Lambda, consulte a documentação da AWS sobre as tarefas do AWS Lambda.

Uma tarefa de decisão informa ao decisor que o estado da execução do fluxo de trabalho foi alterado para que o decisor possa determinar a próxima atividade que precisa ser executada. A tarefa de decisão contém o histórico atual do fluxo de trabalho.

O Amazon SWF agenda uma tarefa de decisão quando o fluxo de trabalho é iniciado e sempre que o estado do fluxo de trabalho muda, como quando uma tarefa de atividade é concluída.

Cada tarefa de decisão contém uma exibição paginada de todo o histórico de execução do fluxo de trabalho. O decisor analisa o histórico de execução do fluxo de trabalho e responde ao Amazon SWF com um conjunto de decisões que especificam o que deve ocorrer em seguida na execução do fluxo de trabalho.

Basicamente, todas as tarefas de decisão dão ao decisor a oportunidade de avaliar o fluxo de trabalho e fornecer orientações ao Amazon SWF.

 

Listas de Tarefas

As listas de tarefas fornecem uma maneira de organizar as várias tarefas associadas a um fluxo de trabalho. Você pode pensar nas listas de tarefas como semelhantes às filas dinâmicas.

Quando uma tarefa é agendada no Amazon SWF, você pode especificar uma fila (lista de tarefas) para inseri-la. Da mesma forma, ao pesquisar no Amazon SWF por uma tarefa, você determina de qual fila (lista de tarefas) obter a tarefa.

As listas de tarefas fornecem um mecanismo flexível para rotear tarefas para os trabalhadores, conforme seu caso de uso. As listas de tarefas são dinâmicas, pois você não precisa registrar uma lista de tarefas ou criá-la explicitamente por meio de uma ação. Basta agendar uma tarefa para criar a lista de tarefas, caso ela ainda não exista.

 

Long Polling

Pessoas que decidem e desenvolvem atividades se comunicam com o Amazon SWF usando pesquisas longas. O responsável pela atividade ou responsável pela atividade inicia periodicamente a comunicação com o Amazon SWF, notificando o Amazon SWF de sua disponibilidade para aceitar uma tarefa e, em seguida, especifica uma lista de tarefas para obter as tarefas.

A pesquisa longa funciona bem para o processamento de tarefas de alto volume. Pessoas que decidem e desenvolvem atividades podem gerenciar sua própria capacidade.

 

Identificadores de Objeto

Os objetos Amazon SWF são identificados exclusivamente por tipo de fluxo de trabalho, tipo de atividade, tarefas de decisão e atividade e execução de fluxo de trabalho:

Um tipo de fluxo de trabalho registrado é identificado por seu domínio, nome e versão. Os tipos de fluxo de trabalho são especificados na chamada para RegisterWorkflowType.

Um tipo de atividade registrado é identificado por seu domínio, nome e versão. Os tipos de atividades são especificados na chamada para RegisterActivityType.

Cada tarefa de decisão e atividade é identificada por um token de tarefa exclusivo. O token de tarefa é gerado pelo Amazon SWF e é retornado com outras informações sobre a tarefa na resposta de PollForDecisionTask ou PollForActivityTask.

Embora o token seja mais comumente usado pelo processo que recebeu a tarefa, esse processo pode passar o token para outro processo, que pode então relatar a conclusão ou falha da tarefa.

Uma única execução de um fluxo de trabalho é identificada pelo domínio, ID do fluxo de trabalho e ID da execução.

Os dois primeiros são parâmetros que são passados ​​para StartWorkflowExecution. O ID da execução é retornado pelo StartWorkflowExecution.

 

Encerramento da Execução do Fluxo de Trabalho

Depois de iniciar uma execução do fluxo de trabalho, ela é aberta. Uma execução de fluxo de trabalho aberto pode ser fechada como concluída, cancelada, com falha ou com tempo limite esgotado. Também pode ser continuado como uma nova execução ou pode ser finalizado. O decisor, a pessoa que administra o fluxo de trabalho ou o Amazon SWF pode fechar uma execução do fluxo de trabalho.

 

Ciclo de Vida de uma Execução de Fluxo de Trabalho

Desde o início da execução de um fluxo de trabalho até sua conclusão, o Amazon SWF interage com os atores, atribuindo-lhes tarefas apropriadas: tarefas de atividade ou de decisão.