

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

# 시작 코드 구성
<a name="scorekeep-startup"></a>

**참고**  
X-Ray SDK/데몬 유지 관리 공지 - 2026년 2월 25일에 AWS X-Ray SDKs/데몬은 유지 관리 모드로 전환되며, 여기서 AWS 는 보안 문제만 해결하도록 X-Ray SDK 및 데몬 릴리스를 제한합니다. 지원 일정에 대한 자세한 내용은 [X-Ray SDK 및 데몬 지원 타임라인](xray-sdk-daemon-timeline.md) 섹션을 참조하세요. OpenTelemetry로 마이그레이션하는 것이 좋습니다. OpenTelemetry로 마이그레이션하는 방법에 대한 자세한 내용은 [X-Ray 계측에서 OpenTelemetry 계측으로 마이그레이션](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)을 참조하세요.

Java용 X-Ray DSK가 수신 요청에 대한 세그먼트를 자동으로 생성합니다. 요청이 범위 내에 있을 때에는 문제 없이 구성된 클라이언트를 사용하고 하위 세그먼트를 레코딩할 수 있습니다. 계측된 클라이언트를 시작 코드에서 사용하려는 경우 [SegmentNotFoundException](https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/exceptions/SegmentNotFoundException.html)이 발생합니다.

시작 코드는 웹 애플리케이션의 표준 요청/응답 흐름 외부에서 실행되므로 시작 코드를 구성하려면 세그먼트를 수동으로 생성해야 합니다. Scorekeep이 해당 `WebConfig` 파일에서 시작 코드의 구성을 표시합니다. Scorekeep이 시작 중에 SQL 데이터베이스와 Amazon SNS를 호출합니다.

![\[Diagram showing client requests to Scorekeeper-init, which connects to SQL database and SNS.\]](http://docs.aws.amazon.com/ko_kr/xray/latest/devguide/images/scorekeep-servicemap-init.png)


기본 `WebConfig` 클래스가 알림을 위한 Amazon SNS 구독을 생성합니다. Amazon SNS 클라이언트가 사용될 때 X-Ray SDK가 기록할 세그먼트를 제공하기 위해 Scorekeep이 전역 레코더에서 `beginSegment` 및 `endSegment`를 호출합니다.

**Example [https://github.com/awslabs/eb-java-scorekeep/tree/xray/src/main/java/scorekeep/WebConfig.java#L49](https://github.com/awslabs/eb-java-scorekeep/tree/xray/src/main/java/scorekeep/WebConfig.java#L49) - 시작 코드의 계측된 AWS SDK 클라이언트**  

```
AWSXRay.beginSegment("Scorekeep-init");
if ( System.getenv("NOTIFICATION_EMAIL") != null ){
  try { Sns.createSubscription(); }
  catch (Exception e ) {
    logger.warn("Failed to create subscription for email "+  System.getenv("NOTIFICATION_EMAIL"));
  }
}
AWSXRay.endSegment();
```

Amazon RDS 데이터베이스가 연결되어 있을 때 Scorekeep이 사용하는 `RdsWebConfig`에서는 구성이 시작 중에 데이터베이스 스키마를 적용할 때 Hibernate가 사용하는 SQL 클라이언트에 대한 세그먼트도 생성합니다.

**Example [https://github.com/awslabs/eb-java-scorekeep/tree/xray/src/main/java/scorekeep/RdsWebConfig.java#L83](https://github.com/awslabs/eb-java-scorekeep/tree/xray/src/main/java/scorekeep/RdsWebConfig.java#L83) — 시작 코드에 계측된 SQL 데이터베이스 클라이언트**  

```
@PostConstruct
public void schemaExport() {
  EntityManagerFactoryImpl entityManagerFactoryImpl = (EntityManagerFactoryImpl) localContainerEntityManagerFactoryBean.getNativeEntityManagerFactory();
  SessionFactoryImplementor sessionFactoryImplementor = entityManagerFactoryImpl.getSessionFactory();
  StandardServiceRegistry standardServiceRegistry = sessionFactoryImplementor.getSessionFactoryOptions().getServiceRegistry();
  MetadataSources metadataSources = new MetadataSources(new BootstrapServiceRegistryBuilder().build());
  metadataSources.addAnnotatedClass(GameHistory.class);
  MetadataImplementor metadataImplementor = (MetadataImplementor) metadataSources.buildMetadata(standardServiceRegistry);
  SchemaExport schemaExport = new SchemaExport(standardServiceRegistry, metadataImplementor);

  AWSXRay.beginSegment("Scorekeep-init");
  schemaExport.create(true, true);
  AWSXRay.endSegment();
}
```

`SchemaExport`가 자동으로 실행되고 SQL 클라이언트가 사용됩니다. 클라언트가 구성되었으므로 Scorekeep이 기본 구현을 재정의하고 클라이언트가 호출될 때 SDK에서 사용할 세그먼트를 제공해야 합니다.