[TIL] 동시성 제어 본격 시작

김시원·2023년 6월 6일
0

TIL

목록 보기
39/50
post-custom-banner

📌 What I did today

  • Artillery 사용에 익숙해지는 시간을 가졌다.
  • 간단하게 동시성 제어가 필요한 API에 대해 테스트를 진행하였다.
config:
  target: "http://localhost:3000"
  phases:
    - arrivalRate: 30
      duration: 1
scenarios:
  - flow: 
    - log: "증상 보고서 입력 POST 요청 시도"
    - post:
        url: "http://localhost:3000/report"
        json:
          symptoms: "빈혈,혈뇨,근육통"
        capture:
          json: "$.report_id"
          as: "report_id"
    - log: "환자 이송 신청 POST 요청 시도"
    - post:
        url: "http://localhost:3000/request/{{report_id}}/100"
  • transaction도 추가하지 않은 API에 대해 동시 접속자 30명을 넣으니 결과가 처참했다. 5명까지만 환자 이송 신청이 들어가야하는데 2명 빼고 28명이나 신청이 되었다.
  • Locking을 적용하기 위해 transaction을 SERIALIZABLE isolation level로 추가해주어서 다시 테스트를 진행하였는데 28명까지는 아니고 7명 정도로 횟수는 줄었지만 여전히 동일한 문제가 반복하였다.
  • BullQueue를 사용한 동시성 제어를 진행 중이다.
  • 그 외에도 1차 구현 MVP에 대해 마지막으로 리팩토링 (body data custom validation pipe 추가 & 코드 리팩토링)을 하고 main으로 merge를 하였다.

GitHub Action은 문제없이 돌아간다.

잘 반영되었는지 확인하려고 하니

암튼 한번에 될리가 없지
예전에 이 에러 봤던 것 같은데 기억을 되살려서 해결해야된다....ㅎㅎ !!!!!!! 화이탱

post-custom-banner

0개의 댓글