본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 15. 12:31

Launch HN: Data Mechanics (YC S19) – Apache Spark를 실행하는 가장 간단한 방법

요약

Data Mechanics는 Apache Spark의 복잡한 인프라 관리, 배포, 운영 문제를 해결하는 빅데이터 플랫폼입니다. 이 플랫폼은 자동 튜닝(automated tuning) 기능을 통해 Spark 설정을 최적화하고, 사용자가 핵심 로직 개발에만 집중할 수 있도록 지원합니다. 또한 Jupyter notebook, Airflow 등 기존의 데이터 스택 도구들과 통합되며, Kubernetes 기반 배포를 통해 높은 유연성과 안정성을 제공하여 엔드투엔드 워크플로우 구축을 용이하게 합니다.

핵심 포인트

  • Data Mechanics는 Spark 애플리케이션의 인프라 관리 및 운영 복잡성(YARN, JVM 등)을 자동화합니다.
  • 베이지안 최적화 알고리즘을 사용하여 메모리, CPU 할당, 병렬성 등의 핵심 파라미터를 자동으로 튜닝하여 성능과 안정성을 유지합니다.
  • Jupyter notebook, Airflow 스케줄러 등 기존의 인기 있는 데이터 스택 도구들과 원활하게 통합됩니다.
  • Spark를 Kubernetes 상에 직접 배포함으로써 Docker 이미지 사용 및 k8s 생태계의 이점을 활용하며 복잡성은 사용자로부터 숨깁니다.
  • AWS, GCP, Azure 등 주요 클라우드 환경에서 사용할 수 있으며 ETL 파이프라인 구축에 강점을 보입니다.

안녕하세요 HN,

