

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

# Amazon Neptune Serverless 사용
<a name="neptune-serverless-using"></a>

새 Neptune DB 클러스터를 서버리스 클러스터로 만들거나 경우에 따라 기존 DB 클러스터를 변환하여 서버리스를 사용할 수 있습니다. 또한 서버리스 DB 클러스터의 DB 인스턴스를 서버리스 인스턴스로 또는 서버리스 인스턴스에서 변환할 수 있습니다. Neptune Serverless AWS 리전 는 지원되는 중 하나에서만 사용할 수 있으며 몇 가지 다른 제한 사항이 있습니다( 참조[Amazon Neptune Serverless 제약 조건](neptune-serverless.md#neptune-serverless-limitations)).

또한 [Neptune CloudFormation 스택](get-started-cfn-create.md)을 사용하여 Neptune Serverless DB 클러스터를 생성할 수 있습니다.

## 서버리스를 사용하는 새 DB 클러스터 생성
<a name="neptune-serverless-create"></a>

서버리스를 사용하는 Neptune DB 클러스터를 만들려면 프로비저닝된 클러스터를 만들 때와 같은 방법으로 [AWS Management Console을 사용](manage-console-launch-console.md)하여 만들 수 있습니다. 차이점은 **DB 인스턴스 크기**에서 **DB 인스턴스 클래스**를 **서버리스**로 설정해야 한다는 점입니다. 이렇게 할 때 클러스터의 [서버리스 용량 범위를 설정](neptune-serverless-capacity-scaling.md)해야 합니다.

다음과 같은 AWS CLI 명령을 사용하여를 사용하여 서버리스 DB 클러스터를 생성할 수도 있습니다(Windows에서는 '\\'를 '^'로 대체).

```
aws neptune create-db-cluster \
  --region {{(an AWS 리전 region that supports serverless)}} \
  --db-cluster-identifier {{(ID for the new serverless DB cluster)}} \
  --engine neptune \
  --engine-version {{(optional: 1.2.0.1 or above)}} \
  --serverless-v2-scaling-configuration "MinCapacity={{1.0}}, MaxCapacity={{128.0}}"
```

다음과 같이 `serverless-v2-scaling-configuration` 파라미터를 지정할 수도 있습니다.

```
  --serverless-v2-scaling-configuration '{"MinCapacity":{{1.0}}, "MaxCapacity":{{128.0}}}'
```

그런 다음 `ServerlessV2ScalingConfiguration` 속성에 대해 `describe-db-clusters` 명령을 실행하면 지정한 다음의 용량 범위 설정이 반환됩니다.

```
"ServerlessV2ScalingConfiguration": {
    "MinCapacity": {{(the specified minimum number of NCUs)}},
    "MaxCapacity": {{(the specified maximum number of NCUs)}}
}
```

## 기존 DB 클러스터 또는 인스턴스를 서버리스로 변환
<a name="neptune-conversion-to-serverless"></a>

엔진 버전 1.2.0.1 이상을 사용하는 Neptune DB 클러스터가 있는 경우 이를 서버리스로 변환할 수 있습니다. 이 프로세스에는 약간의 가동 중지가 발생합니다.

첫 번째 단계는 기존 클러스터에 용량 범위를 추가하는 것입니다. 를 사용하거나 다음과 같은 AWS CLI 명령을 AWS Management Console사용하여이 작업을 수행할 수 있습니다(Windows에서는 '\\'를 '^'로 대체).

```
aws neptune modify-db-cluster \
  --db-cluster-identifier {{(your DB cluster ID)}} \
  --serverless-v2-scaling-configuration \
      MinCapacity={{(minimum number of NCUs, such as  2.0)}}, \
      MaxCapacity={{(maximum number of NCUs, such as 24.0)}}
```

다음 단계는 클러스터의 기존 기본 인스턴스(라이터)를 대체할 새 서버리스 DB 인스턴스를 만드는 것입니다. 이 작업과 모든 후속 단계는 AWS Management Console 또는를 사용하여 수행할 수 있습니다 AWS CLI. 두 경우 모두 DB 인스턴스 클래스를 서버리스로 지정합니다. AWS CLI 명령은 다음과 같습니다(Windows에서는 '\\'를 '^'로 대체).

```
aws neptune create-db-instance \
  --db-instance-identifier {{(an instance ID for the new writer instance)}} \
  --db-cluster-identifier {{(ID of the DB cluster)}} \
  --db-instance-class db.serverless \
  --engine neptune
```

새 라이터 인스턴스를 사용할 수 있게 되면 장애 조치를 수행하여 해당 인스턴스를 클러스터의 라이터 인스턴스로 만듭니다.

```
aws neptune failover-db-cluster \
  --db-cluster-identifier {{(ID of the DB cluster)}} \
  --target-db-instance-identifier {{(instance ID of the new serverless instance)}}
```

이어서 다음과 같이 이전 라이터 인스턴스를 삭제합니다.

```
aws neptune delete-db-instance \
  --db-instance-identifier {{(instance ID of the old writer instance)}} \
  --skip-final-snapshot
```

마지막으로 동일한 작업을 수행하여 서버리스 인스턴스로 변환하려는 기존의 프로비저닝된 각 리더 인스턴스를 대신할 새 서버리스 인스턴스를 만들고 기존의 프로비저닝된 인스턴스를 삭제합니다. 리더 인스턴스에는 장애 조치가 필요하지 않습니다.

## 기존 서버리스 DB 클러스터의 용량 범위 수정
<a name="neptune-modify-capacity-range"></a>

다음과 같이 Neptune Serverless DB 클러스터의 용량 범위를 AWS CLI 를 사용하여 변경할 수 있습니다(Windows의 경우 '\\' 기호를 '^' 기호로 대체).

```
aws neptune modify-db-cluster \
  --region {{(an AWS region that supports serverless)}} \
  --db-cluster-identifier {{(ID of the serverless DB cluster)}} \
  --apply-immediately \
  --serverless-v2-scaling-configuration MinCapacity={{4.0}}, MaxCapacity={{32}}
```

용량 범위를 변경하면 일부 구성 파라미터의 기본값이 변경됩니다. Neptune은 이러한 새 기본값 중 일부를 즉시 적용할 수 있지만 일부 동적 파라미터 변경 사항은 재부팅 후에만 적용됩니다. `pending-reboot` 상태는 일부 파라미터 변경 사항을 적용하려면 재부팅이 필요함을 나타냅니다.

## 서버리스 DB 인스턴스를 프로비저닝된 인스턴스로 변경
<a name="neptune-conversion-to-provisioned"></a>

Neptune Serverless 인스턴스를 프로비저닝된 인스턴스로 변환하려면 인스턴스 클래스를 프로비저닝된 인스턴스 클래스 중 하나로 변경하기만 하면 됩니다. [Neptune DB 인스턴스 수정(및 즉시 적용)](manage-console-instances-modify.md)을(를) 참조하세요.

## Serverless용 Gremlin 클라이언트 구성
<a name="neptune-serverless-client-config"></a>

Neptune Serverless에서 Gremlin WebSocket 클라이언트를 사용하는 경우 조정 이벤트 중에 안정적인 연결을 유지하도록 클라이언트의 하트비트 간격을 적절하게 구성해야 합니다. Java, Go, JavaScript/Node.js 및 Python 클라이언트에 대한 자세한 구성 지침은 섹션을 참조하세요[Neptune Serverless의 하트비트 구성](best-practices-gremlin-heartbeat-serverless.md).

## Amazon CloudWatch로 서버리스 용량 모니터링
<a name="neptune-serverless-monitoring"></a>

CloudWatch를 사용하여 DB 클러스터에 있는 모든 Neptune Serverless 인스턴스의 용량과 사용률을 모니터링할 수 있습니다. 클러스터 수준과 인스턴스 수준 모두에서 현재 다음과 같이 서버리스 용량을 추적할 수 있는 두 가지 CloudWatch 지표가 있습니다.
+ **`ServerlessDatabaseCapacity`** - 인스턴스 수준 지표로, `ServerlessDatabaseCapacity`는 현재 인스턴스 용량을 NCU 단위로 보고합니다. 클러스터 수준의 지표로, 클러스터 내 모든 DB 인스턴스의 `ServerlessDatabaseCapacity` 값 평균을 보고합니다.
+ **`NCUUtilization`** - 이 지표는 사용 가능한 용량의 비율을 보고합니다. 이 값은 현재 `ServerlessDatabaseCapacity`(인스턴스 수준 또는 클러스터 수준 중 하나)를 DB 클러스터의 최대 용량 설정으로 나눈 값으로 계산됩니다.

  클러스터 수준에서 이 지표가 100%에 가까워지면(즉, 클러스터가 최대한 크게 규모가 조정된 경우) 최대 용량 설정을 늘리는 것을 고려합니다.

  라이터 인스턴스가 최대 용량에 근접하고 리더 인스턴스의 용량이 100%에 가까워지면 읽기 워크로드를 분산하기 위해 더 많은 리더 인스턴스를 추가하는 것이 좋습니다.

서버리스 인스턴스와 프로비저닝된 인스턴스의 경우 `CPUUtilization` 및 `FreeableMemory` 지표의 의미가 약간 다르다는 점을 참고합니다. 서버리스 컨텍스트에서 `CPUUtilization`은 현재 사용 중인 CPU 양을 최대 용량에서 사용할 수 있는 CPU 양으로 나눈 비율입니다. 마찬가지로 `FreeableMemory`는 인스턴스가 최대 용량에 도달했을 때 사용할 수 있는 여유 메모리의 양을 보고합니다.

다음 예제에서는 Linux AWS CLI 에서를 사용하여 1시간 동안 10분마다 측정된 지정된 DB 인스턴스의 최소, 최대 및 평균 용량 값을 검색하는 방법을 보여줍니다. Linux `date` 명령은 현재 날짜 및 시각을 기준으로 시작 및 종료 시각을 지정합니다. `--query` 파라미터의 `sort_by` 함수는 다음과 같이 `Timestamp` 필드를 기준으로 결과를 시간순으로 정렬합니다.

```
aws cloudwatch get-metric-statistics \
  --metric-name "ServerlessDatabaseCapacity" \
  --start-time "$(date -d '1 hour ago')" \
  --end-time "$(date -d 'now')" \
  --period 600 \
  --namespace "AWS/Neptune"
  --statistics Minimum Maximum Average \
  --dimensions Name=DBInstanceIdentifier,Value={{(instance ID)}} \
  --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \
  --output table
```