Amazon Managed Service for Apache Flink는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려졌습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Managed Service for Apache Flink 애플리케이션의 프로덕션 준비 완료
Managed Service for Apache Flink에서 프로덕션 애플리케이션을 실행하는 데 있어 중요한 측면을 모아 놓은 것입니다. 전체 목록은 아니지만 애플리케이션을 프로덕션에 적용하기 전에 주의해야 할 최소한의 사항만 나열한 것입니다.
애플리케이션 로드 테스트
애플리케이션 관련 일부 문제는 부하가 심한 경우에만 나타납니다. 애플리케이션이 정상으로 보였지만 운영 이벤트로 인해 애플리케이션의 부하가 크게 증폭된 사례가 있었습니다. 이는 애플리케이션 자체와 완전히 독립적으로 발생할 수 있습니다. 데이터 소스 또는 데이터 싱크를 몇 시간 동안 사용할 수 없는 경우 Flink 애플리케이션을 진행할 수 없습니다. 이 문제가 해결되면가 누적된 처리되지 않은 데이터의 백로그가 발생하여 사용 가능한 리소스가 완전히 소진될 수 있습니다. 그러면 로드가 이전에는 나타나지 않았던 버그 또는 성능 문제를 증폭할 수 있습니다.
따라서 프로덕션 애플리케이션에 대해 적절한 로드 테스트를 실행하는 것이 중요합니다. 이러한 부하 테스트 중에 답변해야 하는 질문은 다음과 같습니다.
지속적인 고부하 상태에서도 애플리케이션이 안정적입니까?
최대 부하 상태에서도 애플리케이션이 저장점을 가져갈 수 있나요?
1시간의 백로그를 처리하는 데 얼마나 걸리나요? 그리고 24시간은 얼마나 걸리나요(스트림에 있는 데이터의 최대 보존 기간에 따라 다름)?
애플리케이션을 확장하면 애플리케이션 처리량이 증가하나요?
데이터 스트림에서 소비하는 경우 일정 시간 동안 스트림으로 생성하여 이러한 시나리오를 시뮬레이션할 수 있습니다. 그런 다음 애플리케이션을 시작하고 처음부터 데이터를 소비하도록 합니다. 예를 들어 Kinesis 데이터 스트림의 TRIM_HORIZON
경우의 시작 위치를 사용합니다.
최대 병렬 처리 정의
최대 병렬 처리는 상태 기반 애플리케이션이 스케일링할 수 있는 최대 병렬 처리를 정의합니다. 이는 상태가 처음 생성될 때 정의되며 상태를 삭제하지 않고 이 최대값 이상으로 연산자를 확장할 수 있는 방법은 없습니다.
최대 병렬 처리는 상태가 처음 생성될 때 설정됩니다.
기본적으로 최대 병렬 처리는 다음과 같이 설정됩니다.
병렬 처리가 128 미만인 경우 128
MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15)
: 병렬 처리가 128을 초과하는 경우
애플리케이션을 > 128 병렬화로 확장하려는 경우 최대 병렬화를 명시적으로 정의해야 합니다.
env.setMaxParallelism(x)
또는 단일 연산자를 사용하여 애플리케이션 수준에서 최대 병렬 처리를 정의할 수 있습니다. 다르게 지정하지 않는 한 모든 연산자는 애플리케이션의 최대 병렬 처리를 상속합니다.
자세한 내용은 Apache Flink 설명서의 최대 병렬성 설정을
모든 연산자에 대해 UUID 설정
UUID는 Flink가 저장점을 개별 연산자에 다시 매핑하는 작업에 사용됩니다. 각 연산자에 대해 특정 UUID를 설정하면 복원할 저장점 프로세스를 안정적으로 매핑할 수 있습니다.
.map(...).uid("my-map-function")
자세한 내용을 알아보려면 프로덕션 준비 체크리스트