Visão geral

P: O que é o AWS Step Functions?

O AWS Step Functions é um serviço gerenciado que facilita a coordenação de componentes de aplicações distribuídas e microsserviços usando fluxos de trabalho visuais. A criação de aplicativos a partir de componentes individuais, cada um deles executando uma função diferente, permite que você dimensione facilmente e altere rapidamente os aplicativos. O Step Functions é uma maneira confiável de coordenar componentes e percorrer as funções de seu aplicativo. O Step Functions fornece um console gráfico para organizar e visualizar os componentes do seu aplicativo como uma série de etapas. Isso simplifica a criação e a execução de aplicativos com várias etapas. O Step Functions aciona e rastreia automaticamente todas as etapas e tenta executar novamente etapas que apresentaram falha para que o aplicativo execute na ordem e da forma esperada. O Step Functions registra em log o estado de cada etapa. Quando ocorre algum erro, você pode diagnosticar e depurar rapidamente os problemas. Você pode alterar e adicionar etapas sem escrever código, facilitando a evolução da aplicação e agilizando a inovação.

P: Quais são os benefícios de projetar meu aplicativo usando a orquestração?

A divisão de uma aplicação em componentes de serviços (ou etapas) garante que a falha de um componente não cause a indisponibilidade de todo o sistema, que seja possível alterar a escala de cada componente de forma independente dos demais e que os componentes possam ser atualizados sem necessidade de nova implantação de todo o sistema após cada alteração. A coordenação de componentes de serviço envolve o gerenciamento das dependências de execução, da programação e da colaboração de acordo com o fluxo lógico do aplicativo. Nesses aplicativos, os desenvolvedores podem usar a orquestração de serviços com essa finalidade e também para processar falhas.

P: Quais são alguns casos de uso comuns do AWS Step Functions?

O AWS Step Functions é útil para qualquer problema computacional ou processo de negócios que possa ser subdividido em uma série de etapas. Também é útil para criar fluxos de trabalho de ponta a ponta para gerenciar tarefas com interdependências. Entre os casos de uso comuns, estão:

  • Processamento de dados: consolide dados de vários bancos de dados em relatórios unificados, refine e reduza grandes conjuntos de dados em formatos úteis ou coordene fluxos de trabalho de análise de múltiplas etapas e de machine learning
  • DevOps e automação de TI: crie ferramentas para integração contínua e implantação contínua ou crie aplicativos orientados a eventos que respondam automaticamente a mudanças na infraestrutura
  • Comércio eletrônico: automatize processos de negócios de missão crítica, como atendimento de pedidos e controle de inventário.
  • Aplicações web: implemente processos robustos de registro de usuários e autenticação de login.

Para obter mais detalhes, explore os casos de uso e os depoimentos de clientes do AWS Step Functions.

P: Como funciona o AWS Step Functions?

Usando o AWS Step Functions, você define máquinas de estado que descrevem seu fluxo de trabalho como uma série de etapas, seus relacionamentos e suas entradas e saídas. Máquinas de estado contêm um número de estados, cada um dos quais representa uma etapa individual em um diagrama de fluxo de trabalho. Os estados podem realizar trabalho, fazer escolhas, passar parâmetros, iniciar a execução paralela, gerenciar tempos limite ou encerrar seu fluxo de trabalho com êxito ou falha. O console visual representa graficamente cada estado na ordem de execução de forma automática, o que facilita o projeto de aplicações com várias etapas. O console destaca o status de cada etapa em tempo real e oferece um histórico detalhado de cada execução. Para obter mais informações, consulte Como funciona as funções de etapa no Guia do desenvolvedor do AWS Step Functions.

P: Como o AWS Step Functions conecta aos meus recursos?

Você pode configurar suas máquinas de estado para executar o trabalho usando tarefas de atividade e tarefas de serviço. Tarefas de atividade permitem atribuir uma etapa específica em seu fluxo de trabalho ao código em execução em outro local (conhecido como trabalhador de atividade). Um trabalhador de atividade pode ser qualquer aplicativo que possa fazer uma conexão HTTP, hospedada em qualquer lugar. Por exemplo, os operadores de atividade podem ser executados em uma instância do Amazon EC2, em um dispositivo móvel ou em um servidor local. As pesquisas sobre o trabalhador da atividade do Step Functions para o trabalho, pega qualquer entrada do Step Functions, executa o trabalho usando seu código e retorna resultados. Como os trabalhadores da atividade solicitam trabalho, é fácil usar os funcionários implantados atrás de um firewall.

Tarefas de serviço permitem conectar uma etapa em seu fluxo de trabalho a um serviço da AWS compatível. O Step Functions envia solicitações para outros serviços para que possam executar ações do seu fluxo de trabalho, aguarda a conclusão da tarefa de serviço e, em seguida, continua na próxima etapa.

Uma máquina de estado do AWS Step Functions pode conter combinações de tarefas de atividade e tarefas de serviço. Os aplicativos do AWS Step Functions também podem combinar trabalhadores de atividades em execução em um datacenter com tarefas de serviço executadas na nuvem. Os funcionários no datacenter continuam a rodar normalmente, juntamente com todas as tarefas de serviço baseadas em nuvem.

P: Como faço para começar a usar o AWS Step Functions?

Há várias maneiras de começar a usar o AWS Step Functions:

P: Qual a linguagem usada pelo AWS Step Functions?

As máquinas de estado do AWS Step Functions são definidas em JSON usando o método declarativo Amazon States Language. Para criar um trabalhador de atividade, você pode usar qualquer linguagem de programação, desde que possa se comunicar com as funções de etapa da AWS usando APIs de serviço da web. Por conveniência, você pode usar um SDK da AWS no idioma de sua escolha. O AWS Lambda suporta código escrito em Node.js (JavaScript), Python, Golang (Go) e C # (usando o tempo de execução do .NET Core e outros idiomas). Para mais informações sobre o modelo de programação Lambda, consulte o Guia do desenvolvedor do AWS Lambda

