링크 드라퍼의 '휴지통' 시스템과 NestJS Cron을 활용한 자동 정리 전략

🤖 AI 추천

이 콘텐츠는 링크 관리 서비스 '링크 드라퍼'에서 사용자 경험 개선을 위해 도입한 '휴지통' 시스템과 이를 뒷받침하는 NestJS의 Cron 스케줄링 기능 구현 방안을 소개합니다. 특히 휴지통 시스템 설계 및 구현, 그리고 30일 후 자동 영구 삭제를 위한 Cron 작업 구현, 더 나아가 사용자의 편의를 위한 '읽지 않은 링크 자동 정리' 기능 제안까지 다루고 있어, 백엔드 개발자, 서비스 기획자, UX/UI 디자이너 등 다양한 IT 직군에게 유용한 정보를 제공합니다.

🔖 주요 키워드

링크 드라퍼의 '휴지통' 시스템과 NestJS Cron을 활용한 자동 정리 전략

핵심 기술: 이 글은 사용자에게 편리한 링크 관리 경험을 제공하기 위해 '휴지통' 시스템을 도입한 서비스 설계와 NestJS 프레임워크를 활용한 백엔드 구현 전략을 다룹니다. 특히 삭제된 데이터를 즉시 영구 삭제하지 않고 일정 기간 보관하는 소프트 삭제(Soft Delete) 패턴과 이를 관리하기 위한 Cron 기반의 자동 정리 작업 구현에 초점을 맞춥니다.

기술적 세부사항:
* 휴지통 시스템 구현:
* 링크 및 폴더 삭제 시, DB에서 즉시 삭제하는 대신 isTrashed: truetrashedAt: now 상태로 업데이트.
* 삭제는 PATCH /api/links/:id/trashPATCH /api/folders/:id/trash API 엔드포인트를 통해 처리.
* UI는 isTrashed 상태에 따라 휴지통 전용 뷰 제공.
* 복구 기능 지원 및 30일 경과 시 영구 삭제.
* NestJS Cron을 활용한 자동 정리:
* @nestjs/schedule 모듈을 사용하여 백엔드 자동화 작업 구현.
* @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT) 데코레이터를 활용하여 매일 자정에 작업 실행.
* trash-cleanup.service.ts 예시를 통해 30일 이상 휴지통에 있던 링크/폴더를 softRemove로 처리하여 deletedAt 필드 기록.
* 추가 기능 제안:
* '읽지 않은 링크 자동 정리' 기능 제안: 3일 이상 읽지 않은 링크를 자동으로 휴지통으로 이동하거나 사용자에게 정리 제안.
* 사용자 설정에 따라 자동 정리 기능 활성화/비활성화.
* 기타 기능: 링크 메모 기능, 폴더 공유, OG 미리보기 등 링크 드라퍼의 부가 기능도 언급.

개발 임팩트:
* 사용자 실수로 인한 데이터 손실 방지 및 복구 가능성을 높여 사용자 경험(UX) 크게 개선.
* Cron을 활용한 자동화된 데이터 관리를 통해 서버 부하 관리 및 데이터베이스 효율성 증대.
* '읽지 않은 링크 정리'와 같은 능동적인 데이터 관리 기능은 보관함의 복잡성을 줄이고 사용자가 콘텐츠에 집중하도록 유도.

커뮤니티 반응:
* 콘텐츠 마지막 부분에서 '읽지 않은 링크 정리' 기능에 대한 사용자 피드백(좋아요, 댓글)을 요청하며 사용자 참여를 유도.

📚 관련 자료