회원탈퇴 시 왜 회원 정보를 즉시 지우지 않는 사례


케이스 단순화를 위해서

회원 탈퇴 시 , 회원 인스턴스를 사용불가 처리하는 것이 아닌

관련된 정보까지 삭제한다고 가정하겠습니다.



비즈니스 로직

요구사항에 따라 

- 회원 정보를 일정 기관동안 보관해야 할 때,

- 복귀를 대비한 휴면 처리 

로 인해 즉시 지우지 않을 수 있음,



배치작업 성능

회원풀이 조금이라면 모르지만

어느 정도 서비스 규모가 성장했을 때

회원탈퇴 시 실행해야하는 개인정보삭제 작업은

서비스 지연을 초래할 수 있다.



예를 들어, 

프로덕션 환경에서는 이 개인정보 삭제 작업 때문에 Lock이 설정되다보면

다른 트랜잭션의 수행이 지체될 수 있다.


row level에서 lock level이 타협되거나

관리할 lock 리소스가 적당하다면 상관없겠지만

다음과 같은 lock level과 trade-off 관계를 고려해야한다.


Lock level ( sql server 기준 )

낮음

row level : 변경하려는 row(RID)에만 lock 설정

page level : 변경하려는 로우가 담긴 page(or index)에 lock 설정

extent level :  extent 전체가 잠김

table level : table과 table과 연관된 인덱스가 잠김

database level : db 전체가 잠김. (db 복구작업 및 스키마 변경시 발생)

높음



Trade-off 관계


1. locking level이 낮을수록 관리해야 할 lock 개수는 많아지고

-> 시스템 리소스를 더 많이 소비한다.


2. locking level이 높을수록 관리해야 할 lock 개수는 적다.

-> 시스템 리소스를 덜 소비하지만 동시성이 낮아진다.




이를 방지하기 위해 사람들의 접속이 적은

새벽시간대나 점검시간에

애플리케이션 서버를 닫은 뒤 작업을 수행한다.

댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )