View a markdown version of this page

시작 코드 구성 - AWS X-Ray

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

시작 코드 구성

참고

X-Ray SDK/데몬 유지 관리 공지 - 2026년 2월 25일에 AWS X-Ray SDKs/데몬은 유지 관리 모드로 전환되며, 여기서 AWS 는 보안 문제만 해결하도록 X-Ray SDK 및 데몬 릴리스를 제한합니다. 지원 일정에 대한 자세한 내용은 X-Ray SDK 및 데몬 지원 타임라인 섹션을 참조하세요. OpenTelemetry로 마이그레이션하는 것이 좋습니다. OpenTelemetry로 마이그레이션하는 방법에 대한 자세한 내용은 X-Ray 계측에서 OpenTelemetry 계측으로 마이그레이션을 참조하세요.

Java용 X-Ray DSK가 수신 요청에 대한 세그먼트를 자동으로 생성합니다. 요청이 범위 내에 있을 때에는 문제 없이 구성된 클라이언트를 사용하고 하위 세그먼트를 레코딩할 수 있습니다. 계측된 클라이언트를 시작 코드에서 사용하려는 경우 SegmentNotFoundException이 발생합니다.

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

SQL 데이터베이스 및 SNS에 연결되는 Scorekeep-init에 연결하는 클라이언트를 보여주는 다이어그램입니다.

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

src/main/java/scorekeep/WebConfig.java - 시작 코드의 계측된 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 클라이언트에 대한 세그먼트도 생성합니다.

src/main/java/scorekeep/RdsWebConfig.java — 시작 코드에 계측된 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에서 사용할 세그먼트를 제공해야 합니다.