Spark 운영은 단순히 변환 작업과 비즈니스 로직을 작성하는 것만으로 끝나지 않습니다. 클러스터 튜닝, 인프라 패치, 종속성 환경까지 관리해야 합니다.
이러한 워크로드를 Snowflake로 이전하면 이러한 운영 부담을 크게 줄일 수 있습니다. 실제로 고객들은 최대 5.1배의 성능 개선과 42%의 비용 절감을 경험하고 있습니다1. Snowpark Connect for Apache Spark™를 사용하면 기존 Spark 코드를 거의 수정하지 않고도 Snowflake 엔진에서 그대로 실행할 수 있으며 클러스터를 프로비저닝하거나 튜닝하고 패치할 필요도 없습니다.
하지만 대부분의 범용 AI 코딩 어시스턴트는 대규모 마이그레이션을 수행하는 데 한계가 있습니다. 코드 조각을 다시 작성할 수는 있지만, 전체 코드베이스를 새 엔진으로 이전하는 데 필요한 호환성 컨텍스트가 부족합니다. 어떤 패턴이 지원되지 않는지, 이를 DataFrame 기반 구현으로 어떻게 변환해야 하는지, 변경 사항을 어떻게 기록해야 하는지까지는 파악하기 어렵습니다. 데이터 네이티브 AI 코딩 에이전트인 Snowflake CoCo의 spark-migration 스킬은 바로 이 격차를 해소하도록 설계되었습니다.
하나의 프롬프트, 하나의 코드베이스
이 스킬을 이해하는 가장 쉬운 방법은 실제 동작 과정을 살펴보는 것입니다. 아래 데모는 PySpark로 작성된 데이터 파이프라인 디렉터리에서 시작합니다.
이후에는 간단한 프롬프트만 입력하면 됩니다. CoCo에 파일 하나 또는 파일 디렉터리를 Snowpark Connect로 마이그레이션해 달라고 요청하기만 하면 됩니다. 그러면 spark-migration 스킬이 실행되어 snowpark-connect 마이그레이션 경로를 조율하고, Spark 코드가 Snowpark Connect와 호환되도록 단계별로 안내합니다. 이 스킬의 입력으로는 Python, Scala, Java 코드 파일은 물론 빌드 파일도 사용할 수 있습니다. 또한 노트북 파일도 입력으로 받아 Snowflake와 호환되도록 변환할 수 있습니다.
데모에서는 하나의 프롬프트만으로 대규모 Spark 코드베이스의 호환성을 검사하고 Snowflake로 마이그레이션하는 과정을 보여줍니다.
자료 1: 하나의 대화형 프롬프트로 PySpark 파이프라인 디렉터리를 스캔하고, 코드를 재작성하고, 결과를 보고하는 과정
CoCo로 PySpark를 Snowflake로 마이그레이션하는 방법
CoCo의 에이전트형 워크플로우는 단 하나의 프롬프트 뒤에서 숙련된 마이그레이션 전문가가 수행하는 것과 같은 단계들을 순차적으로 실행합니다.
- 평가를 수행하고 인벤토리를 구축합니다. 이 스킬은 Snowflake 엔지니어링 팀이 구축한 지식 기반을 참조해 모든 소스 파일에서 RDD 작업, 특정 UDF 직렬화 패턴, 지원되지 않는 파일 형식 등 호환성 문제를 스캔합니다. 또한 각 파일과 종속성, 고유 API 호출을 모두 인벤토리로 정리합니다.
- 대상별 수정 사항을 적용합니다. 핵심 변환 작업은 병렬 에이전트를 디스패치해 코드 수정 사항을 적용하고, 구문 컴파일과 증거 기반 검사를 포함한 여러 게이트를 통해 결과를 검증하는 방식으로 수행됩니다. 이 단계에서는 호환되지 않는 패턴을 DataFrame 기반 구현으로 변환되고, import 구문과 세션 생성 코드도 업데이트됩니다. 또한 읽기 및 쓰기 로직 검증처럼 수동 검토가 필요한 항목에는 자세한 설명과 함께 플래그를 표시합니다.
- 사람과 에이전트가 모두 활용할 수 있는 예측 가능한 보고서를 생성합니다. 이슈 로그, 인벤토리 보고서, 전체 마이그레이션 상태 검증 결과를 생성해 적용된 모든 변경 사항과 추가 확인이 필요한 항목에 대한 완전한 가시성을 제공합니다.
- 변환된 코드의 기능을 검증합니다. 검증 단계에서는 원본 PySpark 코드와 마이그레이션된 Snowpark Connect 코드를 동일한 합성 데이터에 대해 실행하고, 결과를 테이블 단위로 비교하는 엔드투엔드 검증을 수행합니다. 이를 통해 코드 동작상의 차이를 포착하고 실제 실행 가능한 상태인지 확인합니다. 검증 과정에서 수정이 필요한 사항이 발견되면 해당 내용은 제공 대상 브랜치에 자동으로 커밋되므로, 최종 결과는 단순한 통과/실패 판정에 그치지 않고, 더욱 완성도 높은 마이그레이션 결과를 제공합니다. 이 검증 단계는 선택적으로 수행할 수 있습니다.
개발자는 호환되지 않는 패턴을 찾기 위해 여러 파일을 뒤지고 문서를 일일이 대조할 필요가 없습니다. 하나의 워크플로우 안에서 작업을 이어가는 동안 CoCo가 Spark 코드를 Snowflake에서 실행하는 데 필요한 스캔, 수정, 보고 작업을 처리합니다.
파일을 넘어 코드베이스 전체로
마이그레이션이 한 번에 깔끔하게 끝나는 경우는 드뭅니다. spark-migration 스킬은 코드베이스가 어떤 상태에 있든 그에 맞춰 대응합니다. 작업을 지정하는 다른 방법도 있습니다.
- 마이그레이션 범위 미리 파악합니다. “이 코드베이스를 마이그레이션하는 데 필요한 호환성과 작업 수준을 평가해 줘.”
- 실행 전에 호환성을 검증합니다. “이 코드베이스가 Snowpark Connect에서 실행 가능한지 검증해 줘.”
- 다른 마이그레이션의 도구 결과에 이어서 작업합니다. “다른 마이그레이션 도구의 결과를 분석하고 마이그레이션을 완료해 줘.”
이 스킬은 Spark, PySpark 또는 코드 마이그레이션을 언급하면 자동으로 활성화됩니다. 또는 spark-migration을 사용해 직접 호출할 수도 있습니다. 앞서 설명한 것처럼 수동 검토가 필요한 항목은 모두 플래그로 표시하므로, 어떤 변경을 적용할지는 계속 직접 제어할 수 있습니다.
직접 체험해보기
이는 아주 매력적인 제안입니다. 수동 호환성 테스트와 리팩터링 부담을 줄이고, Spark 워크로드를 Snowflake에서 네이티브로 실행하기까지의 시간을 크게 단축할 수 있습니다. 기존의 결정론적 도구를 사용하더라도 수작업으로 몇 시간씩 걸리던 작업이 이제는 몇 분 만에 완료됩니다.
spark-migration 스킬은 CoCo에 기본 포함되어 있어 별도의 설정 없이 바로 사용할 수 있습니다.
이렇게 입력해 보세요. “이 파일을 Snowpark Connect로 마이그레이션해 줘.”
설명서를 참고해 CoCo와 Spark 마이그레이션을 시작해 보세요.
1 2022년 11월부터 2025년 5월까지 고객의 실제 프로덕션 환경과 PoC 프로젝트에서 Snowpark와 관리형 Spark 서비스의 성능 및 비용을 비교한 결과를 기반으로 합니다. 모든 결과는 실제 데이터를 활용한 고객의 실제 성과를 요약한 것이며, 벤치마크를 위해 조작된 데이터 세트를 의미하지 않습니다.


