Skip to content

[API 구현] Soft Delete 방식 적용하기

이은비 edited this page Mar 29, 2023 · 1 revision

삭제 API 로직 변경 과정

Restful API 방식으로 개발을 진행하는 과정에서 삭제 방식에 대해 Hard Delete 방식이 아닌 Soft Delete 방식으로 변경할 것을 제안하였습니다.

Soft Delete vs. Hard Delete

Soft Delete 방식은 DB에서 실제로 데이터를 삭제하는 것이 아닌 논리적으로 삭제되었음을 볃도의 상태 값을 통해 관리하는 방식입니다.

Hard Delete 방식은 DB에서 실제로 데이터를 삭제하는 것입니다.

지금까지의 개발에서 익숙한 방식은 Hard Delete 방식일 것입니다. 그렇다면, 언제 왜 Soft Delete를 적용해야 하는 것인지 알아보도록 하겠습니다.

주말의집과 같이 사용자로부터 얻는 데이터를 중심으로 운영되는 서비스의 경우, 데이터가 곧 자산입니다. 데이터가 누적되어 그 안에서 유의미한 인사이트를 얻을 수 있고, 이것이 곧 신규 기능이자 서비스로 발전되기 때문입니다.

또한, 데이터를 삭제하지 않고 사용자에게 삭제된 것처럼 보여지게 하여 추후 요구사항의 변경으로 삭제된 값이 다시금 노출되어야 하는 상황에도 유연하게 대응할 수 있습니다.

주말의집은 위와 같은 이유로 Hard Delete 방식에서 Soft Delete 방식으로 삭제 로직을 변경하였습니다. 이에 따라 ERD 상에서 useYn 컬럼을 통해 데이터의 삭제 유무를 관리하고 있습니다.

삭제 로직의 변경으로 조회 쿼리의 변경이 함께 수반되었습니다. 기존에 findBy 함수로 조회 하던 것에서 findByUseYn 함수로 변경되어 사용됩니다.

여전히 Hard Delete 방식이 적용되는 로직도 존재합니다. 바로 "회원탈퇴" 입니다. 탈퇴한 회원에 대해서는 약관 내용에 따라 특정 기간이 지나면 사용자 테이블에서 사용자의 데이터를 삭제 처리합니다.

Clone this wiki locally