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 당근
  • Related reads#Node.js
#Backend

서버를 위한 Redux: Node.js 이벤트 소싱 라이브러리 개발기

서버를 위한 Redux: Node.js 이벤트 소싱 라이브러리 개발기
01

Summary

서버에 Redux를 심었더니? 당근이 공개한 Node.js 이벤트 소싱 라이브러리 'Ventyd'

복잡한 비즈니스 로직과 상태 추적 문제를 Redux처럼 명쾌하게 해결하는 TypeScript 기반 오픈소스 가이드

데이터의 현재 상태만 저장하는 CRUD 방식의 한계를 느끼고 계신가요? 당근 테크 블로그에서 공개한 Ventyd는 프론트엔드 개발자에게 익숙한 Redux의 철학을 서버로 옮겨와 복잡한 도메인 로직을 이벤트 중심으로 관리할 수 있게 해주는 라이브러리입니다. 이벤트 소싱이라는 강력한 개념을 TypeScript 환경에서 가장 쉽고 안정적으로 도입할 수 있는 실무 노하우를 소개합니다.

  • 01CRUD의 한계를 넘어 '왜 변했는가'에 답할 수 있는 이벤트 소싱 패턴 도입기
  • 02Redux의 Action-Reducer 구조를 서버로 이식하여 프론트엔드-백엔드 간 기술적 공통점 확보
  • 03TypeScript 퍼스트 설계로 강력한 타입 안정성과 자동 완성 지원
  • 04배포 플랫폼부터 실시간 게임까지, 당근 내부의 실제 프로덕션 적용 사례 공유
  • 05도메인 주도 설계(DDD)를 자연스럽게 유도하는 엔티티 중심의 라이브러리 구조

+RECOMMENDATION

감사 로그, 타임머신 기능, 혹은 복잡한 상태 전환이 잦은 엔터프라이즈급 서비스를 개발하는 백엔드 엔지니어에게 추천합니다. 특히 React/Redux에 익숙한 팀이 서버 개발까지 영역을 확장하거나, 클라이언트와 서버 간 도메인 로직 중복을 제거하고 싶은 프로젝트에 최고의 솔루션이 될 것입니다.

The Problem

전통적인 CRUD 방식은 데이터의 현재 상태만 저장하기 때문에 승인 프로세스, 수정 이력, 롤백 등 복잡한 요구사항 대응 시 로직이 파편화되고 데이터 변경의 맥락을 추적하기 어렵다. 특히 특정 상태에 도달한 과정과 이유를 파악하기 위해 별도의 히스토리 테이블과 복잡한 감사 로그 로직을 중복해서 구현해야 하는 문제가 발생한다.

The Solution

프론트엔드의 Redux 패턴에서 영감을 얻은 TypeScript 기반 이벤트 소싱 라이브러리 'Ventyd'를 개발하여 도입했다. 모든 상태 변경을 '이벤트'로 기록하고 Reducer를 통해 상태를 재구성하는 구조를 채택했으며, 스키마 정의와 비즈니스 로직을 담은 엔티티 클래스를 통해 도메인 모델을 체계적으로 관리할 수 있도록 설계했다.

The Result

배포 플랫폼에서 모든 배포 단계를 이벤트로 기록하여 완벽한 감사 로그와 쉬운 롤백을 구현했으며, 게임 개발 시 클라이언트와 서버가 동일한 도메인 로직을 공유함으로써 즉각적인 반응성과 부정행위 검증을 동시에 달성했다. 이를 통해 프론트엔드와 백엔드 엔지니어가 공통의 언어로 비즈니스 로직을 설계하고 협업하는 효율적인 환경이 구축되었다.

Trade-off

본문에 구체적인 수치로 명시되지는 않았으나, 이벤트 소싱 패턴 도입 시 단순 CRUD 대비 시스템 설계 및 구현의 복잡도가 증가하며 저장된 모든 이벤트를 재생하는 과정에서 성능 오버헤드가 발생할 수 있다. 또한 특정 필드 기반의 검색을 위해서는 CQRS 패턴 등을 통해 별도의 읽기 모델을 인덱싱하거나 플러그인으로 직접 구현해야 하는 비용이 수반된다.

03

Key Concepts

Concept · 01

Event Sourcing

데이터의 현재 상태만을 저장하는 대신, 상태를 변경시킨 모든 사건(이벤트)을 순차적으로 기록하여 영구 저장하는 아키텍처 패턴이다.

  • 데이터가 변경된 모든 과정을 추적할 수 있는 완벽한 감사 로그 제공
  • 이벤트 로그를 특정 시점까지 재생하여 과거 어느 시점의 상태로든 복원 가능
Concept · 02

Reducer

이전 상태와 발생한 이벤트를 입력받아 다음 상태를 결정하는 순수 함수이다.

  • 사이드 이펙트가 없어 단위 테스트 작성이 매우 용이함
  • 순차적으로 누적된 이벤트를 재생하여 최종 엔티티의 상태를 계산하는 핵심 로직
Concept · 03

Ventyd Entity

상태 정의, 리듀서, 그리고 비즈니스 로직을 하나로 묶은 도메인 객체의 기본 단위이다.

  • mutation 함수를 통해 비즈니스 규칙 검증과 이벤트 발행을 동시에 수행
  • 클라이언트와 서버 양쪽에서 동일한 클래스 정의를 사용하여 로직 일관성 유지
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개월 전

Related reads#Node.js

Explore #Node.js
NAVER D2·JavaScript

FE News 26년 4월 소식을 전해드립니다!

#Node.js3개월 전
토스·AI

개발자는 AI에게 대체될 것인가

#Node.js5개월 전
쏘카

Node.js 컨테이너, 왜 깔끔하게 안 죽을까? (feat. Graceful shutdown)

#Node.js5개월 전

Source

당근
당근
Engineering Blog

Published · January 23, 2026

Topics

Node.jsTypeScriptEvent SourcingReduxVentydDDDOpen SourceState Management