

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

# Managed Service for Apache Flink의 애플리케이션 조정 구현
<a name="how-scaling"></a>

Amazon Managed Service for Apache Flink의 작업 병렬 실행 및 리소스 할당을 구성하여 규모 조정을 구현할 수 있습니다. Apache Flink가 작업의 병렬 인스턴스를 예약하는 방법에 관한 자세한 내용은 Apache Flink 설명서의 [병렬 실행](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/)을 참조하세요.

**Topics**
+ [애플리케이션 병렬 처리 및 ParallelismPerKPU 구성](#how-parallelism)
+ [Kinesis 처리 단위 할당](#how-scaling-kpus)
+ [애플리케이션의 병렬 처리 업데이트](#how-scaling-howto)
+ [Managed Service for Apache Flink에서 자동 규모 조정 사용](how-scaling-auto.md)
+ [maxParallelism 고려 사항](#how-scaling-auto-max-parallelism)

## 애플리케이션 병렬 처리 및 ParallelismPerKPU 구성
<a name="how-parallelism"></a>

다음 [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html) 속성을 사용하여 Managed Service for Apache Flink 애플리케이션 작업(예: 소스에서 읽기 또는 연산자 실행)에 대한 병렬 실행을 구성합니다.
+ `Parallelism` — 이 속성을 사용하여 기본 Apache Flink 애플리케이션 병렬성을 설정합니다. 모든 연산자, 소스 및 싱크는 애플리케이션 코드에서 재정의되지 않는 한 이 병렬성으로 실행됩니다. 기본값은 `1`이고, 기본 최대값은 `256`입니다.
+ `ParallelismPerKPU` — 이 속성을 사용하여 애플리케이션의 Kinesis 처리 단위(KPU)에 따라 예약할 수 있는 병렬 작업 수를 설정합니다. 기본값은 `1`이고 최대값은 `8`입니다. 블로킹 작업(예: I/O)이 있는 애플리케이션의 경우 `ParallelismPerKPU` 값이 높을수록 KPU 리소스가 완전히 활용됩니다.

**참고**  
`Parallelism`의 한도는 KPU 한도(기본 값 64)의 `ParallelismPerKPU`배와 같습니다. 한도 증가를 요청하여 KPU 한도를 늘릴 수 있습니다. 한도 증가를 요청하는 방법에 대한 지침은 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)의 “한도 증가를 요청하려면”을 참조하세요.

특정 연산자의 작업 병렬 처리 설정에 관한 자세한 내용은 Apache Flink 설명서의 [병렬 처리 설정: 연산자](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#operator-level)를 참조하세요.

## Kinesis 처리 단위 할당
<a name="how-scaling-kpus"></a>

Amazon Managed Service for Apache Flink는 용량을 KPU로 프로비저닝합니다. 단일 KPU는 1개의 vCPU 및 4GB의 메모리를 제공합니다. 할당된 모든 KPU에 대해 50GB의 실행 중인 애플리케이션 스토리지도 제공됩니다.

Managed Service for Apache Flink는 다음과 같이 `Parallelism` 및 `ParallelismPerKPU` 속성을 사용하여 애플리케이션을 실행하는 데 필요한 KPU를 계산합니다.

```
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
```

Managed Service for Apache Flink는 처리량 또는 처리 활동의 급증에 대응하여 애플리케이션 리소스를 신속하게 제공합니다. 활동 급증이 지난 후 애플리케이션에서 리소스를 점진적으로 제거합니다. 리소스 자동 할당을 비활성화하려면 나중에 [애플리케이션의 병렬 처리 업데이트](#how-scaling-howto)에서 설명하는 대로 `AutoScalingEnabled` 값을 `false`로 설정합니다.

애플리케이션에 대한 KPU 기본 한도는 64입니다. 이 한도 증가를 요청하는 방법에 대한 지침은 [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)의 “한도 증가를 요청하려면”을 참조하십시오.

**참고**  
오케스트레이션을 위해 추가 KPU가 부과됩니다. 자세한 내용을 알아보려면 [Managed Service for Apache Flink 요금](https://aws.amazon.com/kinesis/data-analytics/pricing/)을 참조하세요.

## 애플리케이션의 병렬 처리 업데이트
<a name="how-scaling-howto"></a>

이 섹션에는 애플리케이션의 병렬성을 설정하는 API 작업에 대한 샘플 요청이 포함되어 있습니다. API 작업과 함께 요청 블록을 사용하는 방법에 대한 추가 예와 지침은 [Managed Service for Apache Flink API 예 코드](api-examples.md) 섹션을 참조하십시오.

다음 예 [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 작업 요청은 애플리케이션을 만들 때 병렬성을 설정합니다.

```
{
   "ApplicationName": "string",
   "RuntimeEnvironment":"FLINK-1_18",
   "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole",
   "ApplicationConfiguration": { 
      "ApplicationCodeConfiguration":{
      "CodeContent":{
         "S3ContentLocation":{
            "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
            "FileKey":"myflink.jar",
            "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
            }
         },
      "CodeContentType":"ZIPFILE"
   },   
      "FlinkApplicationConfiguration": { 
         "ParallelismConfiguration": { 
            "AutoScalingEnabled": "true",
            "ConfigurationType": "CUSTOM",
            "Parallelism": 4,
            "ParallelismPerKPU": 4
         }
      }
   }
}
```

[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 작업을 위한 다음 예 요청은 기존 애플리케이션에 대한 병렬성을 설정합니다.

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "ParallelismConfigurationUpdate": { 
            "AutoScalingEnabledUpdate": "true",
            "ConfigurationTypeUpdate": "CUSTOM",
            "ParallelismPerKPUUpdate": 4,
            "ParallelismUpdate": 4
         }
      }
   }
}
```

[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 작업을 위한 다음 예 요청은 기존 애플리케이션에 대한 병렬성을 비활성화합니다.

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "ParallelismConfigurationUpdate": { 
            "AutoScalingEnabledUpdate": "false"
         }
      }
   }
}
```

## maxParallelism 고려 사항
<a name="how-scaling-auto-max-parallelism"></a>

Flink 작업이 규모 조정할 수 있는 최대 병렬 처리는 해당 작업의 모든 연산자 중 *최소* `maxParallelism` 값에 의해 제한됩니다. 예를 들어 소스와 싱크만 있으며 소스의 `maxParallelism`이 16이고 싱크가 8인 간단한 작업의 경우 애플리케이션은 병렬 처리 8을 초과하여 규모를 조정할 수 없습니다.

연산자의 기본 `maxParallelism`이 계산되는 방식과 기본값을 재정의하는 방식은 Apache Flink 설명서의 [최대 병렬 처리 설정](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism)을 참조하세요.

기본 규칙으로 연산자에 `maxParallelism`을 정의하지 않고 애플리케이션을 병렬 처리 128 이하로 시작하면 모든 연산자의 `maxParallelism`은 128이 됩니다.

**참고**  
작업의 최대 병렬 처리는 상태를 유지하면서 애플리케이션을 조정할 수 있는 병렬 처리의 상한입니다.  
기존 애플리케이션의 `maxParallelism`을 수정하는 경우 이전 `maxParallelism`으로 생성된 스냅샷에서 애플리케이션을 다시 시작할 수 없습니다. 스냅샷 없어야만 애플리케이션 재시작이 가능합니다.  
애플리케이션을 병렬 처리 128보다 크게 규모 조정하려면 애플리케이션에서 `maxParallelism`을 명시적으로 설정해야 합니다.
+ Autoscaling 로직은 작업의 최대 병렬 처리를 초과하는 병렬 처리로 Flink 작업의 규모를 조정하는 것을 방지합니다.
+ 사용자 지정 자동 크기 조정 또는 예약된 규모 조정을 사용하는 경우 작업의 최대 병렬 처리를 초과하지 않도록 구성해야 합니다.
+ 애플리케이션이 최대 병렬 처리를 초과하도록 수동으로 규모 조정하면 애플리케이션이 시작되지 않습니다.