Amazon Simple Workflow Service
Por que usar o SWF?
O Amazon Simple Workflow Service (Amazon SWF) ajuda os desenvolvedores a criar, executar e escalar trabalhos em segundo plano que tenham etapas paralelas ou sequenciais. Você pode pensar no Amazon SWF como um rastreador de estado e coordenador de tarefas totalmente gerenciado na nuvem.
Se as etapas de seu aplicativo levam mais de 500 milissegundos para serem concluídas, você precisa rastrear o estado do processamento. E se precisa recuperar ou tentar novamente se uma tarefa falha, o Amazon SWF pode ajudá-lo.
Se você está procurando um serviço de fluxo de processo visual low-code para orquestrar serviços da AWS, automatizar processos de negócios ou criar aplicações sem servidor, saiba mais sobre o AWS Step Functions.
Benefícios
Amazon SWF promove uma separação entre o fluxo de controle da lógica das etapas do seu trabalho em segundo plano e as unidades reais de trabalho que contêm sua lógica de negócios exclusiva. Isso permite gerenciar, manter e dimensionar o "mecanismo de estado" do seu aplicativo separadamente da lógica de negócios central que o diferencia. À medida que seus requisitos de negócios mudam, você pode facilmente alterar a lógica do aplicativo, sem ter de se preocupar com o mecanismo de estado subjacente, o despacho de tarefas e o controle de fluxo.
O Amazon SWF é executado nos datacenters de alta disponibilidade da Amazon. Assim, o mecanismo de processamento de tarefas e rastreamento de estado estará disponível sempre que os aplicativos precisarem. O Amazon SWF armazena as tarefas de forma redundante, despacha-as com confiabilidade para os componentes do aplicativo, acompanha seu progresso e mantém seu estado mais recente.
O Amazon SWF substitui a complexidade das soluções de fluxo de processos codificadas sob medida e do software de automação de processos por um serviço da Web de fluxo de processos em nuvem totalmente gerenciado. Assim, os desenvolvedores não precisam gerenciar a análise de infraestrutura da automação do processo, podendo concentrar sua energia exclusivamente na funcionalidade de sua aplicação.
O Amazon SWF é facilmente escalável com o uso de seu aplicativo. Não é necessária nenhuma administração manual do serviço de fluxo de processos à medida que você adiciona mais fluxos de processos na nuvem à sua aplicação ou aumenta a complexidade dos fluxos de processos.
O Amazon SWF permite que você grave os componentes de seu aplicativo e a lógica de coordenação em qualquer linguagem de programação e os execute na nuvem ou on-premises.
Detalhes do produto Amazon SWF
É fácil usar o Amazon SWF para gerenciar fluxos de trabalho no seu aplicativo
Funcionalidade do Amazon SWF
O serviço Amazon SWF age como o centro de coordenação de todos os componentes diferentes do seu aplicativo:
- Manter o estado do aplicativo
- Acompanhar as execuções de fluxo de trabalho e registrar seu andamento
- Aguardar e despachar tarefas
- Controlar que tarefas hospedadas em cada um de seus aplicativos hospeda serão atribuídas para executar
Para usar o Amazon SWF, basta, simplesmente:
- Use o AWS Management Console ou o Amazon SWF APIs para especificar os nomes dos fluxos de trabalho.
- Use o Amazon SWF APIs para “começar” um novo fluxo de trabalho e criar uma sequência específica de tarefas – chamada de “execução do fluxo de trabalho” – que entrará imediatamente em ação.
- Use o Amazon SWF APIs nas máquinas operárias (“operário” é um componente da sua aplicação que lida com tarefas específicas) para estabelecer a ordem de tarefas, administrar fluxos condicionais e executar o reinício de uma execução do fluxo de trabalho.
- Use as APIs do Amazon SWF nas máquinas de operador para solicitar e executar tarefas de fluxo de trabalho na nuvem ou localmente.
- Monitore a posição e o progresso das execuções nos fluxos de trabalho e suas respectivas tarefas no AWS Management Console.
O exemplo do passo a passo no Console de Gerenciamento da AWS apresenta todas as etapas para registrar e executar uma aplicação modelo. Consulte a documentação para obter mais informações.
Descrição detalhada
O Amazon SWF é um serviço de fluxo de trabalho totalmente gerenciado para construção de aplicativos escaláveis e flexíveis. O Amazon SWF fornece chamadas de API simples que podem ser executadas a partir de gravações de código em qualquer idioma e serem executadas nas suas instâncias do EC2, ou quem qualquer uma de suas máquinas localizadas em qualquer lugar no mundo que tenham acesso à internet.
O Amazon SWF atua como um hub de coordenação com o qual seus hosts de aplicativo interagem. Você cria os fluxos de trabalho desejados com suas tarefas associadas e qualquer lógica condicional que queira aplicar e as armazena no Amazon SWF. Cada momento em que executa um fluxo de trabalho, é considerado uma execução de fluxo de trabalho diferente. Você programa os componentes de seu aplicativo para solicitarem várias tarefas a serem desempenhadas na sua execução de fluxo de trabalho, e o Amazon SWF coordena a realização das tarefas, na ordem que especificar, nos seus hosts (estando os hosts localizados na nuvem ou in loco). Aplicativos comunicam-se com o Amazon SWF usando APIs para registrar erros ou êxitos de tarefas. Então o Amazon SWF continua a sequência de tarefas atribuindo a próxima tarefa de fluxo de trabalho a um host de aplicativo, ou efetua novamente a execução da tarefa com erro, dependendo de sua lógica de negócios.
Efetue o log-in no AWS Management Console para começar uma execução de fluxo de trabalho do Amazon SWF. De modo alternativo, você pode iniciar uma execução de fluxo de trabalho por meio das nossas APIs do Amazon SWF. O Amazon SWF emprega uma interface de serviço da AEB simples, fácil de usar e altamente flexível:
- StartWorkflowExecution: inicia uma sequência de tarefas de fluxo de trabalho e disponibiliza a primeira tarefa para um dos hosts do seu aplicativo.
- DescribeWorkflowExecution: fornece o status das execuções e tarefas do seu fluxo de trabalho.
- PollForActivityTask: seus hosts de aplicativos (na nuvem ou no local) solicitam e executam tarefas de fluxo de trabalho em um loop contínuo.
- RespondActivityTaskCompleted: um host de aplicativo informa ao Amazon SWF que concluiu uma tarefa com êxito. Então o Amazon SWF continuará a execução de fluxo de trabalho, tornando a próxima tarefa disponível para um host de aplicativo.
- TerminateWorkflowExecution: pare de impulsionar a execução de um fluxo de trabalho específico. O Amazon SWF não irá atribuir mais nenhuma tarefa dessa execução de fluxo de trabalho específica para o host do aplicativo.
Uso pretendido e restrições
O uso deste serviço está sujeito ao Contrato do Cliente da Amazon Web Services.
Casos de uso
Codificação de vídeo usando o Amazon S3 e o Amazon EC2. Neste caso de uso, vídeos grandes são carregados no Amazon S3, em blocos. O carregamento de blocos precisa ser monitorado. Depois de ser carregado, o bloco é codificado ao ser descarregado para uma instância do Amazon EC2. O bloco codificado é armazenado em outra localização do Amazon S3. Após todos os blocos serem codificados dessa forma, eles são combinados em um arquivo codificado completo que é armazenado inteiramente de volta no Amazon S3. Podem ocorrer falhas durante esse processo devido a um ou mais erros de codificação achados nos blocos. Essas falhas precisam ser detectadas e tratadas por meio do gerenciamento de fluxo de processos em nuvem do Amazon SWF.
Migração de componentes do data center para a nuvem. Operações críticas de negócios estão hospedadas em um datacenter privado mas precisam ser movidas completamente para a nuvem, sem interrupções. Aplicativos baseados no Amazon SWF podem combinar operadores que combinam componentes em execução no datacenter com operadores executados na nuvem. Para fazer a transição de um operador de datacenter facilmente, novos operadores do mesmo tipo são implementados primeiro na nuvem. Os operadores no datacenter continuam a ser executados como sempre, junto com os novos operadores baseados na nuvem. Os operadores baseados na nuvem são testados e validados pelo roteamento de uma parte do carregamento através deles. Durante este teste, o aplicativo não é interrompido porque os operadores continuam sendo executados no datacenter. Depois de um teste bem-sucedido, os trabalhadores no data center são gradualmente interrompidos e os que estão na nuvem são ampliados, de modo que eles passam inteiramente para uma aplicação de gerenciamento de fluxo de processos na nuvem. Esse processo de fluxo de processos na nuvem pode ser repetido para todos os outros trabalhadores no data center, de modo que a aplicação seja totalmente transferida para a nuvem. Se, por alguma razão de negócios, certas etapas de processamento precisarem continuar a ser executadas no datacenter privado, esses operadores poderão continuar a ser executados no datacenter privado e ainda participar do aplicativo.
Processamento de grandes catálogos de produtos usando o Amazon Mechanical Turk. Enquanto dados são validados em catálogos grandes, os produtos do catálogo são processados em lotes. Lotes diferentes podem ser processados concomitantemente. Para cada lote, os dados do produto são extraídos de servidores no banco de dados e transformados em arquivos CSV (Valores separados por vírgula) exigidos pelo Requester User Interface (RUI) do Amazon Mechanical Turk. O CSV é carregado para preencher e executar as HITs (Tarefas de inteligência humana). Quando HITs são concluídas, o arquivo CSV resultante é transformado reversamente para que os dados sejam obtidos de volta em seu formato original. Os resultados são estimados e os operadores do Amazon Mechanical Turk são pagos por resultados aceitáveis. As falhas são eliminadas e reprocessadas, enquanto os resultados aceitáveis de HIT são usados para atualizar o catálogo. Conforme os lotes são processados, o sistema precisa acompanhar a qualidade dos operadores do Amazon Mechanical Turk e ajustar os pagamentos apropriadamente. HITs com falha são reorganizados em lote e enviados por meio da pipeline novamente.
AWS Flow Framework
O AWS Flow Framework é uma coleção de bibliotecas convenientes que agiliza e facilita a criação de aplicativos com o Amazon Simple Workflow.
Como funciona
O AWS Flow Framework tem um modelo de programação simples que facilita a criação de aplicativos que executam trabalhos em diversas máquinas. Com a estrutura do produto, você pode rapidamente criar tarefas, coordená-las e especificar como essas tarefas dependem umas das outras, como faria em um programa comum. Por exemplo, você pode executar um método em um aplicativo em um computador "remoto" simplesmente chamando um método na lógica do seu aplicativo, hospedado em um computador "local" separado. O AWS Flow Framework se responsabiliza pela complexa comunicação necessária para executar o método remoto e retorna o resultado para o aplicativo local usando informações armazenadas no serviço Amazon Simple Workflow. A saída de qualquer método executado pode ser usada para conectar partes separadas da lógica, que dependem umas das outras. A estrutura permite usar uma sintaxe simples para definir as dependências entre métodos com uma abordagem simples de "bloquear e esperar o callback". Além disso, a estrutura permite tratar uma falha na máquina remota como se fosse um erro local e oferece várias opções para definir facilmente como você gostaria de tentar novamente métodos importantes no aplicativo, caso ocorra uma falha.
- Obtenha no AWS SDK para Java
- Veja o webinar para a versão Java
- Leia o guia do desenvolvedor
- Consulte a referência de APIs
Observações
O AWS Flow Framework para Ruby não está mais em desenvolvimento ativo. Embora o código existente continue funcionando indefinidamente, não haverá novos recursos nem versões. O código-fonte do Flow Framework para Ruby continuará disponível no arquivamento do AWS SWF GitHub. Se as suas aplicações Simple Workflow baseadas em Ruby estão evoluindo e mudando, há opções que você pode considerar, incluindo a migração para o AWS Step Functions ou o uso da API nativa do Simple Workflow. Para obter detalhes, consulte o Guia do desenvolvedor do AWS Simple Workflow.
Usando o AWS Flow Framework, você escreve código simples e deixa que os objetos e as classes incorporadas na estrutura do produto controlem dos detalhes das APIs do Amazon Simple Workflow. O AWS Flow Framework se responsabiliza pela criação e execução das etapas do seu aplicativo, controla o seu progresso e permite definir regras para novas tentativas em caso de falha de uma etapa, entre muitos outros recursos. Enquanto isso, o Amazon Simple Workflow Service mantém o estado da execução do seu aplicativo, distribui tarefas para execução conforme a disponibilidade dos funcionários e mantém um histórico das auditorias de todas as tarefas.
O AWS Flow Framework é de código aberto em Java, desenvolvido e gerenciado pela AWS. Você pode usar os links abaixo para obter bibliotecas, código fonte, documentação e exemplos, entre outros recursos.