Comparações

P: Quando devo usar o AWS Step Functions vs. Amazon SQS?

Você deve considerar o AWS Step Functions quando precisar coordenar os componentes de serviço no desenvolvimento de aplicativos altamente escaláveis e auditáveis. Você deve considerar o Amazon Simple Queue Service (Amazon SQS) quando precisa de uma fila hospedada confiável e altamente escalável para enviar, armazenar e receber mensagens entre serviços. O Step Functions 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 console do Step Functions e as APIs de visibilidade fornecem uma visão centrada no aplicativo que permite pesquisar execuções, detalhar os detalhes de uma execução e administrar execuções. O Amazon SQS requer a implementação dessas funcionalidades. O Step Functions oferece diversos recursos para facilitar o desenvolvimento de aplicações, como a passagem de dados entre tarefas e flexibilidade na sua distribuição. O Amazon SQS requer a implementação de algumas funcionalidades do nível de aplicativo. Embora você possa usar o Amazon SQS para criar fluxos de trabalho básicos para coordenar seu aplicativo distribuído, você pode obter esse recurso pronto para uso com o Step Functions, junto com outros recursos no nível do aplicativo.

P: Quando devo usar o AWS Step Functions vs. Amazon Simple Workflow Service (SWF)?

Você deve considerar o uso do AWS Step Functions para todos os novos aplicativos, pois ele oferece uma abordagem mais produtiva e ágil para a coordenação de componentes de aplicação usando fluxos de trabalho visuais. Se você precisar de sinais externos para intervir em seus processos, ou você gostaria de lançar processos filhos que retornam um resultado para um pai, então você deve considerar o Amazon Simple Workflow Service (Amazon SWF). Com o Amazon SWF, em vez de gravar máquinas de estado em JSON declarativo, você escreve um programa de decisão para separar as etapas de atividade das etapas de decisão. Isso fornece controle total sobre sua lógica de orquestração, mas aumenta a complexidade do desenvolvimento de aplicativos. Você pode escrever programas de decisão na linguagem de programação de sua escolha, ou você pode usar o framework Flow para usar construções de programação que estruturam interações assíncronas para você. 

Integração

P: Como o AWS Step Functions funciona com outros serviços da AWS?

Os fluxos de trabalho que você cria com as funções de etapa da AWS podem se conectar e coordenar outros serviços da AWS usando tarefas de serviço. Por exemplo, é possível:

  • Invocar uma função do AWS Lambda
  • Executar uma tarefa do Amazon Elastic Container Service ou AWS Fargate
  • Obter um item existente de uma tabela do Amazon DynamoDB ou colocar um novo item em uma tabela do DynamoDB
  • Enviar um trabalho do AWS Batch e espere que ele seja concluído
  • Publicar uma mensagem em um tópico do Amazon SNS
  • Enviar uma mensagem para uma fila do Amazon SQS
  • Iniciar uma execução de trabalho da AWS Glue
  • Criar uma tarefa do Amazon SageMaker para treinar um modelo de machine learning ou transformar um conjunto de dados em lote

Para saber mais sobre como usar ao Step Functions para se conectar a outros serviços da AWS, consulte o Guia do desenvolvedor do Step Functions. Você também pode criar tarefas em suas máquinas de estado que executam aplicativos, consulte as Perguntas frequentes na seção Visão geral. Como o AWS Step Functions se conecta aos meus recursos?

P: Como o AWS Step Functions funciona com o Amazon API Gateway?

Você pode associar suas APIs de funções de etapa ao Amazon API Gateway para que essas APIs invoquem suas máquinas de estado quando uma solicitação HTTPS for enviada para um método de API definido por você. Você pode usar uma API do Amazon API Gateway para iniciar máquinas de estado do Step Functions que coordenam os componentes de um aplicativo de backend distribuído e integram tarefas de atividades humanas nas etapas de seu aplicativo, como solicitações e respostas de aprovação. Você também pode fazer chamadas assíncronas sem servidor para as APIs de serviços que seu aplicativo usa. Para mais informações, experimente nosso tutorial, Criando uma API de funções de etapa usando o gateway de API

P: Como o registro em log e o monitoramento funcionam para o AWS Step Functions?

O AWS Step Functions envia métricas para o Amazon CloudWatch e o AWS CloudTrail para monitoramento de aplicativos. O Amazon CloudWatch coleta e rastreia métricas, define alarmes e reage automaticamente a alterações no AWS Step Functions. O AWS CloudTrail captura todas as chamadas de API para Funções de Etapa como eventos, incluindo chamadas do console do Step Functions e de chamadas de código para as APIs do Step Functions. O Step Functions também oferece suporte a regras gerenciadas do Amazon CloudWatch Events para cada serviço integrado em seu fluxo de trabalho e criará e gerenciará regras do CloudWatch Events na sua conta da AWS, conforme necessário. Para obter mais informações, consulte Monitoramento e registro em log no Guia do Desenvolvedor do AWS Step Functions. 

Segurança

P: Como proteger meus fluxos de trabalho?

O AWS Step Functions é integrado ao AWS Identity and Access Management (AWS IAM). As políticas do IAM podem ser usadas para controlar o acesso às APIs de funções da etapa e, quando você cria uma máquina de estado no console do AWS Step Functions, este recomenda uma política do IAM baseada nos recursos usados na definição da máquina de estado. Para obter mais informações, consulte Políticas do IAM para serviços conectados no Guia do desenvolvedor do AWS Step Functions. 

Comece a usar o AWS Step Functions

Acesse a página de conceitos básicos