일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코딩테스트
- TCP/IP
- OSI 7계층
- 4-way-handshake
- JMeter
- RDS
- N+1 문제
- OOP
- 객체지향
- 로그인
- 형상관리
- 스프링부트
- 트러블 슈팅
- JWT
- Spring Security
- EC2
- 알고리즘
- Spring
- 3-way-handshake
- 동시성 문제
- 백준
- redis
- 인메모리
- 네트워크
- 프로토콜
- AWS
- Java
- docker
- 성능 개선
- Today
- Total
목록동시성 문제 (2)
열공스토리
현재 git과 같은 형상관리 시스템을 활용하기 어려운 초보 개발자들을 위한 형상관리 웹 서비스를 개발하고 있습니다. 형상관리 서비스에는 "팀 프로젝트 최초 저장"이라는 API가 존재하는데, 이는 팀을 만들고 팀의 레포지토리를 만든 다음에 최초로 프로젝트를 업로드하는 API 입니다. 처음에는 이 API를 여러 팀원이 동시에 요청했을 경우 파일을 업로드 했을 경우 서버에는 최초 한 팀원의 파일만이 저장되는 것을 의도하였습니다. 하지만 의도와 달리 여러 팀원이 동시에 업로드한 파일이 서버에 모두 저장되었고 이러한 문제를 DB 락을 걸어 우회적인 방법으로 해결하였습니다. 이번 포스팅에서는 위 상황에서의 문제를 해결하는 과정에 대한 자세한 기록을 남겨보았습니다. 처음 "팀 프로젝트 최초 저장" API 요청에 대..
이번 포스팅은 최근 게시판 프로젝트를 진행하면서 발생한 좋아요 기능 동시성 문제 해결과정에 대한 회고입니다. 트러블 슈팅 과정을 보기에 앞서, 동시성 문제란 무엇인지 간단하게 짚고 넘어가겠습니다. 동시성 문제란? 동시성 문제란 여러 스레드가 한 공유 자원에 대해 동시에 읽기(Read)와 쓰기(Write) 작업을 처리할 때 발생하는 문제입니다. 예를 들어, Thread A와 Thread B가 우리가 흔히 알고있는 게시글의 좋아요 기능을 동시에 서버에 요청한다고 생각해 봅시다. 이런 상황에서 우리는 게시글의 좋아요 수가 기존의 좋아요 수에서 2가 증가된 값을 기대할 것입니다. 하지만 동시성 문제가 발생하면 예상과는 달리 좋아요 수가 1밖에 증가하지 않게 됩니다. 이러한 현상이 발생하는 이유를 다음 그림에서 ..