

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á.

# Prepare seus aplicativos do Managed Service for Apache Flink para produção
<a name="production-readiness"></a>

Essa é uma coleção de aspectos importantes da execução de aplicativos de produção no Managed Service for Apache Flink. Não é uma lista exaustiva, mas sim o mínimo que você deve prestar atenção antes de colocar um aplicativo em produção.

## Faça teste de carga em seus aplicativos
<a name="load-testing-applications"></a>

Alguns problemas com aplicativos só se manifestam sob carga pesada. Vimos casos em que os aplicativos pareciam íntegros e, mesmo assim, um evento operacional amplificou substancialmente a carga sobre o aplicativo. Isso pode acontecer de forma totalmente independente do próprio aplicativo. Se a fonte de dados ou o coletor de dados ficar indisponível por algumas horas, o aplicativo Flink não poderá progredir. Quando o problema é corrigido, há um acúmulo de dados não processados que pode esgotar completamente os recursos disponíveis. A carga pode então amplificar bugs ou problemas de desempenho que não surgiram antes.

Portanto, é essencial executar testes de carga adequados para aplicativos de produção. As perguntas que devem ser respondidas durante esses testes de carga incluem:
+ O aplicativo é estável sob alta carga sustentada?
+ O aplicativo ainda pode salvar em um ponto de salvamento sob carga máxima?
+ Quanto tempo leva para processar um backlog de 1 hora? E por quanto tempo durante 24 horas (dependendo da retenção máxima dos dados no fluxo)?
+ O throughput do aplicativo aumenta quando o aplicativo é escalado?

Ao consumir de um fluxo de dados, esses cenários podem ser simulados produzindo no fluxo por algum tempo. Em seguida, inicie o aplicativo e faça com que ele consuma dados desde o início da execução. Por exemplo, use uma posição inicial de `TRIM_HORIZON` no caso de um fluxo de dados do Kinesis.

## Defina o paralelismo máximo
<a name="explicit-max-parallelism"></a>

O paralelismo máximo define o paralelismo máximo para o qual um aplicativo com estado pode ser escalado. Isso é definido quando o estado é criado pela primeira vez e não há como escalar o operador além desse máximo sem descartar o estado. 

O paralelismo máximo é definido quando o estado é criado pela primeira vez. 

Por padrão, o paralelismo máximo é definido como:
+ 128, se o paralelismo for <= 128
+ `MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)`: se o paralelismo for > 128

Se planeja escalar seu aplicativo com paralelismo > 128, você deve definir explicitamente o paralelismo máximo.

Você pode definir o paralelismo máximo no nível do aplicativo, com `env.setMaxParallelism(x)` ou um único operador. A menos que especificado de outra forma, todos os operadores herdam o paralelismo máximo do aplicativo. 

Para obter mais informações, consulte [Como definir um paralelismo máximo](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism) na documentação do Apache Flink.

## Defina um UUID para todos os operadores
<a name="set-uuid"></a>

Um UUID é usado na operação na qual o Flink mapeia um ponto de salvamento de volta para um operador individual. Definir um UUID específico para cada operador fornece um mapeamento estável para a restauração do processo de ponto de salvamento.

```
.map(...).uid("my-map-function")
```

Para obter mais informações, consulte [Lista de verificação de prontidão de produção](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/ops/production_ready/).