DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 당근
#Backend

Building Event Center: Karrot’s User Event Management Platform

Building Event Center: Karrot’s User Event Management Platform
01

Summary

"로깅 PR 기다리다 지치셨나요?" 당근마켓의 데이터 민주화를 이끄는 'Event Center' 탄생기

코드 한 줄 없이 UI로 스키마 정의하고 CLI로 타입 세이프한 코드까지 뽑아내는 이벤트 관리의 끝판왕

방대한 사용자 데이터를 의사결정의 핵심 자산으로 활용하기 위해 당근마켓 데이터 팀이 구축한 'Event Center' 플랫폼을 소개합니다. 기존의 번거로운 Git 기반 워크플로우를 UI 중심의 자동화 플랫폼으로 전환하여 전사적인 데이터 표준화를 달성하고, 멀티 플랫폼 개발 환경에서 타입 안정성을 확보한 기술적 여정을 담고 있습니다.

  • 01Spark StructType JSON을 직접 작성하던 고통에서 해방되는 UI 기반 스키마 관리
  • 02Service-Screen-Action 계층 구조를 통한 전사 이벤트 네이밍의 완벽한 표준화
  • 03iOS(Swift), Android(Kotlin), Webview(TS)를 모두 지원하는 강력한 Codegen CLI
  • 04유저 ID 기반 실시간 이벤트 트래킹으로 데이터 로깅 QA 시간 획기적 단축
  • 05BigQuery 뷰 테이블 생성 자동화로 분석가와 엔지니어 간의 협업 허들 제거

+RECOMMENDATION

이벤트 로그의 파편화로 인해 데이터 신뢰도가 떨어지거나, 로깅 코드 작성 및 리뷰 과정에서 병목을 겪는 중대규모 조직의 플랫폼 엔지니어에게 강력히 추천합니다.

The Problem

기존의 Git 기반 코드 중심 스키마 관리 방식은 개발자가 직접 복잡한 Spark StructType JSON을 작성해야 했으며, 이 과정에서 오타나 문법 오류가 빈번하고 데이터 팀의 리뷰 사이클이 길어지는 병목 현상이 발생했다. 또한 전사적으로 통일된 네이밍 컨벤션이 없어 서비스별로 이벤트 이름이 파편화되어 데이터 탐색과 분석에 큰 비용이 소모되는 문제가 있었다.

The Solution

전사적인 이벤트 네이밍 규칙(Service-Screen-Action)을 수립하고, 이를 강제할 수 있는 UI 기반의 이벤트 관리 어드민 'Event Center'를 구축하여 코드 작성 없이 스키마를 정의하도록 개선했다. 정의된 스키마를 기반으로 iOS, Android, Webview 환경에서 즉시 사용할 수 있는 타입 안정적인 코드를 생성하는 CLI 도구를 도입하고, 본인의 유저 ID로 실시간 로깅 여부를 확인할 수 있는 QA 기능을 추가했다.

The Result

이벤트 정의 프로세스의 자동화를 통해 데이터 팀의 리뷰 부담을 줄이고 전체 개발 주기를 단축했으며, CLI 기반의 코드 생성으로 런타임 타입 에러를 원천 차단하여 데이터 정합성을 높였다. 개발자는 직접 BigQuery를 쿼리하지 않고도 어드민 내에서 실시간으로 로그 수집 여부를 확인할 수 있게 되어 QA 효율성이 크게 개선되었다.

Trade-off

UI 기반 플랫폼 도입으로 편의성은 개선되었으나 이벤트 등록 시 여전히 수동 클릭이 많이 발생하며, 성공이나 실패와 같은 동적인 화면 상태 변화를 단일 화면 단위로만 관리하는 현재 모델의 유연성 부족이 한계로 지목된다. 향후 Figma와의 연동 등을 통한 더 높은 수준의 자동화가 필요한 상태임이 본문에 언급되었다.

03

Key Concepts

Concept · 01

Spark StructType

Apache Spark에서 데이터의 구조를 정의하기 위해 사용하는 스키마 형식으로, 필드 이름과 데이터 타입, 널 허용 여부 등을 포함한다.

  • 기존 방식에서 개발자가 수동으로 작성해야 했던 복잡한 JSON 포맷
  • Event Center 도입 이후 UI 입력을 통해 자동으로 생성되는 대상
Concept · 02

Event Naming Convention

이벤트가 발생한 서비스, 화면, 액션의 맥락을 이름만으로 파악할 수 있도록 정의한 전사적 네이밍 규칙이다.

  • Service-Screen-Action의 3단계 계층 구조를 기반으로 설계
  • client_{action}_{service}_{screen}_{object} 형식을 통해 모호성 제거
Concept · 03

Type-Safe Code Generation

중앙 관리 플랫폼에서 정의된 스키마를 바탕으로 각 프로그래밍 언어의 타입 시스템에 맞는 코드를 자동 생성하는 기술이다.

  • CLI를 통해 Swift, Kotlin, TypeScript 인터페이스를 자동으로 생성
  • 잘못된 필드 이름 사용 시 컴파일 타임에 에러를 감지하여 런타임 사고 방지
Concept · 04

Dead Letter Queue (DLQ)

데이터 파이프라인 처리 중 유효성 검사를 통과하지 못한 비정상 데이터를 격리하여 저장하는 저장소이다.

  • 잘못된 형식의 이벤트가 유입될 경우 별도의 BigQuery 테이블로 라우팅
  • 데이터 손실 없이 사후 디버깅과 분석을 가능하게 하는 안전장치 역할
Continue reading · same source

당근More from 당근

View all posts from 당근
  • 혼자 시작해 전국 오픈까지, 당근 레슨/과외 빌딩 로그

    MarketplaceProduct Market FitFunnel Optimization
    2주 전
  • 디자인시스템 팀은 디자인시스템만 잘 만들면 될까

    Design SystemAI in DesignUX Patterns
    1개월 전
  • 당근 200+개 DB 를 옮기는 ELT 플랫폼, DT Platform 을 만든 이야기

    ELTApache SparkApache Airflow
    1개월 전
  • 누구나 찾아볼 수 있는 중고거래 서버 LLM 릴리즈 노트 도입기

    LLMGitHub ActionsNotion
    2개월 전
  • How We Protect Karrot’s Internal PyPI Proxy from Supply Chain Attacks

    PyPIAWS CodeArtifactSecurity Cooldown
    2개월 전

Source

당근
당근
Engineering Blog

Published · January 12, 2026

Topics

이벤트 로깅데이터 거버넌스스키마 관리Code Generation데이터 파이프라인당근마켓Event Center