Lock
[Spring] 좋아요 기능에 대한 동시성 문제
[Spring] 좋아요 기능에 대한 동시성 문제
2025.08.03현재 진행하는 프로젝트에서 뉴스피드의 좋아요 기능에 대한 동시성 문제 해결 과정을 공유하고자 한다. 현재 프로젝트의 좋아요 기능현재 프로젝트의 좋아요 기능은 여타의 서비스들의 좋아요 기능(유튜브, 인스타그램 등)과 유사하다. 여기서 유사하다는 의미는, 좋아요 버튼을 토글 방식(한 버튼을 통해 좋아요와 좋아요 취소를 하는 것)으로 구현한 점이 비슷하다는 것을 의미한다.즉, 좋아요를 안한 상태에서는 좋아요 버튼으로 활성화되고 좋아요를 한 상태에서는 좋아요 취소 버튼으로 활성화되는 것이다. 이렇게 구현하다보니 작은 이슈들이 생겼는데, 이제부터 그 내용을 얘기하고자 한다.(물론 이 방식이 아니라 다른 방식으로 구현해도 생길 수 있는 이슈들이다) 좋아요 중복 클릭 문제(feat. 좋아요 레코드 중복 삽입)흔히 따..
[Unix Programming] Record Locking
[Unix Programming] Record Locking
2021.12.02Record Locking은 두 명 이상의 파일 사용자가 동시에 정보를 업데이트하려고 할 때 발생할 수 있는 오류, 즉 경쟁상태를 방지하기 위해 파일 또는 파일의 일부를 잠그는 것이다. Record Locking read lock - 여러 프로세스들이 같은 구역 동시에 설정 가능(write lock 적용 불가) write lock - 다른 프로세스들의 읽기나 쓰기 록을 불허 record lock을 걸기 위해서 fcntl이란 함수를 사용한다. #include int fcntl(int filedes, int cmd, struct flock *ldata); 여기서 filedes는 file descriptor를 의미하고, cmd는 F_GETLK, F_SETLK, F_SETLKW 을 넣어 설정할 수 있다. str..