플랫폼에서 수동 Spark 업그레이드를 제거한 방법
작성자: Justin Breese, 비자얀 프라바카란, 아미트 슈클라, Martin Grund, Stefania Leone, Chris Munson, Tatiana Romanova , Lennart Kats
Apache Spark™ 업그레이드는 결코 쉽지 않았습니다. 모든 주요 버전은 성능 개선, 버그 수정, 새로운 기능을 제공하지만 그 과정은 고통스럽습니다. 대부분의 Spark 사용자에게는 익숙한 일입니다. 워크로드가 중단되고 API가 변경되며, 개발자는 따라잡기 위해 몇 주 동안 작업을 수정해야 할 수 있습니다. 이로 인해 새로운 기능, 성능 개선, 버그 및 보안 수정 사항을 채택하는 데 훨씬 더 오랜 시간이 걸립니다.
Databricks는 이러한 마찰을 완전히 제거하고 싶었습니다. 그 결과 지속적인 업그레이드, 코드 변경 불필요, 독보적인 안정성을 제공하는 새로운 Spark 실행 방식인 Versionless Spark가 탄생했습니다. 지난 18개월 동안 Serverless Notebooks 및 Jobs를 출시한 이후, Versionless Spark는 사용자의 개입 없이 주요 Spark 버전을 포함하여 25개의 Databricks Runtime 릴리스에 걸쳐 20억 개 이상의 Spark 워크로드를 자동으로 업그레이드했습니다.
이 블로그에서는 저희가 Versionless Spark를 구축한 방법과 그 결과를 공유하고, 최근 발표된 SIGMOD 2025 논문에서 더 자세한 내용을 확인하는 방법을 알려드립니다.
원활한 업그레이드를 지원하고 Databricks 사용자의 시간을 절약하려면, 서버를 원활하게 업데이트할 수 있도록 안정적인 공개 Spark API가 필요했습니다. 이는 Spark Connect를 기반으로 하는 안정적인 버전 관리형 클라이언트 API를 통해 달성되었습니다. 이 API는 클라이언트를 Spark 서버와 분리하여 Databricks가 서버를 자동으로 업그레이드할 수 있도록 지원합니다.
Databricks 환경 버전은 Spark Connect, Python 및 pip 종속성과 같은 클라이언트 패키지를 포함하는 기본 이미지 역할을 합니다. 사용자 코드와 추가 패키지는 이 환경 위에서 실행되며(예: 클라이언트 앱1) 서버리스 Spark 서비스와 통신합니다. Databricks는 주기적으로 새로운 환경 버전을 출시하며, 각 버전은 DBR LTS와 유사하게 3년간 지원됩니다. 기본적으로 새 워크로드는 최신 버전을 사용하지만, 사용자는 원하는 경우 지원되는 이전 버전에서 계속 실행할 수 있습니다.
서버리스 Notebooks를 사용할 때 사용자는 (그림 2와 같이) 노트북의 환경(Environment) 패널에서 지원되는 환경 버전 중에서 선택할 수 있습니다. 서버리스 작업의 경우, 환경 버전은 Job API를 통해 정의됩니다.
Databricks에서 자동화된 워크로드를 실행할 때 사용자에게 빈번한 보안, 안정성, 성능 업데이트를 제공하는 것은 매우 중요합니다. 이는 특히 프로덕션 파이프라인의 경우 안정성을 저해하지 않으면서 자동으로 수행되어야 합니다. AI 기반 RSS(릴리스 안정성 시스템)는 자동화된 워크로드의 고유한 핑거프린트와 실행 메타데이터를 결합하여 새 서버 버전에서 성능이 저하된 워크로드를 감지하고 후속 실행을 자동으로 이전 서버 버전으로 되돌립니다. RSS는 여러 구성 요소를 포함합니다.

RSS가 자동화된 작업에 대해 롤백을 수행하면 워크로드는 이전에 성공했던 마지막으로 알려진 버전에서 자동으로 다시 실행됩니다. 실제 사례를 통해 RSS를 설명해 보겠습니다. 특정 자동화된 작업이 4월 9일에 DBR 버전 16.1.2를 사용하여 실행되었으나 오류가 발생했습니다. 이전 실행 기록에 따르면 해당 워크로드는 16.1.1 버전에서 며칠 연속으로 성공했습니다. ML 모델은 오류의 원인이 버그일 가능성이 높다고 판단했습니다. 그 결과, pinning 서비스에 pinning 항목이 자동으로 생성되었습니다. 워크로드가 자동으로 재시도(이 경우)를 시작했을 때 pinning 서비스 항목을 발견했고 워크로드는 16.1.1에서 다시 실행되어 성공했습니다. 이로 인해 자동 분류 프로세스가 시작되었고, Databricks 엔지니어링팀은 알림을 받고 버그를 식별하여 수정 사항을 발표했습니다. 그동안 후속 워크로드 실행은 16.1.1에 고정(pin)되어 있었습니다 버그 수정이 16.1.3에 출시될 때까지. 그리고 워크로드는 결국 16.1.3으로 릴리스되었습니다 (파란색 상자) 그리고 계속해서 성공적으로 실행되었습니다.
