반응형
상황
어떤 서비스에서 오류가 발생하여 코드를 살펴봤습니다. uuid를 이용한 로직이 있었는데 uuid 생성을 tiemstamp로 되어 있었습니다. 처음 봤을 떄는 timestamp이기 때문에 아무 문제가 없을 거라고 생각했습니다.
분석
시간을 갖고 생각을 해보니 uuid를 생성하는 시점이 사용자 요청이 올 때입니다. 사용자 요청은 api가 호출되었을 때를 의미합니다. 만약 여러 사용자가 동시에 요청하면, 시간이 같으니 timestamp가 중복되는 상황이 발생할 수 있을 것 같았습니다.
테스트
동시 요청을 테스트하기 위해 부하 테스트를 진행했습니다. 도구는 locust를 사용했습니다. 초당 10 user로 테스트해보니 곧바로 오류가 발생했습니다.
결국, uuid를 timestamp로 설정해서 같은 시각에 uuid를 생성할 경우 중복 오류가 발생했던 것입니다. uuid를 timestamp로 하지 않고 다른 로직으로 수정하니 오류가 발생하지 않았습니다.
반응형
'회고모음' 카테고리의 다른 글
iframe을 사용하는 서비스에 만난 x-frame-options deny오류 (0) | 2023.01.17 |
---|---|
python 자식 쓰레드에서 signal 처리 오류 (0) | 2023.01.15 |
올바르지 않은 비동기로직으로 쿠버네티스 probe실패 (0) | 2023.01.09 |
Elasticsearch 지연 현상 (3) | 2023.01.05 |
2022년 회고 (8) | 2023.01.02 |