Prepare seus aplicativos do Managed Service for Apache Flink para produção - Managed Service for Apache Flink

Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.

Prepare seus aplicativos do Managed Service for Apache Flink para produção

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

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

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 na documentação do Apache Flink.

Defina um UUID para todos os operadores

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.