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

서포터가 선택완료 된 후 기간 만료가 되면 3일 뒤 자동 리뷰 완료로 상태 변경하는 기능 구현 #727

Open
wants to merge 7 commits into
base: dev/BE
Choose a base branch
from

Conversation

cookienc
Copy link
Member

관련이슈

참고사항

  • 서포터가 리뷰 완료하고 리뷰 완료 버튼을 안 누르면 아래와 같은 문제가 발생합니다.

    • 서포터 피드백 진행 안 됨
    • 서포터 리뷰 완료 수 증가 안 됨
  • 이 문제를 해결하기 위해서 리뷰 진행 중 + 기간 만료 후 3일이면 자동으로 리뷰 완료 변하는 기능 개발했습니다.

  • Schedule를 1분마다 돌리는 방향도 있지만, 1분마다 돌리는거에 대한 거부감 때문에 TaskSheduler로 개발했습니다.

  • 이 과정에서 schedule 패키지 안에 deadline을 만들고 command, query를 분리했습니다.

  • 기존에 있던 schedule도 이에 맞게 이름도 변경했습니다.

  • 개발하면서 고련한건 WAS가 늘어났을 때 문제, 배포 시에 schedule 유실 문제입니다.

    • WAS가 늘어나면 여러 WAS에서 finishReview()를 호출해서 reviewCount가 비정상적으로 증가될 여지가 있어서 비관적 락을 사용해서 예방했습니다.
    • 배포시 schedule 문제는 Transaction outbox pattern을 도입해서 schedule을 등록할 때 db에 저장하고 스프링 애플리케이션이 켜지면 db에서 불러와서 schedule을 등록하도록 했습니다.

참고

@cookienc cookienc self-assigned this Feb 20, 2024
@cookienc cookienc added ✨ feat 기능 개발하고 오겠습니다. 💙 BE 백엔드 작업입니다. labels Feb 20, 2024

private static final int GRACE_PERIODS_DAYS = 3;

private final TaskScheduler taskScheduler;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 일단 해보고, 불편하면 우테코 금지되었던거 써볼까...?

@Transactional(readOnly = true)
public RunnerPost joinBySupporter(final Long runnerPostId) {
return runnerPostDeadlineQueryRepository.joinSupporterByRunnerPostId(runnerPostId)
.orElseThrow(() -> new ScheduleBusinessException(String.format("RunnerPost를 찾을 수 없습니다. runnerPostId=%s",runnerPostId)));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

마지막 컴마 뒤에 띄어쓰기
밑에 함수도 마찬가지

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💙 BE 백엔드 작업입니다. ✨ feat 기능 개발하고 오겠습니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants