추첨, 재추첨, 구매 제한은 어떻게 연결되어 있었나

The Draw의 핵심은 추첨 자체보다 추첨 이후 운영 규칙이었습니다. 한 번 뽑고 끝나는 흐름이 아니라, 구매하지 않은 당첨자와 응모 미달 상황까지 고려한 운영 구조가 필요했습니다.
개발자인 제 입장에서 당첨자 제외 대상이나 구매 제한 규칙을 직접 정하는 일은 아니었습니다. 그런 기준은 보통 마케팅이나 비즈니스 팀에서 이벤트 목적과 운영 정책에 맞춰 가져왔을 가능성이 높습니다. 다만 시스템을 만드는 입장에서는 그 규칙이 어떤 형태로 들어오든, 일관된 조건과 제약으로 해석해 구현할 수 있어야 했습니다.
추첨만으로 끝나지 않았다
운영 자료를 보면 당첨자 추첨, 재추첨, 구매 기간, 추가 발송, 제외 대상 관리가 모두 이어집니다. 이 흐름은 단순 랜덤 추첨이 아니라, 운영 규칙이 강하게 들어가는 이벤트 구조라는 점을 보여줍니다.
특히 중요한 건 구매 제한과 당첨자 rule입니다. 당첨자를 뽑는 것만으로 끝나는 게 아니라, 누가 구매할 수 있는지, 언제까지 구매 가능한지, 다시 추첨해야 하는지까지 함께 설계되어 있었습니다.
여기서 개발자가 실제로 다루는 건 “룰의 내용”보다 “룰을 담는 구조”였습니다. 특정 사용자를 제외해야 한다면 그 제외 기준이 데이터로 어떻게 표현되는지, 구매 가능 시간을 제한해야 한다면 그 정책이 어떤 시점에 검증되는지, 미구매자를 다시 처리해야 한다면 재추첨 흐름이 어떤 상태 전이를 가져야 하는지를 시스템으로 풀어야 했습니다.
즉 The Draw의 핵심 로직은 추첨 알고리즘 자체보다, 추첨 결과를 어떻게 운영 가능한 규칙으로 연결하느냐에 가까웠습니다. 이벤트 운영에서 정책과 시스템 구현이 분리되지 않는 대표적인 예였습니다.
그래서 이 구조는 단순히 “랜덤으로 뽑는다”로 설명되지 않습니다. 비즈니스 팀이 가져오는 운영 정책과 제약을, 운영자가 다룰 수 있는 관리자 기능과 배치 흐름으로 연결해야 했기 때문입니다. The Draw가 까다로웠던 이유도 바로 여기에 있었습니다.
운영 규칙의 핵심
지금 다시 보면 중요한 질문은 다음과 같습니다.
- 당첨자 선정은 어떤 모집단에서 이뤄지는가
- 제외 대상은 어떻게 관리되는가
- 구매하지 않은 당첨자는 다음 단계에서 어떻게 처리되는가
- 재추첨은 언제 가능하고 어떤 제약이 있는가
이 질문을 통해 보면 The Draw는 결국 이벤트 트래픽 운영과 정책 제어가 결합된 시스템이었습니다.
조금 더 풀어보면 이런 성격의 질문도 같이 따라옵니다.
- 특정 사용자 집단을 제외해야 한다면 그 기준은 어디서 관리되는가
- 구매 제한은 응모 시점, 당첨 시점, 구매 시점 중 어디에서 검증되는가
- 재추첨은 자동으로 이어지는가, 아니면 운영자 승인 이후 진행되는가
- 운영 정책이 바뀌면 어떤 데이터와 화면, 배치가 함께 수정되어야 하는가
이런 질문은 코드 구현 이전에 시스템이 수용해야 하는 정책의 형태를 보여줍니다. 개발자가 룰 자체를 만들지는 않더라도, 룰이 바뀌었을 때 시스템이 얼마나 안정적으로 반응할 수 있는지는 결국 구현의 문제였습니다.
이 구조는 일반적인 재고 판매보다 훨씬 까다롭습니다. 단순히 판매 시작 시각을 열고 닫는 문제를 넘어, 당첨자 집합과 제외 대상, 추가 기회 부여, 구매 기간 제한까지 관리해야 하기 때문입니다. 그래서 The Draw는 기능보다 정책 흐름을 먼저 이해해야 했습니다.
다음 글에서는 이 흐름에서 배치와 캐시 초기화가 어떤 역할을 맡고 있었는지 이어서 정리합니다: The Draw 운영에서 배치와 캐시 초기화가 맡고 있던 역할