

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Atualizando para o Flink 2.2: guia completo
<a name="flink-2-2-upgrade-guide"></a>

Este guia fornece step-by-step instruções para atualizar seu aplicativo Amazon Managed Service for Apache Flink do Flink 1.x para o Flink 2.2. Esta é uma atualização de versão importante com alterações significativas que exigem planejamento e testes cuidadosos.

**A atualização da versão principal é unidirecional**  
A operação de atualização pode mover seu aplicativo do Flink 1.x para 2.2 com preservação de estado, mas você não pode voltar de 2.2 para 1.x com o estado 2.2. Se seu aplicativo ficar insalubre após a atualização, use a API Rollback para retornar à versão 1.x com seu estado 1.x original a partir do snapshot mais recente.

## Pré-requisitos
<a name="upgrade-guide-prerequisites"></a>

Antes de começar sua atualização:
+ Resenha [Alterações e suspensões significativas](flink-2-2.md#flink-2-2-breaking-changes)
+ Resenha [Guia de compatibilidade estadual para atualizações do Flink 2.2](state-compatibility.md)
+ Garanta que você tenha um ambiente não produtivo para testes
+ Documente a configuração e as dependências atuais do aplicativo

## Entendendo seus caminhos de migração
<a name="upgrade-guide-migration-paths"></a>

Sua experiência de atualização depende da compatibilidade do seu aplicativo com o Flink 2.2. Compreender esses caminhos ajuda você a se preparar adequadamente e definir expectativas realistas.

**Caminho 1: binário compatível e estado do aplicativo**

**O que esperar:**
+ Invocar a operação de atualização
+ Conclua a migração para 2.2 com a transição do status do aplicativo: → → `RUNNING` `UPDATING` `RUNNING`
+ Preserve todo o estado do aplicativo sem perda ou reprocessamento de dados
+ Mesma experiência das migrações de versões secundárias

Ideal para: aplicativos sem estado ou aplicativos que usam serialização compatível (Avro, esquemas Protobuf compatíveis, sem coleções) POJOs 

**Caminho 2: incompatibilidades binárias**

**O que esperar:**
+ Invocar a operação de atualização
+ A operação falha e revela a incompatibilidade binária por meio da API de operações e dos registros
+ Com a reversão automática ativada: os aplicativos são revertidos automaticamente em minutos sem sua intervenção
+ Com a reversão automática desativada: os aplicativos permanecem em execução sem processamento de dados; você reverte manualmente para a versão anterior
+ Depois que o binário for corrigido, use a [UpdateApplication API](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) para uma experiência semelhante ao Caminho 1

Ideal para: aplicativos removidos APIs que são detectados durante a inicialização do trabalho do Flink

**Caminho 3: estado incompatível do aplicativo**

**O que esperar:**
+ Invocar a operação de atualização
+ A migração parece ter sido bem-sucedida inicialmente
+ Os aplicativos entram em ciclos de reinicialização em segundos quando a restauração do estado falha
+ Detecte falhas por meio de CloudWatch métricas que mostram reinicializações contínuas
+ Invocar manualmente a operação Rollback
+ Retorne à produção em poucos minutos após o início da reversão
+ Analise [Migração estadual](state-compatibility.md#state-compat-migration) sua inscrição

Ideal para: aplicativos com incompatibilidades de serialização de estado (POJOs com coleções, determinado estado serializado do Kryo)

**nota**  
É altamente recomendável criar uma réplica do seu aplicativo de produção e testar cada uma das seguintes fases da atualização na réplica antes de seguir as mesmas etapas do seu aplicativo de produção.

## Fase 1: Preparação
<a name="upgrade-guide-phase-1"></a>

**Atualizar o código do aplicativo**

Atualize o código do seu aplicativo para ser compatível com o Flink 2.2:
+ **Atualize as dependências do Flink** para a versão 2.2.0 em seu ou `pom.xml` `build.gradle`
+ **Atualize as dependências do conector** para versões compatíveis com o Flink 2.2 (consulte) [disponibilidade do conector](flink-2-2.md#flink-2-2-connectors)
+ **Remova o uso obsoleto** da API:
  + Substitua a DataSet API por DataStream API ou API de tabela/SQL
  + Substitua o legacy`SourceFunction`/`SinkFunction`por FLIP-27 Source e FLIP-143 Sink APIs
  + Substitua o uso da API Scala pela API Java
+ **Atualização para o Java 17**

**Carregar código de aplicativo atualizado**
+ Crie seu aplicativo JAR com dependências do Flink 2.2
+ Faça o upload para o Amazon S3 com um **nome de arquivo diferente** do seu JAR atual (por exemplo,) `my-app-flink-2.2.jar`
+ Observe o bucket e a chave do S3 para uso na etapa de atualização

## Fase 2: ativar a reversão automática
<a name="upgrade-guide-phase-2"></a>

A reversão automática permite que o Amazon Managed Service para Apache Flink reverta automaticamente para a versão anterior se a atualização falhar.

**Verifique o status da reversão automática**

*Console de gerenciamento da AWS:*

1. Navegue até seu aplicativo

1. Escolher **configuração**

1. Em **Configurações do aplicativo**, verifique se a **reversão do sistema** está ativada

*AWS CLI:*

```
aws kinesisanalyticsv2 describe-application \
    --application-name MyApplication \
    --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'
```

**Ativar a reversão automática (se não estiver ativada)**

```
aws kinesisanalyticsv2 update-application \
    --application-name MyApplication \
    --current-application-version-id <version-id> \
    --application-configuration-update '{
        "ApplicationSystemRollbackConfigurationUpdate": {
            "RollbackEnabledUpdate": true
        }
    }'
```

## Fase 3: tirar uma foto (opcional)
<a name="upgrade-guide-phase-3"></a>

Se os instantâneos automáticos estiverem habilitados para seu aplicativo, você poderá pular esta etapa, caso contrário, tire um instantâneo do seu aplicativo para salvar o estado do seu aplicativo antes da atualização.

**Tire um instantâneo do aplicativo em execução**

*Console de gerenciamento da AWS:*

1. Navegue até seu aplicativo

1. Escolha **instantâneos**

1. Escolha **Criar instantâneo**

1. Insira um nome de instantâneo (por exemplo,`pre-flink-2.2-upgrade`)

1. Selecione **Criar**

*AWS CLI:*

```
aws kinesisanalyticsv2 create-application-snapshot \
    --application-name MyApplication \
    --snapshot-name pre-flink-2.2-upgrade
```

**Verificar a criação do snapshot**

```
aws kinesisanalyticsv2 describe-application-snapshot \
    --application-name MyApplication \
    --snapshot-name pre-flink-2.2-upgrade
```

Espere até que `SnapshotStatus` seja `READY` antes de continuar.

## Fase 4: Atualizar o aplicativo
<a name="upgrade-guide-phase-4"></a>

Você pode atualizar seu aplicativo Flink usando a [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)ação.

Você pode chamar a API `UpdateApplication` de várias maneiras:
+ **Use o Console de gerenciamento da AWS**
  + Acesse seu aplicativo no Console de gerenciamento da AWS.
  + Selecione **Configurar**.
  + Selecione o novo runtime e o snapshot a partir do qual você deseja começar, também conhecido como configuração de restauração. Use a configuração mais recente como configuração de restauração para iniciar o aplicativo a partir do snapshot mais recente. Aponte para o novo aplicativo atualizado JAR/zip no Amazon S3.
+ **Use a AWS CLI[https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kinesisanalyticsv2/update-application.html)**ação.
+ **Use CloudFormation.**
  + Atualize o `RuntimeEnvironment` campo. Anteriormente, o CloudFormation excluía o aplicativo e criava um novo, fazendo com que seus snapshots e outros históricos do aplicativo fossem perdidos. Agora CloudFormation atualiza seu `RuntimeEnvironment` local e não exclui seu aplicativo.
+ **Use o AWS SDK.**
  + Consulte a documentação do SDK para obter a linguagem de programação de sua preferência. Consulte [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html).

Você pode realizar a atualização enquanto o aplicativo estiver no estado `RUNNING` ou enquanto o aplicativo estiver parado no estado `READY`. O Amazon Managed Service para Apache Flink valida a compatibilidade entre a versão original do tempo de execução e a versão do tempo de execução de destino. Essa verificação de compatibilidade é executada quando você executa `UpdateApplication` enquanto está no `RUNNING` estado ou na próxima, `StartApplication` se você atualiza enquanto está no `READY` estado.

**Atualização do estado RUNNING**

```
aws kinesisanalyticsv2 update-application \
    --application-name MyApplication \
    --current-application-version-id <version-id> \
    --runtime-environment-update FLINK-2_2 \
    --application-configuration-update '{
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "FileKeyUpdate": "my-app-flink-2.2.jar"
                }
            }
        }
    }'
```

**Atualização do estado READY**

```
aws kinesisanalyticsv2 update-application \
    --application-name MyApplication \
    --current-application-version-id <version-id> \
    --runtime-environment-update FLINK-2_2 \
    --application-configuration-update '{
        "ApplicationCodeConfigurationUpdate": {
            "CodeContentUpdate": {
                "S3ContentLocationUpdate": {
                    "FileKeyUpdate": "my-app-flink-2.2.jar"
                }
            }
        }
    }'
```

## Fase 5: atualização do monitor
<a name="upgrade-guide-phase-5"></a>

**Verificação de compatibilidade**
+ Use a API de operações para verificar o status da atualização. Se houver incompatibilidades binárias ou problemas com a inicialização do trabalho, a operação de atualização falhará com os registros.
+ Se a operação de atualização tiver sido bem-sucedida, mas o aplicativo estiver preso em ciclos de reinicialização, isso significa que o estado é incompatível com a nova versão do Flink ou que há um problema com o código atualizado. Análise [Guia de compatibilidade estadual para atualizações do Flink 2.2](state-compatibility.md) sobre como identificar problemas de incompatibilidade de estado.

**Monitore a integridade do aplicativo**

*Estado do aplicativo:*
+ O status do aplicativo deve ser alterado: `RUNNING` → `UPDATING` → `RUNNING`
+ Verifique o tempo de execução do aplicativo. Se for 2.2, a operação de atualização foi bem-sucedida.
+ Se seu aplicativo estiver ativo`RUNNING`, mas ainda estiver no tempo de execução antigo, a reversão automática foi iniciada. A API de operações mostrará a operação como`FAILED`. Verifique os registros para encontrar a exceção em caso de falha.

Além disso, monitore essas métricas em CloudWatch:

*Métrica de reinicialização:*
+ `numRestarts`: Monitore reinicializações inesperadas — a atualização será bem-sucedida se `numRestarts` for zero `uptime` e/ou `runningTime` estiver aumentando.

*Métricas do ponto de verificação:*
+ `lastCheckpointDuration`: devem ser semelhantes aos valores de pré-atualização
+ `numberOfFailedCheckpoints`: Deve permanecer em 0

## Fase 6: Validar o comportamento do aplicativo
<a name="upgrade-guide-phase-6"></a>

Depois que o aplicativo estiver sendo executado no Flink 2.2:

**Validação funcional**
+ Verifique se os dados estão sendo lidos das fontes
+ Verifique se os dados estão sendo gravados em coletores
+ Verifique se a lógica de negócios produz os resultados esperados
+ Compare a saída com a linha de base de pré-atualização

**Validação de desempenho**
+ Monitore as métricas de latência (tempo end-to-end de processamento)
+ Monitore as métricas de produtividade (registros por segundo)
+ Monitore a duração e o tamanho do ponto de verificação
+ Monitore a utilização da memória e da CPU

**Corra por mais de 24 horas**

Permita que o aplicativo seja executado por pelo menos 24 horas em produção para garantir:
+ Sem vazamentos de memória
+ Comportamento estável do ponto de verificação
+ Sem reinicializações inesperadas
+ Taxa de transferência consistente

## Fase 7: procedimentos de reversão
<a name="upgrade-guide-phase-7"></a>

Se a atualização falhar ou o aplicativo estiver em execução, mas não estiver íntegro, volte para a versão anterior.

**Reversão automática**

Se a reversão automática estiver ativada e a atualização falhar durante a inicialização, o Amazon Managed Service para Apache Flink reverte automaticamente para a versão anterior.

**Reversão manual**

Se o aplicativo estiver em execução, mas não estiver íntegro, use a `RollbackApplication` API:

*Console de gerenciamento da AWS:*

1. Navegue até seu aplicativo

1. Escolha **Ações** → **Reverter**

1. Confirme a reversão

*AWS CLI:*

```
aws kinesisanalyticsv2 rollback-application \
    --application-name MyApplication \
    --current-application-version-id <version-id>
```

**O que acontece durante a reversão:**
+ O aplicativo é interrompido
+ O tempo de execução reverte para a versão anterior do Flink
+ O código do aplicativo é revertido para o JAR anterior
+ O aplicativo é reiniciado a partir do último snapshot bem-sucedido obtido **antes do upgrade**

**Importante**  
Você não pode restaurar um instantâneo do Flink 2.2 no Flink 1.x
A reversão usa o instantâneo obtido antes da atualização
Sempre tire um instantâneo antes da atualização (Fase 3)

## Próximas etapas
<a name="upgrade-guide-next-steps"></a>

Em caso de dúvidas ou problemas durante a atualização, consulte [Solucionar problemas do Managed Service for Apache Flink](troubleshooting.md) ou entre em contato com o AWS Support.