피드로 돌아가기
From 2 AM Failures to 10x Speed: How We Escaped the Stored Procedure Prison
Dev.toDev.to
Database

SAP HANA Stored Procedure 제거 및 PySpark 전환으로 ETL 속도 10배 향상 및 비용 82% 절감

From 2 AM Failures to 10x Speed: How We Escaped the Stored Procedure Prison

Naveen Ayalla2026년 6월 6일5advanced

Context

7년간 누적된 200여 개의 중첩 Stored Procedure로 인한 블랙박스 로직 심화 및 유지보수 불능 상태. Vertical Scaling 기반의 SAP HANA 구조로 인해 피크 타임 부하 처리 시 과도한 비용 발생 및 잦은 타임아웃 장애 발생.

Technical Solution

  • Row-by-row 방식의 Cursor 처리를 PySpark의 Set-based Operation으로 전환하여 분산 처리 구조 설계
  • 중첩된 Row 계산 로직을 Window Functions로 대체하여 Execution Plan 최적화 및 Predicate Pushdown 유도
  • Recursive CTE 기반의 계층 구조를 GraphFrames로 마이그레이션하여 탐색 효율성 개선
  • 고카디널리티 컬럼인 order_year 기반의 Partitioning 전략 수립을 통한 데이터 스캔 범위 80% 축소
  • Delta Time Travel 도입을 통한 데이터 상태 복구 및 디버깅 프로세스 최적화
  • CI/CD 및 Git Version Control 도입으로 SQLScript 기반의 폐쇄적 개발 환경을 플랫폼 중심 개발 체계로 전환

Impact

  • 전체 야간 ETL 실행 시간: 5시간 23분 $\rightarrow$ 28분으로 단축
  • 특정 복잡 프로시저 성능: 94분 $\rightarrow$ 6분 (15.6배 향상)
  • 월간 컴퓨팅 비용: $18,500 $\rightarrow$ $3,200 (82% 절감)
  • 연간 총 비용: 약 $220,000 $\rightarrow$ $38,000으로 감소

Key Takeaway

특정 벤더 종속적인 Stored Procedure의 비즈니스 로직을 분산 처리 프레임워크로 이관함으로써 Vertical Scaling의 물리적 한계를 극복하고 운영 탄력성을 확보함.


- SAP HANA에서 PySpark 전환 시 NULL Aggregation 처리 방식의 차이점 검증 - 재무 데이터 처리 시 Decimal Precision 유지를 위한 Schema 레벨의 명시적 Casting 적용 - Stored Procedure 내부의 Side Effect(범위 외 데이터 수정) 로직 전수 조사 및 functional model로 재설계 - Auto-partitioning에 의존하지 않고 쿼리 패턴에 최적화된 Partition Key 선정

원문 읽기