- [ backend/삽질일기 ][spring] 분산락을 걸어도 동시성 문제가 발생한다?! (feat. 트랜잭션 AOP)2024-12-12 21:50:19🔗 [redis] redisson으로 분산락 걸어서 동시성 문제 해결하기 (근데 해결 안됨)때는 분당으로 교육 가던 길.. 갈 길도 멀고 가방이 무거워 노트북을 가져가지 않았다. 근데 아침 7시부터 슬랙 알림이 100개 넘게 왔다. (😈 : 어? 노트북 두고 간다 장애각이다) 앱 진입 시점에 사용하는 API + 사용자의 포기하지 않는 인내심이 합쳐져 팀원들한테 슬랙 알림 테러를 시작했다.해당 포스팅에서 처리한 줄로만 알았던 데이터베이스 동시성이 원인이었다. 우리 서비스는 하루에 한 번만 미션 인증을 할 수 있는데 Repeatable Read 격리 수준이 INSERT 작업을 예방할 수 없어 API를 빠르게 연달아 호출하면 여러 번 인증하는 것이 가능했다.이러한 동시성 문제를 막고자 분산락을 적용했고 잘..
- [ backend/삽질일기 ][node] 당신의 socket.io가 동작하지 않는 이유 (Feat. socket.io는 파싱을 해)2023-12-23 16:58:53소켓아이오를 소켓아이고로 부르기로 결심한 이유 😇 지금부터 말하는 트러블 슈팅은 단일 서버에서 하나의 웹소켓을 이용하는 경우엔 발생하지 않았을 것이다. 하지만 여러 path에 대해 웹소켓을 사용하고 있다면 이 문제에 부딪혔을 수도 있다. 아주 허무하지만, 상상도 못한 이슈 지금부터 시작하겠다. 삽질의 시작, 라우팅 시작에 앞서 프로젝트 구조를 간단히 설명하겠다. 백엔드는 두 개의 서버를 띄우고 있고, nginx가 가장 앞단에 위치하여 경로에 따라 다른 서버로 프록시한다. nginx 라우팅 정보 - /signal : 시그널링 서버 - / : WAS 서버 두 서버 모두 웹소켓을 사용하고 있는데 아이너리하게 오직 시그널링 서버로의 소켓 요청만 동작하지 않았다. 결론부터 말하자면, socket.io가 url에다..