Backend & Distributed Systems
용량 제한과 잠금을 갖춘 주간 계획 API
마감을 보호하고 주간 시간과 하루 항목 수를 제한하며 승인한 계획을 잠그는 결정론적 주간 계획 API입니다.
사용자가 승인한 계획을 자동 생성이 다시 덮어쓰면 주간 플래너를 신뢰할 수 없다. 이 구현은 재현 가능한 초안과 잠긴 계획을 분리하고 저장 전에 용량 제약을 적용한다.
API는 주 시작일과 420~1,680분의 용량을 받는다. 주 안에 도래하는 마감 항목은 보호하고, 반복 학습 후보는 점수순으로 정렬한 뒤 남은 시간 안에서만 선택한다. 하루 항목은 최대 5개다. 각 항목의 추천 이유도 데이터로 저장해 당시 결정 근거를 설명한다.
계획 행은 용량, 계획 시간, 보류 수, 생성 시각, 상태, 잠금 시각을 가진다. 잠기지 않은 계획만 재생성할 수 있고 잠금 뒤에는 409로 거부한다. 임시 D1 시험은 1,050분 중 1,035분을 사용한 30개 항목과 보류 1개를 만들고, 잠금 뒤 재생성을 차단했다. 실제 로컬 서비스에서도 같은 주 계획을 생성하고 잠갔다.
관련 글
Backend & Distributed Systems
충돌을 감지하는 멱등 세션 저장 API
응답 유실 뒤에도 중복 없이 재시도하고 의미가 달라진 요청은 충돌로 차단하는 세션 저장 API 설계를 설명합니다.
Backend & Distributed Systems
삭제 후 재생성을 막는 툼스톤 설계
사용자가 삭제한 기본 항목을 영구 삭제하면서 앱 초기화 로직이 같은 항목을 되살리지 못하게 하는 데이터 설계입니다.
Backend & Distributed Systems
Backend API와 데이터 시스템 설계 기초
Spring 회원 관리 예제, MVC, DB 접근, SQL, NoSQL, 캐시를 백엔드 시스템 설계 흐름으로 정리합니다.