피드로 돌아가기
Why I Removed the Trial Period from GramDeskBot and Replaced It with a Bonus
Dev.toDev.to
Backend

Trial Lifecycle 제거를 통한 Account State 단순화 및 시스템 복잡도 해소

Why I Removed the Trial Period from GramDeskBot and Replaced It with a Bonus

Petr Tcoi2026년 5월 3일7intermediate

Context

SaaS의 표준 패턴인 Trial Period 도입으로 인해 계정 상태(Account State)가 과도하게 분기되는 문제 발생. 시간 기반의 만료 로직과 다양한 엣지 케이스 처리가 백엔드 시스템 전반의 복잡도를 증가시켜 개발 및 유지보수 효율을 저해함.

Technical Solution

  • Trial 기반의 별도 Product Mode를 제거하고 정규 제품 로직 내에 통합된 Starting Bonus 체계 도입
  • 시간 기반의 Expiration Check 및 Background Job으로 인한 오버헤드를 제거하여 시스템 예측 가능성 확보
  • Trial Active, Expired, Paid 등 파편화된 상태 머신을 단일 Balance/Limit 기반의 상태 모델로 단순화
  • Billing Logic을 독립적인 Lifecycle이 아닌 초기 값(Initial Value) 설정 방식으로 변경하여 코드 분기 최소화
  • 사용자 경험 상의 시간적 제약을 제거하여 온보딩 프로세스의 유연성 확보 및 상태 전이 오류 방지

1. 표준 SaaS 패턴 도입 전, 해당 기능이 생성할 State Transition의 복잡도를 분석하였는가?

2. 시간 기반의 상태 변경 로직이 시스템 전반(DB, Job, UI)에 걸쳐 과도한 분기문을 생성하지 않는가?

3. '임시 모드(Trial)'와 '정규 모드(Paid)'를 분리하는 대신, 단일 모델 내의 파라미터(Balance) 조절로 해결 가능한가?

4. 비즈니스 로직의 복잡도가 시스템 안정성과 모니터링 비용에 미치는 영향을 정량적으로 검토했는가?

원문 읽기