

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Managed Service for Apache Flink 애플리케이션으로 프로덕션 준비 상태 확보
<a name="production-readiness"></a>

Managed Service for Apache Flink에서 프로덕션 애플리케이션을 실행하는 데 있어 중요한 측면을 모아 놓은 것입니다. 전체 목록은 아니지만 애플리케이션을 프로덕션에 적용하기 전에 주의해야 할 최소한의 사항만 나열한 것입니다.

## 애플리케이션 부하 테스트
<a name="load-testing-applications"></a>

애플리케이션 관련 일부 문제는 부하가 심한 경우에만 나타납니다. 애플리케이션 상태가 정상으로 보였지만 작동 이벤트로 인해 애플리케이션의 부하가 크게 증폭되는 사례가 있었습니다. 이는 애플리케이션 자체와는 완전히 무관하게 발생할 수 있습니다. 데이터 소스 또는 데이터 싱크를 몇 시간 동안 사용할 수 없으면 Flink 애플리케이션을 진행할 수 없습니다. 이 문제가 해결되면 처리되지 않은 데이터가 쌓여 가용 리소스가 완전히 고갈될 수 있습니다. 그러면 부하로 인해 이전에 발생하지 않았던 버그나 성능 문제가 증폭될 수 있습니다.

따라서 프로덕션 애플리케이션을 위한 적절한 부하 테스트를 실행하는 것이 중요합니다. 이러한 부하 테스트 중에 답변해야 하는 질문은 다음과 같습니다.
+ 지속적인 고부하 상태에서도 애플리케이션이 안정적입니까?
+ 최대 부하 상태에서도 애플리케이션이 저장점을 가져갈 수 있나요?
+ 1시간의 백로그를 처리하는 데 얼마나 걸리나요? 그리고 24시간은 얼마나 걸리나요(스트림에 있는 데이터의 최대 보존 기간에 따라 다름)?
+ 애플리케이션을 확장하면 애플리케이션 처리량이 증가하나요?

데이터 스트림에서 소비하는 경우 일정 시간 동안 스트림으로 생성하여 이러한 시나리오를 시뮬레이션할 수 있습니다. 그런 다음 애플리케이션을 시작하여 처음부터 데이터를 소비하도록 합니다. 예를 들어 Kinesis 데이터 스트림의 경우 시작 위치로 `TRIM_HORIZON`을 사용합니다.

## 최대 병렬 처리 정의
<a name="explicit-max-parallelism"></a>

최대 병렬 처리는 상태 기반 애플리케이션이 스케일링할 수 있는 최대 병렬 처리를 정의합니다. 이는 상태가 처음 생성될 때 정의되며 상태를 삭제하지 않고 이 최대값 이상으로 연산자를 확장할 수 있는 방법은 없습니다.

최대 병렬 처리는 상태가 처음 생성될 때 설정됩니다.

기본적인 최대 병렬 처리 설정은 다음과 같습니다.
+ 병렬 처리가 128 미만인 경우 128
+ `MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)`: 병렬 처리가 128을 초과하는 경우

애플리케이션을 128 병렬 처리 이상으로 규모 조정하려는 경우 최대 병렬 처리를 명시적으로 정의해야 합니다.

최대 병렬 처리는 애플리케이션 수준에서 `env.setMaxParallelism(x)` 또는 단일 연산자를 사용하여 정의할 수 있습니다. 다르게 지정하지 않는 한 모든 연산자는 애플리케이션의 최대 병렬 처리를 상속합니다.

자세한 내용은 Flink 설명서의 [최대 병렬 처리 설정](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism)을 참조하세요.

## 모든 연산자에 대해 UUID 설정
<a name="set-uuid"></a>

UUID는 Flink가 저장점을 개별 연산자에 다시 매핑하는 작업에 사용됩니다. 각 연산자에 대해 특정 UUID를 설정하면 복원할 저장점 프로세스를 안정적으로 매핑할 수 있습니다.

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

자세한 내용을 알아보려면 [프로덕션 준비 체크리스트](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/ops/production_ready/)를 참조하세요.