1. 회원가입 ~ 토큰 재발급까지는 아주 좋습니다.

  2. 로그아웃을 할때 accessToken검증은 굳이 하지 않으셔도 괜찮기는 합니다. 물론 하면 좀 더 꼼꼼하다는 인상을 줄 수 있긴 하지만 로그아웃시 accessToken이 만료되어있다면 다시 발급하고 로그아웃을 해야해서 비효율적이긴 합니다.

  3. 알림은 pulling 방식이네요 MVP단계에 맞는 방식으로 보입니다.

  4. 입찰 등록은 버그가 많이 나는 방향입니다. 입찰시 보증금 결제 방식은 환불의 문제와 체결 후 실제 결제 프로세스에서 문제가 발생합니다.

    1. 판매자/구매자에게 상품 대금 결제는 어떻게 진행되는가
    2. 남은 보증금 처리는 어떻게 되는가
    3. 결제 실패시 체결 롤백 로직은 있는가
    4. 비슷한 시기에 값이 들어왔을때는 어떻게 판단하는가?
      1. 보증금 들어온것 우선
      2. 결제 시도 시점 우선
    5. 알람 설정이 제대로 되어있지 않는데 사용자에게 어떻게 알려줄것인가.
    6. 여러 제품을 사고싶은 사용자라면 어떻게 대응을 해야 하는가
  5. 플로우를 그린다는것은 api 단위로 그리면 서로가 어색해 할 수 있습니다. 결제 전체 플로우도 추가해 주세요.

    ex) 입찰 등록 → 보증금 결제 → 체결 대기 → 체결 성공 → 본 결제 → 배송 시작 → 구매 확정 → 정산

  6. kafka가 어디에 사용중인지 확실하게 보이지 않습니다. 현재는 입찰 / 환불 / 체결 이렇게 세 곳에서 사용한다고 나와있는데 이 세가지는 유기적으로 이뤄져 있기 때문에 어떻게 호출이 된다, 어떻게 이벤트가 흘러간다는게 보이지 않습니다.

  7. 가능하다면 트랜잭션 경계도 표시해주는것이 좋습니다. (이건 너무 세세한것이라 구현하면서 진행해도 크게 문제되지 않습니다.

  8. 상품 등록시 DB저장은 성공했는데 이미지 S3에서 문제가 발생했을 경우 500 Error로 트랜잭션 롤백이 있는데 이건 위쪽 DB Insert까지 인가요? 만약 그렇다면 S3를 먼저 업로드하고 잘 정제된 데이터를 DB저장하는게 좋아보입니다.

  9. 스프링 외부의 데이터들을 사용할때는 최대한 많은 데이터를 모아서 한번에 처리하는 습관을 가지시는것이 좋습니다. 결제의 경우 경매와 같이 실시간으로 많은 데이터가 오갈때는 끝난 결과를 활용해 결제를 진행해야 하고 데이터베이스에 저장할때도 정말 확정된 데이터 한번만 저장하는것이 좋습니다.