상황

같은 videoId에 동시 시청이 발생하면, 조회수 증가 시 데이터 무결성 깨질 가능성이 있음


고려사항

실시간 조회수 증가 상황을 가정하고, 동시성 제어 방식을 비교하여 검토함

  1. 낙관적 락

    락을 걸지 않고 충돌 발생 후 처리하는 방식이라, 정합성 측면에서 부족하다 판단하여 제외

  2. 비관적 락

    데이터 정합성은 보장되지만, 락 유지 시간이 길어져 성능 저하 우려가 있어 제외

  3. redis분산락

    확장성과 속도 면에서 우수하나 구현하는데 있어 오버헤드가 크다 판단하여 제외

  4. atomic update

    쿼리 단위에서 동시성 안정성을 확보할 수 있으며, 오버헤드 없이 성능과 안정성 균형이 적절하다 판단하여 적용


구조 전환 배경

현재는 재생 시 로그 데이터만 쌓고, 이를 나중에 일괄 집계하는 구조로 변경됨