저희는 Apache Spark를 실행하는 가장 간단한 방법을 제공하기 위해 노력하는 빅데이터 플랫폼, Data Mechanics (https://www.datamechanics.co)의 공동 창업자 JY와 Julien입니다.

Apache Spark는 오픈 소스 분산 컴퓨팅 엔진 (distributed computing engine)입니다. 빅데이터 분야에서 가장 많이 사용되는 기술입니다. 첫째, 속도가 빠르기 때문입니다 (Hadoop MapReduce보다 10~100배 빠름). 둘째, Scala, Python, SQL, R에서 간단하고 수준 높은 API를 제공하기 때문입니다. 데이터 과학자(data scientists)와 엔지니어(engineers)들은 단 몇 줄의 코드로 매우 큰 데이터셋(10GB에서 PB 단위까지)에 대해 데이터를 탐색하고, 머신러닝 (machine learning) 모델을 학습시키며, 배치(batch) 또는 스트리밍(streaming) 파이프라인을 구축할 수 있습니다.

Spark 애플리케이션을 작성하는 것은 꽤 쉽지만, 그 인프라를 관리하고, 배포하며, 시간이 지나도 운영 환경에서 성능과 안정성을 유지하는 것은 어렵습니다. Apache Spark가 내부적으로 어떻게 작동하는지 배워야 하고, YARN과 JVM의 전문가가 되어야 하며, 수십 개의 인프라 파라미터와 Spark 설정을 수동으로 선택해야 하고, 앱을 개발, 디버깅 및 운영화(productionize)하는 과정에서 고통스러울 정도로 느린 반복 주기 (iteration cycles)를 거쳐야 합니다.

짐작하시겠지만, Data Mechanics를 시작하기 전 저희는 좌절감을 느끼던 Spark 개발자들이었습니다. Julien은 BlaBlaCar와 ContentSquare의 데이터 과학자이자 데이터 엔지니어였습니다. JY는 Spark의 창시자들이 설립한 데이터 과학 플랫폼인 Databricks의 Spark 인프라 팀장이었습니다. 저희는 동료 데이터 과학자들과 엔지니어들이 플랫폼이 기계적인 DevOps 작업을 처리하는 동안, 그들의 핵심 임무인 모델 및 파이프라인 구축에 집중할 수 있도록 Data Mechanics를 설계했습니다.

이 목표를 실현하기 위해, 우리는 인프라 파라미터(infrastructure parameters)와 Spark 설정을 자동으로 조정할 수 있는 방법이 필요했습니다. 수십 개의 파라미터가 존재하지만, 가장 중요한 것은 각 노드에 할당된 메모리 및 CPU의 양, Spark의 병렬성(parallelism) 정도, 그리고 Spark가 모든 노드 간 데이터 전송 단계(shuffle이라고 불림)를 처리하는 방식입니다. 이러한 파라미터들을 수동으로 조정하려면 많은 전문 지식과 시행착오(trial-and-error) 과정이 필요합니다. 이를 자동으로 수행하기 위해, 우리는 먼저 Spark에서 생성된 로그와 메타데이터를 애플리케이션이 안정적이고 성능이 좋은지 판단하는 일련의 휴리스틱(heuristics)에 통과시킵니다. 베이지안 최적화(Bayesian optimization) 알고리즘은 이 분석 결과와 최근 실행 데이터들을 사용하여 다음 실행 시 사용할 파라미터 세트를 선택합니다. 이것이 완벽하지는 않습니다. 엔지니어가 하는 것처럼 몇 번의 반복(iterations)이 필요합니다. 하지만 플랫폼에서 실행되는 각 애플리케이션에 대해 이 작업이 자동으로 수행되기 때문에(엔지니어가 직접 하기에는 너무 시간이 많이 걸리는 작업입니다) 그 영향은 매우 큽니다. 입력 데이터가 시간이 지남에 따라 증가하면서 애플리케이션이 점진적으로 불안정해지는 사례를 들어보겠습니다. 저희가 없다면, 애플리케이션은 어느 날 갑자기 충돌(crash)할 것이고, 엔지니어는 장애의 영향을 복구하고 앱을 디버깅(debugging)하는 데 하루를 소비해야 합니다. 저희 플랫폼은 종종 이러한 장애를 미리 예측하고 완전히 방지할 수 있습니다.

우리가 차별화되는 또 다른 방식은 데이터 스택(data stack)의 인기 있는 도구들과 통합된다는 점입니다. 엔터프라이즈 데이터 사이언스 플랫폼들은 사용자들이 자신들의 전용 엔드 투 엔드(end-to-end) 솔루션 세트를 채택하기 위해 기존 도구들을 버리도록 요구하는 경향이 있습니다. 즉, 자신들이 호스팅하는 노트북, 스케줄러(scheduler), 의존성 패키징 방식 및 코드 버전 관리 방식을 사용하도록 강요합니다. 반면, 우리의 사용자들은 자신들의 Jupyter notebook, Airflow 스케줄러, 그리고 선호하는 IDE를 플랫폼에 직접 연결할 수 있습니다. 이를 통해 로컬 개발에서 플랫폼에서의 대규모 실행(running at scale)으로의 원활한 전환이 가능해집니다.

저희는 또한 Spark를 Kubernetes 상에 직접 배포합니다. 이는 최근(Spark version 2.3)까지는 불가능했던 일로, 대부분의 Spark 플랫폼은 대신 YARN 위에서 실행됩니다. 이는 사용자가 Docker 이미지에 코드 의존성(dependencies)을 패키징할 수 있고, 수많은 k8s 호환 프로젝트들(예를 들어 secrets management 및 모니터링 관련 프로젝트들)을 무료로 사용할 수 있음을 의미합니다. Kubernetes는 고유의 복잡성을 가지고 있습니다. 저희는 사용자를 대신해 관리하는 Kubernetes 클러스터 내의 사용자 클라우드 계정에 Data Mechanics를 배포함으로써 이러한 복잡성을 사용자로부터 숨깁니다. 사용자는 단순히 저희의 웹 UI와 API/CLI를 통해 상호작용하기만 하면 되며, 정말로 원하는 경우가 아니라면 Kubernetes를 직접 살펴볼 필요가 없습니다.

이 플랫폼은 AWS, GCP, Azure에서 사용할 수 있습니다. 많은 고객이 ETL 파이프라인을 위해 저희를 사용하고 있으며, 플랫폼의 사용 편의성과 자동 튜닝(automated tuning)을 통한 성능 향상을 높게 평가합니다. 저희는 기업들이 첫 번째 Spark 프로젝트를 시작할 수 있도록 돕기도 했습니다. 한 스타트업은 화학 계산을 병렬화하고 신약 발견을 가속화하기 위해 저희를 사용하고 있습니다. 이것이 저희의 궁극적인 목표입니다. 분산 데이터 처리(distributed data processing)를 모두가 접근 가능하게 만드는 것입니다.

감사합니다!

AI 자동 생성 콘텐츠

본 콘텐츠는 HN Show HN (AI)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0