데모 세션 읽기전용 전환으로 무료 체험 어뷰징 차단
목차
feat: restrict modifications and actions in demo sessions
무료 체험 기능을 추가했다가 제거하는 과정이 있었음. 기능 방향 전환의 흔적임.
체험 시스템 설계 의도
신규 파트너 → 무료 체험 신청 → 30일 제한 계정 발급
→ 만료 전 유료 전환 유도
도입 후 제거 이유
| 문제 | 내용 |
|---|---|
| 운영 복잡도 | 체험 계정 별도 관리 오버헤드 |
| 전환율 낮음 | 체험 후 유료 전환이 거의 없음 |
| 어뷰징 | 반복 체험 계정 생성 |
결국 데모 세션 방식(읽기전용 접근)으로 대체함.
데모 세션 구현
// 데모 세션에서 변경 작업 차단
if (session.isDemoMode()) {
return ResponseEntity.status(423)
.body(Map.of("msg", "데모 세션에서는 수정할 수 없습니다"));
}
기능을 빠르게 만들고 빠르게 제거하는 것도 개발 과정의 일부. 코드가 남으면 부채가 되니 깔끔하게 정리함.
개발 원칙 정리
이 작업을 진행하면서 재확인한 원칙들:
작은 커밋: 변경 단위를 작게 유지해서 코드 리뷰와 롤백이 쉽게.
테스트 먼저: 변경 전 현재 동작을 파악하고, 변경 후 동일하게 동작하는지 확인.
문서 동기화: 코드가 바뀌면 관련 주석과 문서도 같이 업데이트.
| 원칙 | 이유 |
|---|---|
| 단일 책임 | 하나의 함수/클래스는 하나의 역할만 |
| 명시적 코드 | 영리한 코드보다 읽기 쉬운 코드 |
| 실패 우선 처리 | happy path보다 에러 케이스 먼저 설계 |
끝
댓글 0
첫 댓글 달아줘.