Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] 정답 제출 API의 멱등성 처리 구현 #24

Open
2 tasks done
Youthhing opened this issue Jun 10, 2024 · 0 comments
Open
2 tasks done

[Feature] 정답 제출 API의 멱등성 처리 구현 #24

Youthhing opened this issue Jun 10, 2024 · 0 comments
Labels

Comments

@Youthhing
Copy link
Member

Youthhing commented Jun 10, 2024

🪶 추가할 기능 설명

/v1/api/record/reply : POST 로 부원이 정답 제출 요청을 보낼 때 같은 값에 대해 여러번 요청을 보내더라도 실제 도메인에선 이를 1번만 처리하는 ‘POST API의 멱등성’을 구현

✅ 작업 내용

  • 멱등성 키에 대해 결과를 저장한 멱등성 DB 세팅

    Redis를 활용한 IdempotencyRepository 를 통해 구현

  • 도메인 로직과 컨트롤러가 호출되기 이전에 멱등성 처리를 구현

    • Spring Interceptor를 통해 구현

스크린샷 (선택)

🔗 참고한 링크 (선택)

ETC

플로우 정리

  1. 최초 사용자의 요청 : Idempotency-Key 헤더에 멱등성 키를 넣고 요청을 보냄
  2. 서버는 멱등성 DB에 해당 키에 대한 요청 결과가 있는지 확인
    1. 키가 존재하지 않는다 :
      1. 키를 DB에 저장함 값을 처리중으로 변경.
      2. 이후 도메인 로직을 통해 응답 처리
      3. 로직이 종료되기전 해당 결과를 멱등성 DB에 저장 후 완료로 변경
    2. 키가 존재한다
      1. 처리중인 경우 : 해당 키에 대한 요청이 처리 중이라는 409 에러를 발생
      2. 완료된 경우 : 도메인 로직을 타지 않고 DB에 존재하는 결과를 반환

유의 사항

  • 사용자가 다른 요청을 보냈다면 멱등성 키가 바뀌어야함
  • 해당 결과는 오랜시간 저장할 필요가 없음 : 캐시 활용, 시간 30분
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant