회원탈퇴 시 왜 회원 정보를 즉시 지우지 않는 사례
케이스 단순화를 위해서
회원 탈퇴 시 , 회원 인스턴스를 사용불가 처리하는 것이 아닌
관련된 정보까지 삭제한다고 가정하겠습니다.
비즈니스 로직
요구사항에 따라
- 회원 정보를 일정 기관동안 보관해야 할 때,
- 복귀를 대비한 휴면 처리
로 인해 즉시 지우지 않을 수 있음,
로 인해 즉시 지우지 않을 수 있음,
배치작업 성능
회원풀이 조금이라면 모르지만어느 정도 서비스 규모가 성장했을 때
회원탈퇴 시 실행해야하는 개인정보삭제 작업은
서비스 지연을 초래할 수 있다.
예를 들어,
프로덕션 환경에서는 이 개인정보 삭제 작업 때문에 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 개수는 적다.
-> 시스템 리소스를 덜 소비하지만 동시성이 낮아진다.
이를 방지하기 위해 사람들의 접속이 적은
새벽시간대나 점검시간에
애플리케이션 서버를 닫은 뒤 작업을 수행한다.
댓글
댓글 쓰기