오늘날 빠르게 변화하는 비즈니스 환경에서 속도와 효율성은 우수성을 가늠하는 핵심 기준입니다.
수작업에 의존하고 경직된 프로세스에 갇힌 조직은 무겁고 비효율적인 아키텍처의 부담을 안은 채 스쳐 지나가는 비즈니스 기회를 계속 놓치게 됩니다.
반면 프로세스를 자동화한 조직은 더욱 생산적이고 민첩하며, 그 무엇보다 성장할 가능성이 훨씬 높습니다. 바로 이런 이유에서 조직에는 분산 비즈니스 규칙 관리 시스템(DBRMS)이 필요합니다.
비즈니스 현장에 실질적인 변화를 만들고자 했던 Vishrut Kohli는 Redis를 활용해 자신만의 DBRMS인 Bonsai를 직접 개발했습니다. Bonsai는 Redis를 기반으로 프로세스를 실시간으로 자동화하여 지연 발생 가능성을 최소화하고 생산성을 극대화합니다.
이번 글에서는 이 애플리케이션이 어떻게 만들어졌는지 살펴보겠습니다. 참고로 Redis Launchpad에서도 다양한 혁신적인 애플리케이션을 만나볼 수 있으니, 글을 다 읽은 후 꼭 둘러보시기 바랍니다.
Redis로 분산 비즈니스 규칙 관리 시스템을 구축하는 방법
- 무엇을 만들까요?
- 필요한 것들은?
- 아키텍처
- 시작하기
- 백엔드 설정
- 프론트엔드 설정
- 동작 원리
- 주요 기능 구현 방법
1. 무엇을 만들까요?
이번 프로젝트에서는 기업이 전사 차원에서 확장 가능한 비즈니스 규칙을 생성, 관리, 실행할 수 있도록 돕는 분산 비즈니스 규칙 관리 플랫폼을 만듭니다. 수많은 업무를 자동화하여 절약된 리소스를 사업의 다른 영역에 투자할 수 있게 됩니다.
이 애플리케이션을 통해 조직은 비즈니스 의사결정 규칙과 판단 로직을 정의, 배포, 관리할 수 있으며, 애플리케이션은 사람의 개입 없이도 빠르고 일관되게 지능적인 결정을 내릴 수 있습니다.
아래에서는 이 애플리케이션을 완성하는 데 필요한 구성 요소와 구현 과정의 각 단계를 자세히 안내합니다.
준비되셨나요? 그럼 바로 시작해 보겠습니다.
2. 필요한 것들은?
- Python: 범용적으로 활용되는 강력한 프로그래밍 언어
- Redis: 밀리초 미만의 지연 시간으로 실시간 데이터를 수집, 처리, 분석하는 인메모리 데이터 스토어
- RedisJSON: Redis에서 JSON을 지원하는 모듈
- RedisTimeSeries: Redis에 시계열 데이터 구조를 추가하는 모듈
3. 아키텍처
4. 시작하기
먼저 Redis Stack 데이터베이스가 실행 중인지 확인하세요.
5. 프론트엔드 설정
Create React App으로 시작하기
이 프로젝트는 Create React App을 기반으로 부트스트랩되었습니다.
1단계: 프론트엔드 저장소 클론
2단계: 의존성 설치
yarn install
3단계: 제공되는 스크립트 사용
프로젝트 디렉터리에서 아래 스크립트들을 실행할 수 있습니다.
yarn start
앱을 개발 모드로 실행합니다.
브라우저에서 https://localhost:3000 을 열어 확인할 수 있습니다.
코드를 수정하면 페이지가 자동으로 새로고침됩니다.
콘솔에서 린트(lint) 오류도 함께 확인할 수 있습니다.
yarn test
테스트 러너를 대화형 감시(watch) 모드로 실행합니다.
yarn build
앱을 프로덕션용으로 빌드하여 build 폴더에 저장합니다.
React를 프로덕션 모드로 올바르게 번들링하고 최상의 성능을 위해 빌드를 최적화합니다. 빌드 결과는 압축(minify)되며 파일명에 해시가 포함됩니다.
이제 앱을 배포할 준비가 되었습니다.
yarn eject
참고: 이 작업은 되돌릴 수 없습니다. eject를 실행하면 다시 되돌아갈 수 없습니다!
빌드 도구와 구성 선택에 만족하지 않는 경우 언제든지 eject할 수 있습니다. 이 명령은 프로젝트에서 단일 빌드 의존성을 제거하고, 모든 설정 파일과 전이 의존성(webpack, Babel, ESLint 등)을 프로젝트 안으로 복사하여 완전한 제어권을 넘겨줍니다. eject를 제외한 모든 명령은 여전히 동작하지만, 복사된 스크립트를 가리키므로 자유롭게 수정할 수 있습니다. 이 시점부터는 모든 것을 직접 관리해야 합니다.
eject를 반드시 사용할 필요는 없습니다. 기본 제공되는 기능 세트만으로도 소규모·중규모 배포에 충분합니다. 다만, 필요할 때 커스터마이징할 수 있는 선택지가 있다는 점이 이 도구의 가치를 높여준다는 점은 이해할 수 있습니다.
4단계: Bonsai Rule Engine 클론
git clone: https://github.com/redis-developer/bonsai
5단계: Python 의존성 설치
6단계: 스크립트 실행
6. 동작 원리
핵심 키워드
- 네임스페이스(Namespace)
- 규칙(Rules)
- 엔티티(Entity)
네임스페이스(Namespace)
규칙을 가장 논리적으로 구분하는 기준은 네임스페이스입니다. 네임스페이스는 특정 데이터 집합에 대해 평가될 규칙들의 묶음을 의미합니다. 예를 들어, 이 글의 뒷부분에서 로열티 관리 시스템을 위한 네임스페이스를 만들게 되며, 관련된 모든 규칙이 해당 네임스페이스 아래에 저장됩니다.
- 데이터 저장 구조는 다음과 같습니다.
여기서 네임스페이스는
tax_system입니다.
네임스페이스를 생성하는 데 사용되는 명령어:
엔티티(Entity)
엔티티는 네임스페이스의 입력값을 의미하며, 해당 네임스페이스에 있는 규칙들을 평가한 후 결과값을 출력합니다.
규칙(Rules)
하위 키워드
- Predicates(조건식): 규칙의 입력 조건을 의미합니다.
- Results(결과): 규칙의 출력 조건을 의미합니다.
- Operators(연산자): 총 7개의 연산자가 제공됩니다.
- eq: 같음(=)
- range: 주어진 범위 내에 값이 존재해야 함(상한값 미포함)
- contains: 문자열이 입력값을 포함해야 함
- gt: 초과(>)
- gte: 이상(>=)
- lt: 미만(<)
- lte: 이하(<=)
예를 들어, 온타리오 주 토론토 시에 거주하는 시민의 세율을 결정하는 규칙을 만든다고 가정해 보겠습니다. 이 사람은 35%의 소득세를 납부합니다. 즉, province와 city라는 두 개의 변수와 하나의 출력값 tax_rate가 존재합니다.
이 경우 "province가 Ontario"라는 조건식(predicate)은 4개의 부분으로 구성됩니다.
각 규칙은 특정 입력(엔티티)에 대해 어떤 출력이 나와야 하는지 결정하는 명령입니다. 모든 규칙은 다음 형식으로 네임스페이스에 저장됩니다:
Ontario이고 city가 Toronto라면 세율은 35이다.
규칙 객체는 다음과 같습니다.
여기서 네임스페이스는
loyalty_system이고 rule_id는
123456입니다.
네임스페이스의 규칙을 업데이트하는 명령어:
네임스페이스의 모든 규칙을 조회하는 명령어:
rule_id로 특정 규칙 하나를 조회하는 명령어:
7. 주요 기능 구현 방법
규칙 생성 방법
홈 화면에서 'Create'를 클릭합니다.
다음으로 각 필드를 입력하여 규칙 생성을 완료합니다.
규칙 시각화(Rule Visualization)
규칙을 생성한 후에는 플로우차트 형태로 손쉽게 시각화할 수 있습니다.
규칙 평가(Rule Evaluation)
평가 흐름에는 규칙 생성에 사용된 모든 속성이 포함됩니다. 애플리케이션은 패턴 매칭 알고리즘을 사용해 엔티티에 가장 적합한 규칙을 찾아내고, 규칙이 실행되는 순서까지 출력합니다.
규칙 분석(Rule Analysis)
RedisTimeSeries를 활용하면 모든 지표를 시각화할 수 있으며, 네임스페이스 내 전체 규칙의 성능을 기반으로 데이터 주도형 의사결정을 내리는 데 도움을 받을 수 있습니다.
시계열 데이터를 노출하는 데 사용되는 명령어:
TS.ADD ruleId * 1
결론: 실시간 데이터로 효율을 높이는 DBRMS 플랫폼 만들기
DBRMS 플랫폼은 조직에 필수적이지만 시간이 많이 걸리고 지루한 업무로부터 직원과 기업을 해방시켜 줍니다. 이러한 업무를 DBRMS 플랫폼으로 자동화하면 직원들이 단순 반복 업무 대신 더 가치 있는 일에 집중할 수 있어, 조직 전체에 새로운 활력을 불어넣을 수 있습니다.
다만 DBRMS 시스템이 효과적으로 작동하려면, 최고 수준의 성능을 지속적으로 보장할 수 있는 실시간 데이터베이스가 뒷받침되어야 합니다. 사소한 지연 하나만으로도 프로세스 효율이 정체되고 생산성에 부정적인 영향을 미칠 수 있습니다.
Redis 덕분에 모든 비즈니스 규칙을 실시간으로 관리, 업데이트, 유지보수할 수 있었습니다. 이를 통해 성능에 대한 실시간 인사이트를 확보하고, 비즈니스 기회를 선점하는 데 도움이 되는 즉각적인 데이터 기반 의사결정을 내릴 수 있습니다.
Bonsai가 어떻게 만들어졌는지 더 자세히 알고 싶다면 Vishrut의 YouTube 영상을 확인해 보세요. 그뿐만 아니라 Redis Launchpad에서도 다양한 혁신적인 애플리케이션을 만나볼 수 있습니다.
전 세계의 개발자들이 Redis의 매력을 활용해 일상에 실질적인 변화를 만들어내고 있습니다.
지금 바로 방문하여 영감을 얻고, Redis와 함께 즐거운 개발을 경험해 보세요.
앱을 만든 사람은 누구일까요?
Vishrut Kohli

Vishrut은 Python, MATLAB/octave, 머신러닝 알고리즘에 능숙한 풀스택 개발자이자 데이터 애호가입니다. 그의 프로젝트 소식을 계속 받아보려면 GitHub에서 팔로우하세요.