인프런 커뮤니티 질문&답변
4주 1회차 과제 제출합니다.
해결된 질문
작성
·
21
0
저는 is_host 필드와 calendar 존재 여부를 둘 다 검증해야 한다고 판단했습니다.
왜 두 가지를 모두 사용해야 할까요?
우선 두 요소는 서로 다른 의미를 가지고 있다고 생각합니다.
is_host: 이 사용자가 호스트 자격이 있는가? (역할)
calendar 존재: 이 호스트가 실제로 운영 중인가? (상태)
현실로 비유하자면, is_host는 사업자등록증을 가지고 있는 상태이고, calendar가 있다는 건 실제로 가게를 오픈한 상태라고 볼 수 있습니다. 사업자등록증은 있지만 아직 가게를 열지 않은 사람도 있을 수 있잖아요?
그래서 둘 중 하나만 체크하면 문제가 생긴다고 봅니다.
만약 calendar 존재 여부만 체크한다면?
calendar만 보고 판단하면 권한 체계가 무너질 수 있습니다. 예를 들어 일반 사용자가 억지로 캘린더를 생성하면 호스트로 둔갑할 수 있는 보안 문제가 생기죠. 또 호스트가 일시적으로 캘린더를 삭제했다가 다시 만들 때마다 권한 관리가 복잡해집니다.
만약 is_host만 체크한다면?
반대로 is_host만 체크하면, 캘린더가 없는데도 예약 관련 API를 호출할 수 있게 되어서 500 에러가 발생할 수 있습니다. "호스트인데 캘린더는 없는" 이상한 상태를 어떻게 처리해야 할지도 애매해지고요.
두 가지를 순차적으로 검증하는 게 좋습니다
저는 이렇게 단계적으로 확인하는 게 맞다고 봅니다:
먼저 is_host로 호스트 자격이 있는지 확인
그 다음 calendar 존재로 실제 운영 가능한지 확인
이렇게 하면 사용자에게도 명확한 피드백을 줄 수 있어요. "호스트 권한이 없습니다" vs "캘린더를 먼저 생성해주세요" 처럼 무엇을 해야 하는지 정확히 알려줄 수 있죠.
미래 확장성도 고려했습니다
나중에 서비스가 커지면 호스트 상태를 더 세분화할 수도 있을 것 같아요:
준비 중 호스트 (is_host=true, 캘린더 없음) → 대시보드 접근만 가능
운영 중 호스트 (is_host=true, 캘린더 있음) → 모든 기능 사용 가능
휴면 호스트 (is_host=true, 캘린더 비활성화) → 기존 예약 조회만 가능
이런 식으로 관리하려면 역할과 리소스를 분리해서 체크하는 게 필수라고 생각합니다.
성능 걱정은 없을까요?
is_host는 User 모델의 필드라서 추가 DB 쿼리가 필요 없고, calendar 조회도 어차피 해야 하는 작업이라 성능에 큰 영향은 없다고 봅니다.




