이 출시 체크리스트에서는 Spanner에서 프로덕션 애플리케이션을 출시하기 전에 고려해야 할 사항의 목록을 제공합니다. 모든 내용을 다루지는 않지만 프로덕션 성능에 큰 영향을 줄 수 있는 영역을 강조하여 알려 드립니다.
적합한 인스턴스 구성 선택
필요에 맞는 인스턴스 구성(리전 및 멀티 리전)을 선택합니다.
멀티 리전 인스턴스 유형을 선택하는 경우 Spanner에 액세스하는 애플리케이션이 최적 리전에 근접해야 합니다. 자세한 내용은 인스턴스 페이지를 참조하세요.
규모에 맞춘 성능을 위한 스키마 설계
Spanner의 관계형 데이터 스키마는 기존 관계형 데이터베이스와 비슷하지만 몇 가지 고려해야 하는 사항이 있습니다.
- 해당하는 경우 외래 키 관계 대신 인터리브 처리된 테이블을 사용합니다.
- 부하 집중을 방지하는 기본 키를 선택합니다.
- 보조 색인이 부하 집중을 발생시키지 않도록 합니다(기본 키 부하 집중과 유사).
- 필요에 따라 보조 색인을 만들고 관련 열을 저장합니다.
- 행 크기를 제한합니다.
성능 요인 파악
자동 샤딩과 이후에 분할로 저장되는 데이터를 사용하면 쿼리가 더 세부적으로 표적화될수록 성능이 향상됩니다. 하나의 인터리브 처리된 상위 요소와 그 모든 하위 요소로 범위를 좁히면 여러 행에 영향을 미치는 쿼리 또는 작업보다 성능이 향상됩니다.
출시 전에 문제와 병목 현상을 알아낼 수 있도록 규모에 맞게 벤치마킹 및 테스트해 보는 것이 좋습니다. Spanner에서는 스키마 설계 중에 테이블과 함께 사용할 수 있는 쿼리 실행 계획을 제공하므로 쿼리가 어떻게 수행되는지 파악할 수 있습니다.
고려해야 할 기타 성능 요소:
- 데이터를 쓰지 않을 때는 비용이 더 많이 드는 읽기-쓰기 트랜잭션 대신 읽기 전용 트랜잭션을 사용합니다.
- 트랜잭션에서 분할 참여자 수를 최소화하도록 애플리케이션을 설계합니다. Spanner는 서로 다른 서버의 전체 행에서 트랜잭션을 수행할 수 있습니다. 그러나 경험에 비추어 볼 때 같은 위치에 있는 여러 행에 영향을 미치는 트랜잭션이 데이터베이스 전체나 큰 테이블 전체에 분산된 많은 행에 영향을 미치는 트랜잭션보다 빠르고 경제적입니다.
- 문자열 리터럴 대신 쿼리 매개변수를 사용하여 쿼리 성능 및 통계 모니터링을 개선합니다.
한도 및 할당량 확인
아키텍처상의 이유로 그리고 높은 성능과 중복성을 유지하기 위해 Spanner에는 애플리케이션 설계에서 고려해야 하는 특정 할당량 및 한도가 있습니다. 할당량은 리드 타임으로 늘릴 수 있습니다.
예를 들어 커밋당 변형 80,000개, 쿼리당 조인 최대 15개의 한도가 있습니다.
이러한 한도는 스키마 설계 및 부하 집중 방지와 함께 일괄 로드에 영향을 미치므로 일괄 로드 권장사항을 따르세요.
모니터링이 사용되는지 확인
Cloud Monitoring을 설정하여 한도에 도달하면 알림을 보내도록 합니다.
Spanner 인스턴스의 선형 확장을 위해 성능 측정항목에 도달하면 컴퓨팅 용량을 늘립니다. 리전별 인스턴스의 경우 CPU 사용률을 65% 미만, 멀티 리전 인스턴스의 경우 45% 미만으로 유지하는 것이 좋습니다.
데이터베이스 쿼리 페이지에서 쿼리 템플릿을 사용하여 쿼리 통계 테이블에서 쿼리 통계를 모니터링합니다.
데이터 마이그레이션 전략(필요한 경우)
Spanner로 데이터를 일괄 로드하려면 분산 아키텍처를 고려하여 성능을 유지해야 합니다.
- 기본 키로 데이터 파티션 나누기
- 푸시백 방지 및 CPU 사용률 모니터링
- 일반적으로 데이터를 로드한 후 보조 색인을 생성하는 것이 더 빠릅니다.
이 블로그 게시물에서는 처리량이 높은 쓰기를 구현하는 좋은 예시를 보여줍니다.
보안 구성이 적용되었는지 확인
데이터베이스 및 인스턴스 수준에서 보안을 관리하도록 관련 IAM 역할을 설정합니다. 테이블 수준 보안은 애플리케이션 내에서 관리해야 합니다.
지원 옵션 이해
지원을 받기 위한 전략이 있는지 확인합니다.