[TIL] 최종 프로젝트 (14) - 비관적 락의 속도 개선

J쭈디·2025년 2월 27일
0

Sparta_프로젝트

목록 보기
25/35

얼마 후 우리에겐 중간발표가 있다.
그래서 나는 다시 한 번 비관적 락을 걸었을 때 속도와 현재 개선된 비관적 락으로 실행했을 때 속도 차이가 알고 싶었다.

1. 큰 헛짓거리, 동시성 속도비교

나는 그 동안 뭔가 큰 착각을 하고 있었던 것이 분명하다. 동시성 제어를 공부하면서 테스트코드를 짜면서 테이블까지 분리해놓고 동시성 제어 체크만 하고 있었던 것이다.

사실 사용자로 하여금 빠른 서비스를 주되, 조회 수의 정합성까지 보장하고 싶었던 게 나의 취지였는데 여기서 매 번 정합성만 비교해도 될 걸 속도 비교를 하고 앉았으니 이게 참 헛생각이고 헛짓거리라는 걸 깨달아버린 것이다.

2. 다시 한 번, 테스트 코드 지옥

1. 비관적 락이 적용된 조회 속도 테스트 코드

비관적 락을 걸었을 때의 조회용 통합테스트 코드를 다시 만들어보기로 했다. 사실 테스트 코드 지옥이 다시 열린 걸 알고 제대로 멘탈이 와사삭 부서져버렸다.

그래서 조금 쉬다가 다시 시작하는참이다. 근데, 엘라스틱 서치가 첫 날과 달리 옐로우와 레드 상태인 걸 발견했다.

왜지..? 일단 GPT 선생님 왈, 샤드 손상이라는 말이라고 하는데 내 코드엔 엘라스틱 서치를 구현하지 않았기 때문에 일단 무시하고 진행하기로 했다.

쉬고 오니까 뭔가 생각보다 멀끔하게 테스트 코드를 완성해버렸다.

먼저 이전 코드를 가져와서 비관적 락이 그냥 걸려져있을 때 속도를 다시 측정해봤다.
비관적 락을 걸었을 때의 테스트 속도는 856ms였다. 생각보다 안 느린데? 라고 생각하면서 저번의 비교코드가 잘못되었다는 걸 체감했다.

근데 비관적 락의 테이블 분리한 버전에서 조회만 통합테스트로 돌리니 생각 이상으로 조회 속도가 빨랐다. 조회까지 걸리는 시간이 179ms로 엄청나게 줄어든 걸 볼 수 있었다.

2. 낙관적 락 적용된 테스트 코드

이번엔 오랜만에 낙관적 락 코드를 가져왔다. 근데 또 왜 이런거지..


버전 초기화가 안 되었다길래 DB를 보니 전부 null... 이거 아주 nullnull하네....

이 늦은 시간에 하나하나 0 치고 있기엔 채용공고 더미가 1만건이고, 그렇다고 초기화 테스트까지 뚝딱 만들 능력은 없어서 반칙을 사용하기로 했다. GPT 도와줘...! 아니 도대체 뭐 얼마나 시간이 늦었다고 그래? 라고 말할 사람이 혹시나 있진 않겠지만 현재 시간이다

자고싶어라

하지만 나는 이걸 오늘 끝내고 밤까지 모의면접 영상까지 찍어야 했기에... 나를 슬프게 하는 일정들 어쩔 수 없다 ㅎㅎ

근데 GPT가 준 테스트 코드가 안 돌아간다. 역시 깡통이군
어쩔 수 없이 버전 컬럼 지우고 다시 돌렸는데 여전히 null이다.

그래서 @Column(nullable = false)를 붙이고 초기값을 0으로 설정해줬더니 드디어 0으로 제대로 생성되었다.

그리고 결과는 역시 느리게 나와서 1335ms이다.

이는 동시성 제어는 배제하고, 조회 속도를 본 결과 이렇게 된 거고 만약에 동시성 제어로 테스트를 하게 되면 1000 미만으로 떨어지고 정합성 때문에 실패 처리가 되어버린다.

일단 이렇게 결론이 나서, 드디어 짧은 비교영상들도 찍었고, 쉬엄쉬엄 뭐라도 먹어가면서 남은 시간동안 Jmeter도 알아보고, 어떻게 스토리텔링을 해서 내가 개발한 부분을 잘 이야기할지 고민해봐야겠다.

profile
언제 어느 위치에 있더라도 그 자리의 최선을 다 하는 사람이 되고 싶습니다.

0개의 댓글