dagster

2 개의 포스트

단일 노드에서 멀티 GPU (새 탭에서 열림)

Discord는 수억 명의 사용자를 지원하기 위해 머신러닝 시스템을 고도화하는 과정에서 단일 머신으로는 감당할 수 없는 확장성 한계에 직면했습니다. 이를 해결하기 위해 오픈소스 분산 컴퓨팅 프레임워크인 Ray를 도입하고, 개발자 경험(DX)에 최적화된 맞춤형 오케스트레이션 플랫폼을 성공적으로 구축했습니다. 결과적으로 분산 학습의 복잡성을 낮춤으로써 광고 랭킹 모델의 비즈니스 지표를 200% 이상 향상시키는 등의 기술적 도약을 이뤄냈습니다. ### 머신러닝 확장의 한계와 분산 컴퓨팅의 필요성 * 모델이 정교해지고 데이터셋이 거대해짐에 따라 단일 GPU나 개별 장비로는 학습을 진행할 수 없는 병목 현상이 발생했습니다. * 인프라의 성장 속도보다 계산 리소스에 대한 요구치가 더 빠르게 증가하면서, 단순한 자원 추가를 넘어선 근본적인 분산 컴퓨팅 환경으로의 전환이 필수적이었습니다. ### Ray 기반의 맞춤형 ML 플랫폼 구축 * 분산 컴퓨팅 프레임워크인 Ray를 핵심 기반으로 삼아, 개발자가 복잡한 분산 환경을 의식하지 않고 작업할 수 있는 플랫폼을 개발했습니다. * 워크플로우 관리를 위해 Dagster와 KubeRay를 결합한 오케스트레이션 시스템을 구축하였으며, 자체 CLI 도구를 제공하여 개발 편의성을 극대화했습니다. * 시스템의 투명성을 높이기 위해 'X-Ray'라는 별도의 가시성(Observability) 레이어를 도입하여 모니터링 환경을 강화했습니다. ### 플랫폼 고도화가 가져온 비즈니스 성과 * 딥러닝 도입 초기 단계의 혼란을 극복하고, 실험 중심에서 체계적인 프로덕션 오케스트레이션 단계로 진화했습니다. * 구축된 플랫폼을 통해 광고 랭킹(Ads Ranking) 모델 등을 최적화한 결과, 비즈니스 지표에서 200% 이상의 성능 개선을 달성하며 분산 ML 플랫폼의 실효성을 입증했습니다. 성공적인 머신러닝 확장을 위해서는 분산 컴퓨팅의 기술적 도입만큼이나 개발자가 이를 쉽게 활용할 수 있도록 돕는 플랫폼 아키텍처와 도구(CLI, 오케스트레이션, 모니터링)의 통합이 필수적입니다. 단순히 강력한 인프라를 구축하는 것을 넘어, 분산 학습 환경을 표준화하고 자동화하여 개발자의 생산성을 높이는 데 집중해야 합니다.

dbt 오버클러킹 (새 탭에서 열림)

디스코드는 2,500개 이상의 데이터 모델과 100명 이상의 개발자가 협업하는 페타바이트급 데이터 환경을 관리하기 위해, dbt의 기본 기능을 넘어선 커스텀 확장 시스템을 구축했습니다. 초기 도입 시에는 20분이 넘는 컴파일 시간과 개발자 간의 작업 충돌 등 확장성 한계에 부딪혔으나, 이를 자동화된 백필(Backfill)과 생산성 도구로 해결하며 견고한 데이터 분석 기반을 마련했습니다. 이 사례는 대규모 데이터 웨어하우스 환경에서 dbt를 효율적으로 확장하려는 기업들을 위한 기술적 청사진을 제시합니다. ### dbt 선정 배경과 주요 장점 * **엔지니어링 철학과의 일치:** 오픈 소스를 지향하고 엔지니어링의 유연성과 투명성을 중시하는 디스코드의 철학에 따라 dbt를 채택했습니다. * **도구 간 통합 및 모듈화:** 오케스트레이터인 Dagster와의 원활한 통합은 물론, SQL 기반의 모듈식 설계를 통해 코드 재사용성과 유지보수성을 확보했습니다. * **품질 관리:** 데이터 품질을 보장할 수 있는 포괄적인 테스트 프레임워크를 활용하여 신뢰할 수 있는 데이터 변환 프로세스를 구축했습니다. ### 대규모 데이터 환경에서의 한계점 * **긴 컴파일 대기 시간:** 프로젝트 규모가 커짐에 따라 전체 프로젝트를 재컴파일하는 데 20분 이상이 소요되어 개발 생산성이 급격히 저하되었습니다. * **증분 전략의 비효율성:** dbt가 기본적으로 제공하는 증분(Incremental) 구체화 전략은 디스코드의 페타바이트급 데이터 볼륨을 처리하기에 최적화되어 있지 않았습니다. * **동시성 충돌 문제:** 여러 개발자가 동시에 작업하는 과정에서 서로의 테스트 테이블을 덮어쓰는 등 협업상의 혼선과 자원 낭비가 발생했습니다. ### 확장성을 위한 커스텀 최적화 전략 * **성능 중심의 코어 확장:** dbt의 표준 기능을 확장하여 대규모 조직에 적합한 커스텀 시스템을 구축함으로써 개발 사이클을 획기적으로 단축했습니다. * **자동화된 백필 시스템:** 수동 개입이 많이 필요한 복잡한 데이터 백필 과정을 자동화하여 운영 리소스를 절감하고 데이터의 정합성을 높였습니다. * **플랫폼 독립적 설계:** Google BigQuery를 사용하면서도 특정 클라우드 제공업체에 종속되지 않는(Provider-agnostic) 구조를 취해 범용적인 적용이 가능하도록 설계했습니다. 디스코드의 이러한 시도는 단순한 도구 도입을 넘어, 대규모 데이터 스택을 운용할 때 발생하는 병목 현상을 엔지니어링 기반의 커스텀 솔루션으로 해결할 수 있음을 보여줍니다. 데이터 규모가 급격히 성장하는 조직이라면 dbt의 기본 기능에만 의존하기보다, 자사의 인프라에 맞춘 자동화와 확장 도구를 결합하는 전략이 필수적입니다.