스크라우츠(Skroutz)의 실시간 스키마 자동화: Amazon Redshift와 Debezium 활용 가이드
도입
데이터 중심의 디지털 환경에서 서비스와 제품의 변화는 빈번하게 일어납니다. 이러한 변화는 데이터베이스 스키마에도 반영되어야 하며, 특히 대규모 운영 환경에서는 실시간으로 처리되어야 합니다. 스크라우츠는 이러한 과제를 해결하기 위해 Amazon Redshift와 Debezium을 기반으로 데이터 웨어하우스에 영향을 주지 않는 실시간 스키마 변경 흐름을 구축했습니다. 이번 글에서는 Debezium, Kafka, Redshift를 결합한 자동화된 CDC(Change Data Capture) 기반 스키마 진화 구조에 대해 소개합니다.
본론
- 실시간 스키마 진화가 필요한 이유
스크라우츠는 수많은 사용자가 활용하는 제품 정보 기반의 전자상거래 플랫폼으로, 기능 개선을 위한 지속적인 개발이 이루어지고 있습니다. 이에 따라 운영 중인 데이터베이스(MySQL, MongoDB 등)의 스키마 변경이 자주 발생하며, 이를 데이터 분석 플랫폼인 Amazon Redshift에도 반영해야 합니다. 기존에는 스키마 변경 시 개발자 간 조율이 필요해 배포 지연, 데이터 유실 우려가 있었으며, 이는 운영 효율성 저하로 이어질 수 있었습니다.
- Debezium 기반 CDC 아키텍처
스크라우츠는 Debezium과 Kafka를 활용한 CDC 기반 구조를 가동시켜 이 문제를 해결했습니다. Debezium은 운영 데이터베이스의 변경 사항을 Kafka로 실시간 스트리밍하고, Kafka Consumer는 이를 Amazon S3 또는 Redshift Staging 테이블로 적재합니다.
Redshift에서는 SCD(Slowly Changing Dimension) Type 7 접근 방식을 적용해 변경 이력을 유지하며 데이터를 전환합니다.
- 새로운 컬럼 대응 방식: JSON 기반 임시 처리
운영 DB 테이블에 새로운 컬럼이 추가되면, Kafka Consumer는 기존 테이블에 컬럼이 없는 경우라도 이를 JSON 형태로 dw_md_missing_data라는 SUPER 타입 칼럼에 저장합니다. 이는 구조화되지 않은 데이터를 반영하며, 이후 수동으로 정규 컬럼으로 변환 가능합니다.
예시로 신규 shop 엔티티가 추가될 때의 Redshift 삽입 SQL은 다음과 같습니다.
INSERT INTO staging.shops (
id,
"name",
state,
dw_md_changed_at,
dw_md_operation,
dw_md_missing_data
)
VALUES
(
1,
'shop1',
'hidden',
'2024-01-01 15:00:00',
'update',
JSON_PARSE('{"new_column": "new_value"}')
)
;
슈퍼타입 컬럼 활용 시, 데이터 유실 없이 실시간 데이터 흐름을 보장할 수 있으며 기존 개발팀과의 조율 없이 새로운 데이터 처리가 가능합니다.
- Redshift 내 프로덕션 테이블 정형화 처리
데이터가 프로덕션 테이블로 승격되면 아래와 같이 변경 이력, 생성일, 최신 여부 등의 메타데이터를 함께 저장합니다.
기존 스키마가 달라진 경우에도 분석 환경의 일관성을 유지할 수 있도록 설계된 구조입니다.
- 모니터링 및 수동 처리 가이드
스크라우츠는 매주 스케줄 기반으로 Redshift의 dw_md_missing_data 컬럼 값을 점검하는 운영 자동화를 구축해, 수동 조치가 필요한 테이블을 알림 형태로 팀에 전달합니다. 이 후 수동 리소스를 통해 다음 단계를 수행합니다.
- staging 및 production 테이블에 신규 컬럼 추가
- Kafka Consumer 및 DataLoader에 신규 컬럼 반영
- SUPER 컬럼 내 임시 데이터 → 정규 컬럼 이동 처리
- dw_md_missing_data 컬럼 초기화
이러한 정제 프로세스는 데이터 소비자(분석가 등)가 보다 명확하게 데이터를 활용할 수 있도록 돕습니다.
- 향후 자동화 고도화: Redshift Streaming Ingestion
스크라우츠는 향후 구조 고도화를 위해 Amazon Redshift의 Streaming Ingestion 기능을 활용할 계획입니다. 이는 MSK(Amazon Managed Kafka) 또는 오픈 소스 Kafka로부터 직접 스트리밍 데이터를 Redshift에 인제스트함으로써, 지연시간을 줄이고 대용량 실시간 분석을 가능하게 할 것입니다.
결론
스크라우츠의 사례는 운영 데이터베이스의 실시간 스키마 변화에 효과적으로 대응하여 데이터 웨어하우스 자동화, 유연성, 분석 일관성을 동시에 달성한 대표적인 구축 사례입니다. Debezium과 Kafka, Amazon Redshift를 연계한 CDC 기반 구조는 분석 데이터를 실시간으로 활용하고 싶은 모든 조직에게 유용한 전략이 될 수 있습니다. 대규모 시스템에서 실시간 스키마 진화에 직면한 팀이라면, 이와 같은 하이브리드 구조 및 자동화 방식 점검을 권장합니다.
AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!
(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기