목록 보기
점점 커지는 RDB Table, S3로 귀양 보내고 Athena로 불러오기 - feat. Optimization with Spark Bucketing
백엔드

점점 커지는 RDB Table, S3로 귀양 보내고 Athena로 불러오기 - feat. Optimization with Spark Bucketing

뱅크샐러드
뱅크샐러드
2023년 6월 8일

두줄요약

MySQL 이력 데이터를 S3·Athena 구조로 옮기며 발생한 객체 호출 비용 문제를 분석했습니다. user id 버케팅과 일별 파티션으로 Athena 비용을 약 700배 줄였습니다.

문제 상황

  • 마이데이터 이벤트 로그 누적으로 인한 MySQL 테이블 크기와 저장 비용 증가
  • 사용자별 1년치 데이터를 Athena로 조회하면서 광범위한 S3 Object 스캔과 호출 비용 발생

구조와 흐름

  • MySQL 직접 조회 구조에서 Kafka 이벤트 발행, Spark 적재, S3 Parquet 저장, Athena 조회 구조로 전환
  • 날짜·시간 파티션을 일별 파티션으로 변경하고 user id 기반 버케팅 적용
  • Athena CTAS로 Spark 버케팅 형식 호환 문제를 우회하는 임시 테이블·파티션 교체 절차 구성

선택 이유

  • 저렴한 S3 저장소 활용과 Athena의 서비스 조회 안정성 고려
  • 특정 user id 조회 패턴과 높은 카디널리티에 적합한 user id 버케팅 키 선택

성능/운영 포인트

  • 버켓 키와 버킷 수 기반 repartition으로 Spark Executor별 중복 파일 생성을 억제
  • CloudTrail 로그를 Athena로 조회해 S3 GetObject 호출 수 확인
  • 버케팅·일별 파티션 적용 후 Athena 호출 비용 약 700배 절감

다음 읽기

#S3 주제를 이어서 읽기

점점 커지는 RDB Table, S3로 귀양 보내고 Athena로 불러오기 - feat. Optimization with Spark Bucketing

이력성 데이터 증가로 MySQL 부담이 커져 S3와 Athena로 저장·조회 구조를 옮긴 사례를 다뤘습니다. Spark bucketing으로 필요한 데이터만 읽도록 최적화하는 흐름을 소개했습니다.

뱅크샐러드
뱅크샐러드
백엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...