AI Briefing

서버에서 쓰는 Redux: Node.js 이벤트 소싱 라이브러리 개발기

·2026.01.23 14:34

CRUD의 한계를 넘기 위해 이벤트 소싱과 TypeScript용 Ventyd를 도입했다.

CRUD만으로는 승인, 수정 이력, 롤백처럼 상태 변화의 맥락이 필요한 요구사항을 다루기 어렵다. 현재 상태만 저장하는 방식으로는 “왜 이렇게 되었는가”를 추적하기 힘들고, 기능이 늘수록 테이블과 로직이 복잡해진다.

대안으로 이벤트 소싱(Event Sourcing) 을 택한다. 상태를 직접 덮어쓰는 대신, 상태를 바꾼 모든 이벤트를 저장해 감사 로그, 과거 시점 재구성, 쉬운 롤백, 데이터 변화 분석을 가능하게 만든다.

핵심 개념은 프론트엔드 엔지니어에게 익숙한 Redux와 매우 비슷하다. Redux가 ActionReducer로 상태를 계산하듯, 이벤트 소싱도 이벤트를 순서대로 재생해 다음 상태를 계산한다. 차이는 Redux가 브라우저 메모리에서 동작하는 반면, 이벤트 소싱은 그 기록을 DB에 영구 저장한다는 점이다.

이 패턴을 TypeScript 환경에서 쉽게 쓰기 위해 직접 만든 라이브러리가 Ventyd다. 목표는 세 가지였다.

  • Redux처럼 친숙하게: 프론트엔드와 Node.js 개발자가 바로 이해할 수 있게
  • TypeScript-first: 타입 안정성을 최우선으로
  • 유연하게: 특정 DB나 검증 라이브러리에 묶이지 않게

사용 방식은 schema로 이벤트와 최종 상태를 정의하고, reducer로 이벤트별 상태 변경을 계산한 뒤, Entity 클래스에 비즈니스 메서드를 넣는 구조다. 마지막으로 Repository에서 어댑터와 플러그인을 연결해 DB 저장, 감사 로그, 알림 같은 기능을 붙인다. 검증 라이브러리는 Valibot뿐 아니라 Zod, TypeBox, ArkType 등도 사용할 수 있다.

실제 활용 예로는 프론트엔드 배포 플랫폼에서 배포 시작, 빌드, 테스트, 배포, 롤백의 모든 과정을 이벤트로 기록해 추적성과 알림을 개선했다. 또 게임 상태 관리에서는 같은 Entity와 로직을 클라이언트와 서버에서 함께 써서, 즉각적인 로컬 반응, 오프라인 지원, 서버 검증, 리플레이 가능성을 확보했다.

정리하면 Ventyd는 이벤트 소싱을 Redux처럼 다루게 해 주는 Node.js / TypeScript용 도구다. 프론트엔드와 백엔드가 Schema, Event, Reducer, Entity, Repository라는 공통 언어로 도메인 로직을 이야기할 수 있게 만들고, 복잡한 내부 도구를 더 투명하고 확장 가능하게 다룰 수 있도록 돕는다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.