AWS | Amazon Simple Workflow (SWF) | Perguntas frequentes
Perguntas frequentes do Amazon SWF
P: O que é o Amazon SWF?
O Amazon Simple Workflow Service (SWF) é um serviço da web que torna fácil a coordenação de trabalhos entre componentes de aplicativos distribuídos. O Amazon SWF habilita aplicativos para uma variedade de casos de uso, incluindo processamento de mídia, back-ends de aplicativos da web, fluxos de trabalho de processamento de negócios e análises de pipelines, para serem projetados como uma coordenação de tarefas. Tarefas representam invocações de várias etapas de processamento em um aplicativo, que podem ser desempenhadas por um código executável, chamadas de serviço da web, ações humanas e scripts.
A coordenação de tarefas envolve o gerenciamento de dependências de execução, programações e colaborações de acordo com o fluxo lógico do aplicativo. Com o Amazon SWF, os desenvolvedores têm o controle completo das etapas de processamento de implementação e coordenação de tarefas que os orientam, sem preocupações com complexidades fundamentais como o rastreamento do progresso e a manutenção do estado. O Amazon SWF também oferece o AWS Flow Framework para ajudar os desenvolvedores a usar programação assíncrona no desenvolvimento de seus aplicativos. Usando o Amazon SWF, desenvolvedores se beneficiam com a facilidade de programação e têm a capacidade de melhorar o uso de recursos, latências e a taxa de transferência de seus aplicativos.
P: Quais são os benefícios de projetar meu aplicativo como uma coordenação de tarefas? Como o Amazon SWF pode me ajudar com isso?
No Amazon SWF, as tarefas representam invocações de etapas lógicas em aplicativos. As tarefas são processadas por operadores: Programas que interagem com o Amazon SWF para obter tarefas, processá-las e retornar seus resultados. Um operador implementa uma etapa de processamento de aplicativo. Você pode construir operadores em diferentes linguagens de programação e ainda reutilizar componentes existentes para criar operadores rapidamente. Por exemplo, você pode utilizar serviços de nuvem, aplicativos corporativos, sistemas herdados e até simples scripts para implementar operadores. Ao controlar de maneira independente o número de operadores para processar cada tipo de tarefa, você pode controlar a taxa de transferência de seu aplicativo de modo eficiente.
Para coordenar a execução durante os operadores, você grava um programa chamado administrador na linguagem de programação de sua escolha. A separação de etapas de processamento e sua coordenação torna possível gerenciar seu aplicativo de maneira controlada e lhe proporciona a flexibilidade de implementar, executar, escalar e atualizá-las de modo independente. Você pode optar por implantar operadores e administradores na nuvem (por exemplo, Amazon EC2 ou Lambda) ou em máquinas protegidas por firewalls corporativos. Em função da separação de operadores e administradores, sua lógica de negócios pode ser dinâmica, podendo seu aplicativo ser atualizado rapidamente para acomodar novas solicitações. Por exemplo, você pode remover, pular ou repetir tarefas, além de criar novos fluxos de aplicativos e de modo simples ao alterar o administrador.
Ao implementar operadores e administradores, você foca na sua lógica de aplicativo diferenciada, uma vez que ela está relacionada ao desempenho das etapas de processamento atuais e à sua coordenação. O Amazon SWF controla os detalhes subjacentes, como o armazenamento de tarefas, até que elas possam ser atribuídas, monitorando as tarefas atribuídas e prestando informações consistentes na sua conclusão. O Amazon SWF também proporciona visibilidade de andamento, no nível de cada tarefa, por meio de APIs e console.
P: O que posso fazer com o Amazon SWF?
O Amazon SWF pode ser usado para tratar de muitos desafios que surgem enquanto se constrói aplicativos com componentes distribuídos. Por exemplo, você pode usar o Amazon SWF em conjunto com o AWS Flow Framework para:
Gravar seus aplicativos como programas assíncronos, usando construções de programação simples que abstraem detalhes como inicialização de tarefas para serem executadas remotamente e acompanhar o estado do tempo de execução do programa.
Manter o estado de execução de seu aplicativo (p.ex., que etapas foram concluídas, quais delas estão sendo executadas, etc.). Você não deve utilizar banco de dados, sistemas personalizados ou soluções ad hoc para manter o estado de execução.
Comunicar e gerenciar o fluxo de trabalho entre os componentes do aplicativo. Com o Amazon SWF, você não precisa projetar um protocolo de mensagem ou se preocupar com tarefas perdidas e duplicadas.
Centralizar a coordenação de etapas no seu aplicativo. Sua lógica de coordenação não precisa ser dispersada entre componentes diferentes, mas pode ser encapsulada em um único programa.
Integrar vários programas e componentes, incluindo sistemas herdados e serviços de nuvem de terceiros aos seus aplicativos. Ao flexibilizar os aplicativos sobre em que local e em que combinação os componentes são implementados, o Amazon SWF ajuda a migrar gradualmente os componentes de datacenters privados para uma infraestrutura de nuvem pública, sem interromper a disponibilidade ou desempenho dos aplicativos.
Automatização de fluxos de trabalho que incluem tarefas humanas prolongadas (p.ex., aprovações, revisões, investigações etc.) O Amazon SWF acompanha com segurança o status das etapas de processamento executadas durante vários dias ou meses.
Construir uma camada de aplicativo além do Amazon SWF para suportar linguagens específicas de domínio para seus usuários finais. Visto que o Amazon SWF lhe oferece flexibilidade total na escolha da linguagem de programação, você pode construir intérpretes para linguagens especializadas (p.ex., XPDL) convenientemente e personalizar interfaces de usuário incluindo ferramentas de modelagem.
Obter visibilidade e trilhas de auditoria em todas as instâncias que estão sendo executadas de seus aplicativos. Você também pode incorporar funcionalidades de visibilidade oferecidas pelo Amazon SWF às suas próprias interfaces de usuário usando as APIs fornecidas pelo Amazon SWF.
Os clientes têm usado o Amazon SWF para construir aplicativos para codificação de vídeo, comércio social, fornecimento de infraestrutura, pipelines do MapReduce, gerenciamento de processamento de negócios e muitos outros casos. Para obter mais detalhes sobre os casos de uso, consulte Quais são alguns casos de uso que podem ser resolvidos com o SWF?. Para verificar como os clientes estão usando o Amazon SWF hoje, leia os estudos de caso.
P: Quais são os benefícios do Amazon SWF em comparação com as soluções internas e os produtos de fluxo de trabalho atuais?
Ao criar soluções para coordenar tarefas em um ambiente distribuído, os desenvolvedores têm que dar conta de muitas variáveis. As tarefas que direcionam etapas de processamento podem ser prolongadas, podendo falhar, terem o tempo esgotado ou precisarem ser reiniciadas. Não raro, elas concluem com taxas de transferência e latências variáveis. Acompanhar e visualizar tarefas em todos esses casos, além de desafiador, é um trabalho indiferenciado. Conforme os aplicativos e tarefas aumentam a escala, os desenvolvedores enfrentam problemas. Por exemplo, eles precisam garantir que uma tarefa foi atribuída somente uma vez e seu resultado é acompanhado de modo seguro no caso de interrupções por falhas inesperadas. Com o Amazon SWF, os desenvolvedores podem manter o foco na lógica diferenciada do aplicativo, por exemplo, como processar e coordenar tarefas.
Os produtos de fluxo de trabalho existentes em muitos casos obrigam os desenvolvedores a aprenderem linguagens especializadas, hospedarem bancos de dados caros e abandonarem o controle sobre a execução de tarefas. As linguagens especializadas tornam difícil a tarefa de expressar aplicativos complexos e não são flexíveis o bastante para realizar alterações rapidamente. Por outro lado, o Amazon SWF é um serviço baseado em nuvem que permite o uso de linguagens de programação comuns e permite aos desenvolvedores controlarem onde as tarefas são processadas. Ao adotar um modelo integrado livremente para aplicativos distribuídos, o Amazon SWF permite que as alterações sejam realizadas de modo ágil.
P: O que são operadores e administradores?
No Amazon SWF, um aplicativo é implementado por operadores e um administrador que se comunica diretamente com o serviço. Operadores são programas que interagem com o Amazon SWF para obter tarefas, processar tarefas e retornar resultados. O administrador é um programa que controla a coordenação de tarefas, por exemplo, sua ordenação, concorrência e agendamento, de acordo com a lógica do aplicativo. Os operadores e o administrador podem ser executados em uma infraestrutura de nuvem, assim como o Amazon EC2, ou em máquinas atrás de firewalls. O Amazon SWF intermedia as interações entre os operadores e o administrador. O SWF permite que o administrador tenha visualizações consistentes do progresso das tarefas e inicie novas tarefas de maneira contínua. Ao mesmo tempo, o Amazon SWF armazena tarefas, atribuindo-as aos operadores quando eles estão prontos, e monitorando seu progresso. Isso garante que a tarefa seja atribuída somente uma vez, sem duplicações. Já que o Amazon SWF mantém a durabilidade do estado do aplicativo, os operadores e administradores não precisam acompanhar o estado de execução. Podem ser executados independentemente e ter rápida escalabilidade. Veja a seção Funcionalidade da página de detalhes do Amazon SWF para saber mais sobre as etapas de construção de aplicativos com o Amazon SWF.
Você pode ter muitas execuções concomitantes no Amazon SWF. Cada execução é referida como uma execução de fluxo de trabalho ou uma execução. As execuções são identificadas com nomes exclusivos. Você usa o Amazon SWF Management Console (ou APIs de visibilidade) para visualizar suas execuções como um todo e detalhar uma execução determinada para ver os detalhes de nível de tarefa.
P: Que condições de programação o Amazon SWF oferece para gravar aplicativos?
Como outros serviços da AWS, o Amazon SWF fornece um SDK principal para as APIs de serviço da web. Além disso, o Amazon SWF oferece um SDK chamado AWS Flow Framework que permite que você desenvolva aplicativos baseados no Amazon SWF com rapidez e facilidade. O AWS Flow Framework resume os detalhes de coordenação de nível de tarefa com construções de programação conhecidas. Enquanto executa seu programa, o framework faz chamadas para o Amazon SWF, acompanha o estado de execução do programa usando o histórico de execução mantido pelo Amazon SWF, e invoca as partes relevantes do código nas horas corretas. Ao oferecer um framework de programação intuitivo para acessar o Amazon SWF, o AWS Flow Framework permite que os desenvolvedores gravem aplicativos inteiros como interações assíncronas estruturadas em um fluxo de trabalho. Para mais detalhes, consulte O que é o AWS Flow Framework?
P: Quando o Amazon SWF deve ser usado em vez do AWS Step Functions?
O AWS Step Functions é um serviço gerenciado que facilita coordenar os componentes de aplicações distribuídas e microsserviços usando fluxos de trabalho visuais. Em vez de escrever um programa administrador, é possível definir máquinas de estado no JSON. Os clientes da AWS devem considerar o uso do Step Functions para novas aplicações. Se o Step Functions não for o ideal para as suas necessidades, considere o Amazon Simple Workflow (SWF). O Amazon SWF oferece controle total sobre a orquestração lógica, mas aumenta a complexidade do desenvolvimento de aplicações. É possível escrever programas administradores na linguagem de programação de sua escolha, ou é possível usar o Flow Framework para usar construções de programação que estruturam interações assíncronas por você. A AWS continuará a disponibilizar o serviço do Amazon SWF, o Flow Framework, além de suporte para todos os clientes do Amazon SWF.
P: Qual é a diferença entre o Amazon SWF e o Amazon SQS?
O Amazon SQS e o Amazon SWF são serviços que facilitam a integração de aplicativos ou microsserviços:
O Amazon Simple Queue Service (Amazon SQS) oferece filas hospedadas confiáveis e altamente escaláveis para armazenar mensagens enquanto se deslocam entre os aplicativos ou microsserviços. O Amazon SQS permite que você transfira dados entre componentes de aplicativo distribuídos e ajuda na dissociação deles.
O Amazon Simple Workflow Service (Amazon SWF) é um serviço da web que torna fácil a coordenação de trabalhos entre componentes de aplicativos distribuídos.
Veja a seguir as diferenças principais entre o Amazon SWF e o Amazon SQS:
As ações da API Amazon SWF são orientadas por tarefas. As ações da API do Amazon SQS são orientadas por mensagens.
O Amazon SWF acompanha todas as tarefas e eventos em um aplicativo. Com o Amazon SQS é necessário implementar seu próprio acompanhamento de nível de aplicativo, especialmente se o aplicativo usa filas múltiplas.
O Amazon SWF Console e as APIs de visibilidade oferecem uma visibilidade centrada no aplicativo, que possibilita a busca por execuções, a análise de detalhes de uma execução e o gerenciamento de execuções. O Amazon SQS requer a implementação dessas funcionalidades.
O Amazon SWF oferece recursos para simplificar o desenvolvimento do aplicativo, como a passagem de tarefas entre dados, sinalização, flexibilidade na distribuição de tarefas. O Amazon SQS requer a implementação de algumas funcionalidades do nível de aplicativo.
Além de um SDK principal para chamar APIs de serviço, o Amazon SWF oferece o AWS Flow Framework, com o qual você pode facilmente gravar aplicativos distribuídos utilizando construções de programação para estruturar interações assíncronas.
Embora você possa usar o Amazon SQS para criar fluxos de trabalho básicos para coordenar sua aplicação distribuída, é possível obter essa facilidade prontamente com o Amazon SWF, juntamente com outros recursos no nível da aplicação.
Nós recomendamos testar o Amazon SQS e o Amazon SWF para determinar qual solução se encaixa melhor às suas necessidades.
P: Quais são os casos de uso que podem ser solucionados com o Amazon SWF?
O Amazon SWF tem sido aplicado em casos de uso de processamento de mídia, automação de processo de negócios, análise de dados, migração para nuvem e processamento de lotes. Alguns exemplos são:
Caso de uso nº1: 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 gerenciadas.
Com o Amazon SWF: todo o aplicativo é construído como um fluxo de trabalho onde cada arquivo de vídeo é tratado como uma execução de fluxo de trabalho. Tarefas que são processadas por diferentes operadores: Carregar um bloco no Amazon S3, descarregar um bloco do Amazon S3 para uma instância do Amazon EC2 e codificá-lo, armazenar um bloco de volta no Amazon S3, combinar vários blocos em um único arquivo, carregar um arquivo completo no Amazon S3. O administrador inicia tarefas concomitantes para explorar o paralelismo no caso de uso. Ele inicia uma tarefa para codificar um bloco carregado sem esperar pelo carregamento de outros blocos. Se uma tarefa para um bloco falha, o administrador a executa novamente somente para aquele bloco. O estado do aplicativo mantida pelo Amazon SWF ajuda o administrador a controlar o fluxo de trabalho. Por exemplo, o administrador o utiliza para detectar quando todos os blocos foram codificados e para extrair suas localizações no Amazon S3, para que eles possam ser combinados. O progresso da execução é continuamente acompanhado no Amazon SWF Management Console. Se houver falhas, as tarefas específicas que falharam são identificadas e usadas para localizar com precisão os blocos com falha.
Caso de uso nº2: processar 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.
Com o Amazon SWF: o caso de uso acima é implementado para um lote único. Um fluxo de trabalho BatchProcess gerencia o processamento para um lote único. Ele possui operadores que extraem os dados, transformando-os e enviando-os via Amazon Mechanical Turk. O fluxo de trabalho BachProcess envia os HITs aceitáveis e aqueles com falhas. É usado como entrada para três outros fluxos de trabalho: MTurkManager, UpdateCatalogWorkflow e RerunProducts. O fluxo de trabalho MTurkManager faz pagamentos para HITs aceitáveis, responde a operadores humanos que produziram HITs com falha e atualiza seu próprio banco de dados para acompanhar a qualidade dos resultados. O UpdateCatalogWorkflow atualiza o catálogo principal baseado em HITs aceitáveis. O fluxo de trabalho RerunProducts espera até que haja um lote de produtos grande o bastante com HITs com falhas. Então, ele cria um lote e o envia de volta ao fluxo de trabalho BatchProcess. Todo o processamento de catálogo, de ponta a ponta, é desempenhado pelo fluxo de trabalho CleanupCatalog que inicia execuções de filhos dos fluxos de trabalho acima. O sistema de fluxos de tabalho bem definidos permite que este caso de uso seja arquitetado, verificado e executado sistematicamente por catálogos com milhões de produtos.
Caso de uso nº3: migração de componentes do datacenter 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.
Com o Amazon SWF: aplicativos baseados no Amazon SWF podem combinar operadores que envolvem 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. Após um teste bem sucedido, os operadores no datacenter vão sendo suspendidos e aqueles na nuvem têm a sua escala aumentada, desta maneira permitindo que os operadores sejam eventualmente executados por completo na nuvem. Este processo pode ser repetido para todos os outros operadores no datacenter, de modo que o aplicativo seja movido para a nuvem por completo. 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.
Veja nossos estudos de caso para conhecer mais sistemas e aplicativos emocionantes que desenvolvedores e empresas estão construindo dom o Amazon SWF.
P: A Amazon utiliza o Amazon SWF para seus próprios aplicativos?
Sim. Os desenvolvedores da Amazon usam o Amazon SWF para uma grande variedade de projetos e executam milhões de execuções de fluxo de trabalho todos os dias. Seus casos de uso incluem importantes processos de negócios por trás dos websites Amazon.com e da AWS, implementações de vários serviços da web da AWS e suas APIs, análises do MapReduce para tomadas de decisão operacionais e gerenciamento de conteúdo voltado ao usuário como páginas da web, vídeos e livros do Kindle.
P: Como posso começar a usar o Amazon SWF?
Para cadastrar-se no Amazon SWF, acesse a página de detalhes do Amazon SWF e clique no botão "Cadastre-se agora". Caso não tenha uma conta da Amazon Web Services, você será convidado a criar uma. Após se cadastrar, você poderá executar um guia passo a passo sobre o Console de Gerenciamento da AWS, que apresenta as etapas da execução de um aplicativo simples de conversão de imagem com o Amazon SWF. Você também pode descarregar as amostras do AWS Flow Framework para saber mais sobre os vários recursos do serviço. Para começar a utilizar o Amazon SWF nos seus aplicativos, consulte a documentação do Amazon SWF.
P: Há exemplos de fluxos de trabalho que eu possa usar para testar o Amazon SWF?
Sim. Quando começar a usar o Amazon SWF, você poderá executar um guia passo a passo sobre o Console de Gerenciamento da AWS, que apresenta como registrar tipos e domínios, implantar operadores e administradores e iniciar execuções de fluxo de trabalho. Você pode descarregar o código para operadores e administradores usados nesse guia passo a passo, executá-los na sua infraestrutura e ainda modificá-los para criar seus próprios aplicativos. Também é possível descarregar os exemplos do AWS Flow Framework, que ilustram o uso do Amazon SWF para vários casos de uso, como processamento de dados distribuídos, trabalhos Cron e implantação da pilha de aplicativos. Saiba mais sobre os recursos do Amazon SWF e como usar o AWS Flow Framework para criar seus aplicativos distribuídos, consultando o código de origem incluído.
P: Quais são as diferentes maneiras de acessar o SWF?
Você pode acessar o SWF das seguintes formas:
AWS SDK para Java, Ruby, .NET e PHP
AWS Flow Framework para Java (Incluído no AWS SDK para Java)
APIs de serviço da web do Amazon SWF
P: O que é o registro?
Registro é uma etapa única que você realiza para cada tipo diferente de fluxos de trabalho e atividades. Você pode registrar-se de maneira programática ou por meio do Amazon SWF Management Console. Durante o registro, você proporciona IDs exclusivas para cada tipo de atividade e de fluxo de trabalho. Você também pode fornecer informações padrão que são usadas enquanto um fluxo de trabalho é executado, como valores de tempo de espera e parâmetros de distribuição de tarefas.
P: O que são domínios?
No SWF, você define contêineres lógicos chamados domínios para seus recursos de aplicativos. Os domínios só podem ser criados no nível da conta da AWS e não podem ser aninhados. Um domínio pode ter qualquer nome de usuário definido. Cada recurso de aplicativo, como um tipo de fluxo de trabalho, um tipo de atividade ou uma execução, pertence exatamente a um domínio. Durante o registro, você especifica o domínio no qual um tipo de atividade ou de fluxo de trabalho deve ser registrado. Quando inicia uma execução, ela é automaticamente criada no mesmo domínio do seu tipo de fluxo de trabalho. A individualidade dos identificadores de recursos (p.ex., IDs de tipo e ID de execução) é restrita a um domínio, ou seja, os identificadores podem ser reutilizados em diferentes domínios.
P: Como posso gerenciar meus recursos de aplicativos em diferentes ambientes e agrupamentos?
Você pode usar domínios para organizar seus recursos de aplicativo, de modo que eles sejam mais fáceis de gerenciar e não afetem inadvertidamente cada um deles. Por exemplo, pode criar domínios diferentes para seu desenvolvimento, teste e ambientes de produção, além de criar os recursos apropriados em cada um deles. Ainda que você registre o mesmo tipo de fluxo de trabalho em cada um desses domínios, ele será tratado como um recurso separado em cada domínio. Você pode alterar suas configurações no domínio de desenvolvimento ou gerenciar execuções no domínio de teste, sem afetar os recursos correspondentes no domínio de produção.
P: Como um administrador coordena um fluxo de trabalho no Amazon SWF?
O administrador pode ser visualizado como um tipo especial de operador. Assim como os operadores, ele pode ser gravado em qualquer linguagem e solicita tarefas ao Amazon SWF. No entanto, ele gerencia tarefas especiais chamadas de tarefas de administração. O Amazon SWF distribui tarefas de administração sempre que uma execução de fluxo de trabalho tem transições como conclusão ou tempo esgotado de um tarefa de atividade. Uma tarefa de administração contém informações nos estados de entrada, saída e atual de tarefas de atividades iniciadas previamente. Seu administrador utiliza esses dados para decidir as próximas etapas, incluindo qualquer tarefa de atividade nova, e as retorna para o Amazon SWF. O Amazon SWF ordena essas decisões uma a uma, iniciando novas tarefas de atividade onde monitorá-las e atribuí-las. Ao responder às tarefas de administração de maneira contínua, o administrador controla a ordem, o tempo e a simultaneidade de tarefas de atividades e consequentemente a execução de etapas de processamento no aplicativo. O SWF atribui a primeira tarefa de administração quando uma execução se inicia. A partir daí, o Amazon SWF ordena as decisões feitas por seu administrador para direcionar sua execução. A execução continua até que seu administrador decida que ela seja concluída.
Para ajudar o administrador a realizar decisões, o SWF mantém uma gravação contínua dos detalhes de todas as tarefas em uma execução. Essa gravação é chamada de histórico e é exclusiva de cada execução. Um novo histórico é iniciado quando uma execução começa. Neste momento, o histórico contém informações iniciais como dados de entrada da execução. Depois, conforme os operadores processam tarefas de atividades, o Amazon SWF atualiza o histórico com seus dados de entrada e saída, e seu último estado. Quando um administrador obtém uma tarefa de administração, pode inspecionar o histórico de execução. O Amazon SWF garante que o histórico reflete com exatidão o estado de execução no momento em que a tarefa de administração é atribuída. Dessa forma, o administrador pode usar o histórico para determinar o que ocorreu em uma execução e decidir as próximas etapas adotadas.
P: Como posso garantir que o operador ou o administrador só tenham tarefas que eles entendam?
Você pode usar listas de tarefas para determinar como as tarefas são atribuídas. Listas de tarefas são recursos do Amazon SWF aos quais são adicionadas tarefas iniciadas e a partir dos quais são solicitadas. Listas de tarefas são identificadas por nomes de usuários definidos. Uma lista de tarefas pode ter tarefas de diferentes tipos de IDs, mas todas elas precisam ser tarefas de atividade ou de administração. Durante o registro, você especifica uma lista de tarefas padrão para cada tipo de atividade e de fluxo de trabalho. O Amazon SWF também possibilita que você crie listas de tarefas durante a execução. Você cria uma lista de tarefa simplesmente nomeando a lista e começando a usá-la. As listas de tarefas são usadas da seguinte forma:
Enquanto inicia uma tarefa de atividade, um administrador pode adicioná-la à lista de tarefa específica ou solicitar ao Amazon SWF que a adicione à lista de tarefas padrão do seu tipo de atividade.
Enquanto inicia uma execução, você pode solicitar que o Amazon SWF adicione todas as suas tarefas de administração a uma lista de tarefas específica ou à lista de tarefas padrão do tipo de fluxo de trabalho.
Enquanto solicita tarefas, administradores e operadores especificam de qual lista de tarefas querem recebê-las. Se uma tarefa está disponível na lista, o SWF a envia na resposta e também ibclui sua ID.
Tomando como base o que foi dito acima, você controla à qual lista de tarefa uma tarefa é adicionada e quem solicita tarefas de cada lista. Deste modo, é possível ter certeza de que os operadores e administradores somente obtêm as tarefas que eles entendem.
P: O que é o AWS Flow Framework? Como ele me ajuda na coordenação do meu fluxo de trabalho?
O AWS Flow Framework é uma estrutura de programação que permite que você desenvolva aplicativos baseados no Amazon SWF de maneira rápida e fácil. Ele resume os detalhes de interação assíncrona e de coordenação de nível de tarefas, com construções de programação simples. Coordenar fluxos de trabalho no Amazon SWF envolve iniciar ações remotas que levam tempos variáveis para serem concluídas (p.ex., tarefas de atividades) e implementar as dependências entre elas de maneira correta.
O AWS Flow Framework torna conveniente espressar as duas facetas de coordenar por meio de conceitos de programação conhecidos. Por exemplo, iniciar uma tarefa de atividade é tão simples quanto fazer uma chamada para um método. O AWS Flow Framework converte automaticamente a chamada em uma decisão para iniciar a tarefa de atividade e permite que o Amazon SWF atribua a tarefa a um operador, monitorando-a e fazendo um relatório quando ela estiver concluída. A estrutura disponibiliza o resultado da tarefa, incluindo seus dados de saída, no código, conforme os valores de retorno de chamada do método. Para expressar a dependência de uma tarefa, basta usar os valores de retorno no seu código, conforme faria para chamadas de método típicas. O tempo de execução da estrutura aguardará automaticamente a conclusão da tarefa e continuará a execução somente quando os resultados estiverem disponíveis. Enquanto isso, o tempo de execução da estrutura recebe tarefas de decisão e operadores do Amazon SWF, invoca os métodos relevantes no seu programa nos momentos corretos e formula decisões para serem enviadas de volta ao Amazon SWF. Ao oferecer acesso ao Amazon SWF por meio de uma estrutura de programação intuitiva, o AWS Flow Framework torna possível incorporar facilmente a programação orientada a eventos e assíncrona ao desenvolvimento desses aplicativos.
P: Como operadores e administradores se comunicam com o Amazon SWF? O protocolo de pesquisa faz uso intenso de recursos?
Protocolos baseados em consultas geralmente exigem que os desenvolvedores localizem uma frequência de chamada seletiva adequada. Se os desenvolvedores fazem consultas com muita frequência, é possível que muitas dessas consultas sejam retornadas com resultados vazios. Isso leva a uma situação na qual muitos dos recursos de aplicativos e de rede são consumidos em chamadas seletivas sem nenhum resultado significativo para orientar o envio da execução. Se os desenvolvedores não fazem consultas com frequência suficiente, as mensagens podem ser retidas por um aumento prolongado de latências do aplicativo.
Para superar as ineficiências inerentes às chamadas seletivas, o Amazon SWF fornece chamadas seletivas longas. Chamadas seletivas longas reduzem significativamente o número de consultas que retornam sem nenhuma tarefa. Quando operadores e administradores realizam consultas ao Amazon SWF para tarefas, a conexão é retida por um minuto se nenhuma tarefa estiver disponível. Se uma tarefa torna-se disponível durante um período, ela é retornada em resposta à solicitação de consulta longa. Ao reter a conexão por um período de tempo, consultas adicionais que também retornariam vazias durante aquele período são evitadas. Com chamadas seletivas longas, seus aplicativos têm vantagens de controle de fluxo e segurança de chamadas seletivas, sem sacrificar os benefícios de eficiência e latência oferecidos por serviços da web baseados em envio push.
P: Posso usar um serviço da web atual como um operador?
Operadores usam solicitações HTTP GET padrão para obterem tarefas da Amazon SWF e retornarem os resultados. Para usar um serviço da web existente como um operador, você pode gravar um wrapper que obtém tarefas do Amazon SWF, invocar suas APIs do serviço da web conforme apropriado e retornar os resultados ao Amazon SWF. No wrapper você converte dados de entrada fornecidos em uma tarefa em parâmetros para sua API de serviço da web. De modo similar, também converte os dados de saída das APIs de serviço da web em resultados para a tarefa e os retorna para o Amazon SWF.
P: O Amazon SWF restringe o meu uso a linguagens de programação específicas?
Não, você pode usar qualquer linguagem de programação para gravar um operador ou um administrador, do mesmo modo que pode comunicar-se com o Amazon SWF usando APIs de serviço da web. Atualmente, o AWS SDK está disponível em Java, .NET, PHP e Ruby O AWS SDK para Java inclui o AWS Flow Framework.
P: Eu gostaria de assegurar que há somente uma execução para cada ativação do meu processo de negócios (p:ex. uma transação, um envio ou uma atribuição). Como posso fazer isso?
Quando inicia novas execuções de fluxo de trabalho, você fornece uma ID para aquela execução de fluxo de trabalho. Isso permite que associe uma execução com uma entidade ou ação de negócio (p.ex., ID do cliente, nome do arquivo, número de série). O Amazon SWF garante que uma ID de execução seja exclusiva enquanto é executada. Durante esse momento, uma tentativa de iniciar outra execução como a mesma ID vai falhar. Isso torna conveniente para você satisfazer suas necessidades de negócios onde nada além de uma execução pode ser executada para uma dada ação de negócio, assim como uma transação, envio ou atribuição. Considere um fluxo de trabalho que registra um novo usuário em um website. Quando um usuário clica no botão de envio, o endereço de e-mail exclusivo do usuário só pode ser usado para nomear a execução. Se a execução já existe, a chamada para iniciar a execução falhará. Nenhum código adicional é necessário para prevenir conflitos consequentes quando o usuário clica mais de uma vez no botão enquanto o registro está em andamento.
Quando a execução de fluxo de trabalho está concluída (bem sucedida ou não), você pode iniciar outra execução de fluxo de trabalho com a mesma ID. Isso faz com que uma nova execução do fluxo de trabalho seja executada com a mesma ID de execução, mas uma ID de processamento diferente. A ID de processamento é gerada pelo Amazon SWF e várias execuções que têm a mesma ID de execução podem ser diferenciadas pela ID de processamento. Ao permitir que reutilize IDs de execução dessa forma, o Amazon SWF possibilita que você trate casos de uso como novas tentativas. Por exemplo, no exemplo de registro de usuário anterior, considera-se que a execução de fluxo de trabalho falhou durante a criação de um registro de banco de dados do usuário. Você pode iniciar uma execução de fluxo de trabalho novamente, com a mesma ID de execução (endereço de e-mail do usuário) e não tem que criar uma nova ID para uma nova tentativa de registro.
P: Como o Amazon SWF ajuda na escalabilidade de meus aplicativos?
O Amazon SWF permite que você aumente ou diminua a escala de seus aplicativos, já que lhe fornece controle total sobre os números de operadores que executa para cada tipo de atividade e número de instâncias que processa para um administrador. Com o aumento do número de instâncias de operadores e administradores, você aumenta os recursos de computação alocados para as etapas de processo correspondente e, com isso, a taxa de transferência para essas etapas. Para uma escala automática, você pode utilizar dados de tempo de execução fornecidos pelo Amazon SWF por meio das APIs. Por exemplo, o Amazon SWF fornece o número de tarefas em uma lista de tarefas. Já que um aumento nesse número indica que os operadores não estão prosseguindo com o carregamento, você pode acelerar novos operadores automaticamente, sempre que o backlog de tarefas ultrapasse um limiar.
P: Eu executo um grande número de execuções de aplicativos de missão crítica. Como faço para escalá-los e monitorá-los?
Além do Management Console, o Amazon SWF oferece um amplo conjunto de APIs de visibilidade. É possível usar essas APIs para obter informações de tempo de execução para monitorar todas as suas execuções e escalar automaticamente suas execuções dependendo do carregamento. Você pode conseguir dados detalhados de cada tipo de fluxo de trabalho, assim como a contagem de execuções abertas e fechadas em um intervalos de tempo específicos. Usando as APIs de visibilidade, você também pode construir seus próprios aplicativos de monitoramento personalizados.
P: Possuo um grande número de execuções sendo realizadas ao mesmo tempo, mas a maioria delas falha ou para de executar. Como faço para detectar e resolver essas execuções problemáticas?
O Amazon SWF lhe possibilita buscar por execuções por meio do Management Console e das APIs de visibilidade. Você pode fazer a busca usando vários critérios, incluindo os intervalos de tempo durante os quais as execuções iniciaram ou foram concluídas, estado atual (ou seja, aberto ou fechado) e modos de falha padrão (p.ex., tempo de espera, concluído). Para agrupar execuções de fluxo de trabalho, você pode usar até cinco tags para associar texto personalizado com execuções de fluxo de trabalho quando as inicia. No AWS Management Console, você pode usar tags quando procurar por execuções de fluxo de trabalho.
Para achar execuções que podem estar estagnadas, você pode iniciar com a busca baseada no tempo para concentrar-se em execuções que estão em processamento durante mais tempo do que o esperado. Depois, pode inspecioná-las para ver os detalhes de nível de tarefa e determinar se certas tarefas têm sido executadas durante muito tempo ou falharam, ou se o administrador simplesmente não iniciou tarefas. Isso pode lhe ajudar a detalhar o problema em um nível de tarefa.
P: Tenho um tipo de atividade que pode ser usado em vários aplicativos. Posso compartilhá-lo com esses aplicativos?
Sim. Muitos aplicativos podem compartilhar um determinado tipo de atividade fornecido, desde que os aplicativos e a atividade estejam registrados no mesmo domínio. Para implementar esse recurso, você pode ter diferentes administradores iniciando tarefas para ele e adicioná-lo à lista de tarefas que os operadores consultaram para aquela atividade. Os operadores daquele tipo de atividade obterão tarefas de atividade de todos os aplicativos diferentes. Se deseja dizer de qual aplicativo se origina uma tarefa de atividade ou se quer implementar diferentes conjuntos de operadores para aplicativos diferentes, você pode usar várias listas de tarefas. Consulte Como posso garantir que o operador ou o administrador só tenham tarefas que eles entendam?
P: Posso usar o AWS Identity and Access Management (IAM) para gerenciar o acesso ao Amazon SWF?
Sim. Você pode conceder permissões de usuário do IAM para acesso ao Amazon SWF. Os usuários do IAM somente podem acessar os domínios e APIs do SWF que você especificar.
P: Posso executar meus operadores após um firewall?
Sim. Operadores usam solicitações HTTP GET padrão para obterem tarefas do Amazon SWF e retornarem os resultados computados. Já que os operadores sempre iniciam solicitações ao Amazon SWF, você não precisa configurar seu firewall para permitir a entrada de solicitações.
P: Não é um risco de segurança expor minha lógica de negócios como operadores e administradores?
Operadores usam solicitações HTTP GET padrão para obterem tarefas do Amazon SWF e retornarem os resultados computados. Sendo assim, não é preciso expor nenhum endpoint para seus operadores. Além disso, o Amazon SWF somente atribui tarefas a operadores quando o administrador inicia essas tarefas. Visto que você grava o administrador, você tem o controle total sobre quando e como as tarefas são iniciadas, incluindo os dados de entrada que são enviados com elas aos operadores.
P: Como o Amazon SWF pode ajudar na coordenação de tarefas de forma segura no meu aplicativo?
O Amazon SWF fornece garantias úteis com relação à atribuição de tarefas. Ele garante que uma tarefa nunca seja duplicada e seja atribuída somente uma vez. Dessa forma, ainda que você tenha vários operadores para um tipo de atividade específico (ou número de instâncias de um administrador), o Amazon SWF atribuirá uma tarefa específica para somente um operador (ou uma instância de administrador). Além disso, o Amazon SWF mantém apenas uma tarefa de administração em curso por vez, para uma execução de fluxo de trabalho. Desse modo, você pode executar várias instâncias de administrador sem se preocupar com duas instâncias operando em uma mesma execução simultaneamente. Esses recursos permitem que coordene seu fluxo de trabalho sem se preocupar com duplicações, perdas ou conflitos de tarefas.
P: Quantos tipos de fluxo de trabalho, tipos de atividades e domínios posso registrar com o Amazon SWF?
Você pode ter no máximo 10.000 tipos de fluxos de trabalho e de atividades (no total) que são registrados ou reprovados em cada domínio. Você pode ter no máximo 100 domínios do Amazon SWF (incluindo domínios registrados e reprovados) na sua conta da AWS. Caso você acredite que excederá os limites acima, utilize este formulário para falar com a equipe do Amazon SWF e discutir sobre o seu cenário, solicitando limites maiores.
P: Existem limites para o número de execuções de fluxo de trabalho que eu posso executar simultaneamente?
Em um determinado momento, você pode ter no máximo 100.000 execuções abertas em um domínio. Não há nenhum outro limite no número cumulativo de execuções que você executa ou no número de execuções retidas pelo Amazon SWF. Caso ache que irá exceder os limites acima, utilize este formulário para contatar a equipe do Amazon SWF e discutir seu cenário, solicitando limites maiores.
P: Durante quanto tempo as execuções de fluxo de trabalho podem ser executadas?
Cada execução de fluxo de trabalho pode ser executada por no máximo 1 ano. Cada histórico de execução de fluxo de trabalho pode ser aumentada para até 25.000 eventos. Se seu caso de uso exige que ultrapasse esses limites, é possível usar recursos fornecidos pelo Amazon SWF para continuar a efetuar execuções e estruturar seus aplicativos usando execuções de fluxo de trabalho de filhos.
P: O que ocorre se a execução do meu fluxo de trabalho estiver inativa por um período de tempo extenso?
O Amazon SWF não processa nenhuma ação especial se uma execução de fluxo de trabalho estiver ociosa por um período de tempo extenso. Execuções ociosas estão sujeitas a tempos de espera que você configurar. Por exemplo, se definiu que a duração máxima para uma execução é de 1 dia, uma execução ociosa terá esgotado o tempo se exceder esse limite de 1 dia. Execuções ociosas também estão sujeitas ao limite do Amazon SWF de quanto tempo uma execução pode ser processada (1 ano).
P: Quanto tempo um operador leva para processar uma tarefa?
O Amazon SWF não impõe um limite específico de quanto tempo um operador pode levar para processar uma tarefa. Ele aplica o tempo de espera especificado por você como o de duração máxima para uma tarefa de atividade. Observe que já que o Amazon SWF limita um execução para ser processada no máximo durante 1 ano, o operador não pode levar mais que isso ao executar uma tarefa.
P: Durante quanto tempo o Amazon SWF mantêm uma tarefa antes de um operador solicitá-la?
O Amazon SWF não impõe um limite específico de quanto tempo uma tarefa é mantida antes de que o operador faça uma consulta para ela. Entretanto, ao registrar um tipo de atividade, você pode definir um tempo de espera padrão para determinar quanto tempo o Amazon SWF aguardará para tarefas de atividade daquele tipo. Você também pode especificar esse tempo de espera e substituir o tempo de espera padrão por meio do código do administrador, quando programar uma tarefa de atividade. Visto que o Amazon SWF limita que o tempo que uma execução de fluxo de trabalho pode ser executada é de no máximo 1 ano, se um tempo de espera não for especificado a tarefa não poderá ser mantida durante mais de 1 ano.
P: Posso agendar várias tarefas de atividade emitindo uma decisão?
Sim, você pode programar até 100 tarefas de atividade em uma decisão e também atribuir várias decisões, uma depois da outra.
P: Quantas tarefas, sinais e marcadores de operadores eu posso ter em uma execução de fluxo de trabalho e entre execuções?
Não há limite no número total de tarefas de atividade, sinais e temporizadores usados durante uma execução de fluxo de trabalho. Contudo, atualmente você só pode ter o máximo de 1.000 tarefas de atividade abertas por execução de fluxo de trabalho. Isso inclui tarefas de atividades que foram iniciadas e tarefas de atividade que estão sendo processadas por operadores. De modo semelhante, é possível ter até 1.000 temporizadores abertos por execução de fluxo de trabalho, e até 1.000 execuções de filhos aberta por execução de fluxo de trabalho.
P: Que quantidade de dados posso transferir em uma execução de fluxo de trabalho?
Não há limite na quantidade total de dados transferidos durante uma execução de fluxo de trabalho. No entanto, as APIs do Amazon SWF impõem um limite máximo específico aos parâmetros que são usados para passar dados em uma execução. Por exemplo, os dados de entrada que são passados em uma tarefa de atividade e os dados de entrada que são enviados com um sinal podem cada um ter no máximo 32.000 caracteres.
P: O Amazon SWF retém execuções concluídas? Se retém, por quanto tempo?
O Amazon SWF retém o histórico de uma execução concluída por qualquer número de dias que você especificar, com um máximo de 90 dias (ou seja, aproximadamente 3 meses). Durante a retenção, você pode acessar o histórico e buscar por execuções de modo programático ou por meio do console.
P: Quando as chamadas de API são suspensas?
Diante de picos raros, você pode ser suspenso caso faça um grande número de chamadas de APIs em um curto espaço de tempo. Caso ache que está sendo suspenso com frequência ou que seu aplicativo encontra picos frequentes, utilize este formulário para contatar a equipe do Amazon SWF para discutir seu cenário de uso e solicitar configurações de suspensão diferentes para sua conta.
P: Em quais regiões o Amazon SWF está disponível?
O Amazon SWF (SWF) está disponível nas seguintes regiões: Leste dos EUA (Norte da Virgínia), Oeste dos EUA (Oregon), Oeste dos EUA (Norte da Califórnia), UE (Irlanda), UE (Frankfurt), Ásia-Pacífico (Cingapura), Ásia-Pacífico (Tóquio), Ásia-Pacífico (Sydney), América do Sul (São Paulo) e AWS GovCloud (EUA).
P: O Amazon SWF está disponível em zonas de disponibilidade?
Sim, o Amazon SWF gerencia seu histórico de execuções de fluxo de trabalho e outros detalhes de seus fluxos de trabalho em três zonas de disponibilidade. Assim, seus aplicativos podem continuar a contar com o Amazon SWF, mesmo se houver falhas em uma zona de disponibilidade.
P: O que são os pontos de acesso ao serviço Amazon SWF?
Acesse a página de referência geral da AWS para obter mais informações sobre os endpoints de acesso.