

# SDK de execução durável
<a name="durable-execution-sdk"></a>

O SDK de execução durável é a base para a criação de funções duráveis. Ele fornece os elementos básicos para verificar o progresso, lidar com novas tentativas e gerenciar o fluxo de execução. O SDK abstrai a complexidade do gerenciamento e da reprodução de pontos de verificação, permitindo que você escreva um código sequencial que automaticamente se torna com tolerância a falhas.

O SDK está disponível para JavaScript, TypeScript, Python e Java. Para ver a documentação completa da API, tutoriais rápidos e guias específicos da linguagem, consulte o [Guia do desenvolvedor do SDK de execução durável da AWS](https://docs.aws.amazon.com/durable-execution/).

## O que o SDK faz
<a name="durable-sdk-what-it-does"></a>

**Gerenciamento de pontos de verificação:** o SDK cria pontos de verificação automaticamente à medida que sua função executa operações duráveis. Cada ponto de verificação registra o tipo de operação, as entradas e os resultados. Quando sua função conclui uma etapa, o SDK persiste no ponto de verificação antes de prosseguir. Isso garante que sua função possa ser retomada a partir de qualquer operação concluída, caso seja interrompida.

**Coordenação de reprodução:** quando sua função é retomada após uma pausa ou interrupção, o SDK executa a reprodução. Ele executa seu código desde o início, mas ignora as operações concluídas, usando resultados de pontos de verificação armazenados em vez de reexecutá-las. O SDK garante que a reprodução seja determinística. Com as mesmas entradas e o mesmo log do ponto de verificação, sua função produz os mesmos resultados.

**Isolamento de estado:** o SDK mantém o estado de execução separadamente da sua lógica de negócios. Cada execução durável tem seu próprio log de ponto de verificação que outras execuções não podem acessar. O SDK criptografa os dados em repouso do ponto de verificação e garante que o estado permaneça consistente em todas as reproduções.

Para obter uma explicação detalhada de como o ponto de verificação funciona e do comportamento da reprodução, consulte [Principais conceitos](https://docs.aws.amazon.com/durable-execution/getting-started/key-concepts/) no Guia do desenvolvedor do SDK de execução durável da AWS.

## Operações duráveis
<a name="durable-sdk-operations"></a>

O SDK fornece à sua função um objeto `DurableContext`. Esse contexto substitui o contexto padrão do Lambda e fornece métodos para a criação de pontos de verificação, gerenciamento do fluxo de execução e coordenação com sistemas externos.

O `DurableContext` fornece as seguintes operações para criar fluxos de trabalho duráveis:


| Operation | Descrição | 
| --- | --- | 
| [N.º da etapa](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/step/) | Execute e verifique uma unidade de trabalho com estratégias de repetição configuráveis e semântica de execução. | 
| [Aguardar](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/wait/) | Pause a execução por um período especificado sem consumir recursos computacionais. | 
| [Aguarde a condição](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/wait-for-condition/) | Faça sondagens para uma condição com verificação automática entre as tentativas. | 
| [Retorno de chamada](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/callback/) | Faça uma pausa na execução e espere que um sistema externo forneça informações por meio da API do Lambda. | 
| [Invocar](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/invoke/) | Chame outra função do Lambda e aguarde o resultado com verificação automática. | 
| [Paralelo](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/parallel/) | Execute várias operações simultaneamente com políticas de conclusão configuráveis. | 
| [mapa](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/map/) | Processe cada item em uma coleção simultaneamente com controle de simultaneidade opcional. | 
| [Contexto secundário](https://docs.aws.amazon.com/durable-execution/sdk-reference/operations/child-context/) | Crie um contexto de execução isolado para o agrupamento de várias operações. | 

Cada operação durável cria pontos de verificação automaticamente, garantindo que sua função possa ser retomada a partir de qualquer ponto. Para obter referências detalhadas da API, exemplos de código e uso específico da linguagem, consulte [Referência do SDK](https://docs.aws.amazon.com/durable-execution/sdk-reference/) no Guia do desenvolvedor do SDK de execução durável da AWS.

## Como as operações duráveis são medidas
<a name="durable-operations-checkpoint-consumption"></a>

Cada operação durável que você executa por `DurableContext` cria pontos de verificação para monitorar o progresso da execução e armazenar dados de estado. Essas operações incorrem em cobranças com base em seu uso, e os pontos de verificação podem conter dados que contribuam para seus custos de gravação e retenção de dados. Os dados armazenados incluem dados de eventos de invocação, cargas úteis retornadas das etapas e dados transmitidos ao concluir retornos de chamada. Entender como as operações duráveis são medidas ajuda você a estimar os custos de execução e a otimizar seus fluxos de trabalho. Para obter detalhes de preços, consulte a [página de dfinição de preços do Lambda](https://aws.amazon.com/lambda/pricing/).

O tamanho da carga útil se refere ao tamanho dos dados serializados em que uma operação durável persiste. Os dados são medidos em bytes e o tamanho pode variar dependendo do serializador usado pela operação. A carga útil de uma operação pode ser o resultado em si de uma conclusão com êxito ou o objeto de erro serializado se a operação falhar.

### Operações básicas
<a name="durable-operations-basic"></a>

As operações básicas são os blocos de construção fundamentais para funções duráveis:


| Operation | Tempo do ponto de verificação | Número de operações | Dados persistidos | 
| --- | --- | --- | --- | 
| Execução | Started | 1 | Tamanho da carga útil da entrada | 
| Execução | Concluído (Com êxito/Falhado/Interrompido) | 0 | Tamanho da carga útil da saída | 
| N.º da etapa | Tentativa nova/Com êxito/Falhado | 1 \+ N novas tentativas | Tamanho da carga útil retornado de cada tentativa | 
| Aguardar | Started | 1 | N/D | 
| WaitForCondition | Cada tentativa de sondagem | 1 \+ N sondagens | Tamanho da carga útil retornado de cada tentativa de sondagem | 
| Nova tentativa em nível de invocação | Started | 1 | Carga útil para objeto de erro | 

### Operações de retorno de chamada
<a name="durable-operations-callbacks"></a>

Os retornos de retorno de chamada permitem que sua função faça uma pausa e aguarde até que sistemas externos forneçam entrada. Essas operações criam pontos de verificação quando o retorno de chamada é criado e quando é concluído:


| Operation | Tempo do ponto de verificação | Número de operações | Dados persistidos | 
| --- | --- | --- | --- | 
| CreateCallback | Started | 1 | N/D | 
| Conclusão do retorno de chamada por meio de chamada de API | Completed | 0 | Carga útil de retorno de chamada | 
| WaitForCallback | Started | 3 \+ N novas tentativas (contexto \+ retorno de chamada \+ etapa) | Cargas retornadas pelas tentativas de etapa do remetente, mais duas cópias da carga útil de retorno de chamada | 

### Operações compostas
<a name="durable-operations-compound"></a>

As operações compostas combinam várias operações duráveis para lidar com padrões complexos de coordenação, como execução paralela, processamento de matrizes e contextos aninhados:


| Operation | Tempo do ponto de verificação | Número de operações | Dados persistidos | 
| --- | --- | --- | --- | 
| Paralelo | Started | 1 \+ N ramificações (1 contexto primário \+ N contextos secundários) | Até duas cópias do tamanho da carga útil retornada de cada ramificação, mais os status de cada ramificação | 
| mapa | Started | 1 \+ N ramificações (1 contexto primário \+ N contextos secundários) | Até duas cópias do tamanho da carga útil retornada de cada iteração, mais os status de cada iteração | 
| Ajudantes de promessas | Completed | 1 | Tamanho da carga útil retornado da promessa | 
| RunInChildContext | Com êxito/Falhado | 1 | Tamanho da carga útil retornado do contexto secundário | 

Para contextos, como de `runInChildContext` ou usados internamente por operações compostas, resultados menores que 256 KB são verificados diretamente. Resultados maiores não são armazenados. Em vez disso, eles são reconstruídos durante a reprodução por meio do reprocessamento das operações do contexto.