핵심 요약
토스는 Spark Connect 서버의 생애주기를 Apache Spark Operator와 Spark Tenant Operator로 이중 관리하고, Blue-Green 교체와 drain 절차로 신규 세션 전환과 기존 세션 종료를 안전하게 수행하도록 구성했습니다.
구현 방법
- 두 계층의 역할 분리: Driver/Executor 관리는 Spark Operator, 다수 SparkApplication 관리 및 교체는 Spark Tenant Operator
- Blue-Green 전환으로 신규 세션을 새 generation에 보내고 기존 서버는 drain으로 정리
- readiness probe를 분리하여 Driver Ready와 Connect 수용 준비를 독립적으로 확인하고 Driver Pod IP 우회를 적용
주요 결과
- 20개 이상 테넌트와 수천 vCPU 규모의 운영 확장성과 안정성 확보
- MALLOC_ARENA_MAX=2 도입으로 초기 메모리 증가를 억제, 72시간 관측 시 9.06 GiB 유지
- 최대 자원 정책(최소 4 or cores) 적용으로 Driver/Executor의 안정성 강화


