오늘의집의 통합 Spark 환경 구축기: Ohouse Spark를 통한 효율적인 이미지 관리 전략
🤖 AI 추천
오늘의집의 Ohouse Spark 사례를 통해 분산된 Spark 환경 관리의 어려움을 겪고 있거나, 컨테이너 이미지 효율화 및 비용 절감 방안을 모색하는 데이터 엔지니어, 플랫폼 엔지니어, DevOps 엔지니어에게 유용한 인사이트를 제공합니다. 특히 Spark on Kubernetes 환경을 운영하며 이미지 빌드 및 배포 파이프라인 구축에 관심 있는 분들에게 추천합니다.
🔖 주요 키워드

핵심 기술: 오늘의집은 다양한 Spark 활용 환경(JupyterHub, Airflow, Kyuubi 등)에서 발생하는 Docker 이미지 파편화 및 관리 비효율성 문제를 해결하기 위해 'Ohouse Spark'라는 통합 Spark 환경을 구축했습니다. 이는 Base Image와 Derived Image로 구성된 계층적 이미지 관리 전략을 통해 가능했습니다.
기술적 세부사항:
* 문제점: 여러 팀에서 각기 다른 Spark/Python 버전, 라이브러리, 환경 설정으로 인해 이미지 관리의 복잡성 증가, 배포 및 유지보수의 어려움, EMR 이미지 사용으로 인한 불필요한 비용 발생.
* 해결 방안 - Ohouse Spark 아키텍처:
* Base Image: 실행 환경(Java/Python 버전), 클라우드 접근 라이브러리, Spark Extension, 의존성 일관성 보장 등 공통 기반 기능을 포함하여 제공. GitHub Release를 통해 패키지 현황 관리 및 Docker buildx를 활용한 멀티 플랫폼 빌드 지원.
* Derived Image: Base Image를 기반으로 각 Spark application의 비즈니스 로직 및 의존성(Python 라이브러리, 시스템 패키지)을 toml
형식의 Buildspec으로 명시하여 관리. 이를 통해 명세 기반 의존성 관리, Multi-release 관리, Layer Caching 활용.
* CI/CD 연동: Derived Image 빌드 및 배포, Airflow Variable 등록까지 Github Action을 통해 자동화. SparkSubmitOperator에서 runtime_release 필드를 통해 빌드된 릴리즈를 참조하여 Spark Job 제출.
개발 임팩트:
* 일관성 및 표준화: 모든 Spark application이 일관된 환경에서 실행되어 배포 안정성 및 재현성 향상.
* 효율적인 관리: 이미지 파편화 문제 해결 및 중앙 집중식 관리로 유지보수 용이성 증대.
* 비용 절감: EMR 제공 이미지 사용 의존성 탈피 및 자체 빌드 이미지 활용을 통한 비용 최적화.
* 개발 생산성 향상: 개발자들이 인프라 관리 부담에서 벗어나 핵심 비즈니스 로직 개발에 집중할 수 있도록 지원.
커뮤니티 반응: (원문에서 특정 커뮤니티 반응에 대한 언급은 없습니다.)