

# AWS Glue 스트리밍 자동 크기 조정
<a name="glue-streaming-auto-scaling"></a>

AWS Glue 스트리밍 ETL 작업은 스트리밍 소스의 데이터를 지속적으로 소비하고, 전송 중인 데이터를 정리 및 변환하여 분석에 사용할 수 있도록 합니다. AWS Glue 오토 스케일링은 작업 실행의 각 단계를 모니터링하여 유휴 상태일 때 작업자를 끄거나 추가 병렬 처리가 가능한 경우 작업자를 추가할 수 있습니다.

 다음 섹션에서는 AWS Glue 스트리밍 자동 크기 조정에 대한 정보를 제공합니다.

## AWS Glue Studio에서 Auto Scaling 사용
<a name="auto-scaling-enabling"></a>

AWS Glue Studio의 **Job details**(작업 세부 정보) 탭에서 유형을 **Spark** 또는 **Spark Streaming**으로, **Glue version**(Glue 버전)을 **Glue 3.0** 또는 **Glue 4.0**으로 선택합니다. 그러면 **작업자 유형(Worker type)** 아래에 확인란이 표시됩니다.
+ **작업자 수 자동 크기 조정(Automatically scale the number of workers)** 옵션을 선택합니다.
+ **최대 작업자 수(Maximum number of workers)**를 설정하여 작업 실행에 판매할 수 있는 최대 작업자 수를 정의합니다.

![\[AWS Glue Studio에서 Auto Scaling 사용 및 구성.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/auto-scaling-enable-studio.png)


## AWS CLI 또는 SDK를 사용하여 Auto Scaling 사용 설정
<a name="auto-scaling-enabling-cli-sdk"></a>

AWS CLI에서 Auto Scaling을 사용 설정하여 작업을 실행하려면, 다음 구성으로 `start-job-run`을 실행합니다.

```
{
    "JobName": "<your job name>",
    "Arguments": {
        "--enable-auto-scaling": "true"
    },
    "WorkerType": "G.2X", // G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, R.1X, R.2X, R.4X, and R.8X are supported for Auto Scaling Jobs
    "NumberOfWorkers": 20, // represents Maximum number of workers
    ...other job run configurations...
}
```

ETL 작업 실행이 완료되면 `get-job-run`을 호출하여 DPU 초 단위로 작업 실행의 실제 리소스 사용량을 확인할 수도 있습니다. 참고: 새 필드 **DPUSeconds**는 Auto Scaling이 사용 설정된 AWS Glue 3.0 이상의 배치 작업에만 표시됩니다. 이 필드는 스트리밍 작업에는 지원되지 않습니다.

```
$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1
{
    "JobRun": {
        ...
        "GlueVersion": "3.0",
        "DPUSeconds": 386.0
    }
}
```

동일한 구성의 [AWS Glue SDK](https://docs.aws.amazon.com/glue/latest/webapi/API_StartJobRun.html)를 사용하여 Auto Scaling으로 작업 실행을 구성할 수도 있습니다.

## 작동 방식
<a name="auto-scaling-how-it-works"></a>

 **마이크로 배치 전반에 걸쳐 크기 조정** 

 다음 예제는 자동 크기 조정의 작동 방식을 설명하는 데 사용됩니다.
+ 50개의 DPU로 시작하는 AWS Glue 작업이 있습니다.
+ 자동 크기 조정이 활성화되었습니다.

 이 예제에서 AWS Glue는 몇 개의 마이크로 배치에 대한 'batchProcessingTimeInMs' 지표를 살펴보고 사용자가 설정한 기간 내에서 작업이 완료되는지 확인합니다. 작업이 더 빨리 완료되는 경우 작업이 얼마나 빨리 완료되는지에 따라 AWS Glue가 스케일 다운될 수 있습니다. 'numberAllExecutors'로 그린 이 지표를 Amazon CloudWatch에서 모니터링하여 자동 크기 조정이 어떻게 작동하는지 확인할 수 있습니다.

 실행기 수는 각 마이크로 배치가 완료된 후에만 기하급수적으로 스케일 업 또는 다운됩니다. Amazon CloudWatch 모니터링 로그에서 볼 수 있듯이, AWS Glue는 필요한 실행기 수(주황색 선)를 살펴보고 그에 맞춰 자동으로 실행기 크기(파란색 선)를 조정합니다.

![\[스크린샷은 위에 제공된 예제에 대한 Amazon CloudWatch 모니터링 로그인 AWS Glue를 보여주며 필요한 실행기 수(주황색 선)를 살펴보고 수동 조정 없이 이에 맞게 실행기 크기(파란색 선)를 조정합니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/glue-autoscaling-scaling-across-microbatch.png)


 AWS Glue가 실행기 수를 스케일 다운하고 데이터 볼륨 증가에 따른 마이크로 배치 처리 시간 증가가 관찰되면 AWS Glue는 지정된 상한인 50 DPU까지 스케일 업합니다.

 **마이크로 배치 내에서 크기 조정** 

 위 예제에서 시스템은 완료된 마이크로 배치 몇 개를 모니터링하여 스케일 업할지 스케일 다운할지 결정합니다. 기간이 길어질수록 몇 개의 마이크로 배치를 기다리는 대신 마이크로 배치 내에서 더 빠르게 응답하기 위해 Auto Scaling이 필요합니다. 이러한 경우 추가 구성 `--auto-scaIe-within-microbatch`를 `true`로 사용할 수 있습니다. 아래와 같이 AWS Glue Studio의 AWS Glue 작업 속성에 이를 추가할 수 있습니다.

![\[스크린샷은 키와 값에 대한 작업 파라미터를 보여줍니다. 키 필드에는 값 --auto-scaIe-within-microbatch가 포함되고 값 필드에는 값 true가 포함됩니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/glue-autoscaling-job-parameters-studio.png)
