-
기존 데이터 백엔드 개발의 복잡성과 느린 속도를 해결, TypeScript나 Python으로 데이터 분석 백엔드를 빠르게 개발할 수 있게 해주는 오픈소스 프레임워크
-
기본 제공 스택(ClickHouse, Redpanda, Temporal)과 향후 다양한 클라우드 플랫폼 확장 예정
-
로컬 개발을 단순화하여 빠른 테스트와 즉각적인 핫 리로드를 지원
-
다양한 데이터 집약적 애플리케이션 구축에 적합하며, 실시간 분석, 데이터 이관, 이벤트 스트리밍 등에 활용 가능함
Moose
- Moose는 TypeScript 또는 Python 코드만으로 데이터 분석 백엔드를 구축할 수 있게 해주는 프레임워크임
- 기존 데이터 백엔드 개발 툴링이 느리고 복잡한 문제를 해결하기 위해 존재함
-
오늘날 툴링으로 분석 백엔드를 구축하는 데 걸리는 문제
-
툴 분산 문제
Kafka, ClickHouse, Postgres, dbt, Airflow 등 수많은 서비스 통합에 시간을 소모하게 됨
-
스키마 불일치 문제
코드 모델, 데이터베이스 스키마, API 검증, 메시지 포맷이 시간이 지나며 불일치하게 됨
-
개발 워크플로우의 어려움
로컬 테스트 부재, 긴 배포 주기, 잦은 컨텍스트 전환으로 개발 생산성 저하 발생
-
SQL 전용 처리
익숙한 프로그래밍 언어 대신 SQL만 사용해야 하는 불편함 존재
-
직접 구축하는 경우 발생하는 문제
- 단순한 필드 추가에도 다음 작업을 모두 수작업으로 처리해야 함
- TypeScript/Python 코드 모델 수정
- 데이터베이스 스키마 수정
- Kafka 토픽 업데이트
- 런타임 검증 업데이트
- 변환 및 쿼리 업데이트
- 매번 모든 변경을 안전하게 테스트하는 데 많은 시간과 노력이 필요함
Moose의 해결 방식
-
Moose가 제공하는 것
-
TypeScript나 Python 코드 자체가 데이터 애플리케이션 로직과 인프라의 단일 소스 역할을 함
- 코드 기반으로 다음을 보장함
- 완전한 타입 안전성과 검증
- 보일러플레이트 코드 제거
- 개발 단계에서 오류 사전 발견
-
컨텍스트 전환 제거
- 데이터베이스 테이블 명명 규칙, 모델/테이블 필드 동기화 여부, 필드 Nullable 여부 등을 고민할 필요 없음
-
로컬 개발
-
원클릭 실행
단 하나의 명령어로 전체 데이터 인프라를 로컬에 실행 가능함
-
제로 설정
모든 컴포넌트가 미리 구성되어 있어 별도 세팅 불필요함
-
프로덕션 환경과 동일한 구조
실제 배포 환경과 동일한 기술 스택 사용
-
실시간 피드백
변경 사항이 스택 전체에 즉시 반영됨
-
일반적인 개발 워크플로우
- 모델 추가나 변경 시 저장하면 로컬 인프라에 즉시 핫 리로드됨
- 새로운 필드를 추가하면 API, 스트림, 데이터베이스에 즉시 적용됨
- 파이프라인 테스트도 로컬 인제스트 API로 샘플 데이터를 전송해 바로 확인 가능함
-
핫 리로딩 워크플로우
- 모델 수정 후 저장만 하면 변경 사항이 자동 반영됨
- 추가된 필드는 API 검증, 데이터베이스 스키마, 스트림에 자동 적용됨
-
모듈성
기본 제공하는 Moose 스택
-
ClickHouse
기본 활성화된 OLAP 데이터베이스
-
Redpanda
Kafka 호환 이벤트 스트리밍 플랫폼 (비활성화 가능)
-
Temporal
워크플로 오케스트레이션 툴 (비활성화 가능)
-
계획 중인 확장
-
Snowflake, Databricks, BigQuery
클라우드 데이터 웨어하우스 지원 예정
-
Kafka, Kinesis, Pulsar
다양한 Kafka 호환 이벤트 스트리밍 플랫폼 지원 예정
Moose로 구축할 수 있는 것들
-
사용자용 실시간 분석
리더보드, 차트, 메트릭 등을 웹/모바일 앱에 통합
-
BI 및 데이터 웨어하우스
다양한 데이터 소스를 수집하여 분석 데이터베이스 구축 및 리포트 생성
-
데이터 마이그레이션
레거시 시스템에서 최신 데이터 백엔드로 데이터 이동
-
이벤트 스트리밍
Kafka, Redpanda 등의 스트리밍 플랫폼에서 이벤트 실시간 처리
-
ETL 작업
다양한 소스의 데이터를 정기적으로 수집하고 분석 환경에 적재