Skip to content

08.02 1조 코드 리뷰

mirageoasis edited this page Aug 2, 2024 · 6 revisions

김수현

  • 여러 사용자가 동시에 댓글을 작성할 수 있는 상황을 대비하여 최신 댓글 목록을 항상 유지하기 위해서 댓글을 새로 작성하면 전체 댓글을 새로 로드하는 것이 일반적인 방법이다.
  • 작성 후 전체 댓글을 다시 로드하면 실시간으로 최신 댓글을 확인할 수 있다.
  • 현재 내가 작성한 댓글만 새로고침되는 것은 다른 사람이 새롭게 등록한 댓글은 보이지 않으므로 잘못된 구현이다.
  • 내가 댓글 달지 않으면(이벤트가 발생하지 않으면) 댓글이 새로고침 안되는 문제는 여전함.
    • SSE나 웹소켓을 사용할 수 있지만 게시판이 굳이 실시간 소통이 필요하지 않다면 필요없음
  • 게시글 상세보기시에 어떻게 게시글, 게시글작성자, 댓글, 댓글 작성자 정보를 한번에 보여주나?
      1. post,user,comment,user를 join해서 하나의 쿼리로 반환한다.
      1. 어플리케이션에서 두번의 쿼리를 수행. 게시글 조회(join user), 커멘트 조회(join user)
      1. 클라이언트에서 여러번 요청을 보낸다. 각각의 서블릿을 호출한다. -> SPA에 유리. 댓글 refresh 위해서 각각의 서블릿 따로 호출한다. 네트워크 여러번 호출될 수 있음
  • join하는 것과 select 2번 하는 것의 차이
    • join을 하면 한 번의 데이터베이스 호출로 여러 테이블의 데이터를 가져올 수 있고, 조인된 데이터는 최신 상태로 보장됩니다.
    • select 2번을 하면 네트워크 호출이 각각 일어난다.일관성이 깨지는 문제가 발생할 수 있다.하지만, 각 쿼리를 독립적으로 최적화할 수 있다는 장점이 있다.
  • 탈퇴한 유저가 사용하던 username으로 새롭게 가입하도록 허용할 것인가? 정책 결정에 따라서 달라질듯.
    • 실제 넥슨에서는 탈퇴한 유저의 username을 랜덤한 시간에 사용할 수 있도록 풀어둔다. username 거래가 불가능하도록.
    • 그렇게 구현하려면 탈퇴한 유저의 username을 따로 테이블로 관리하고, user테이블에서 탈퇴한 유저는 username은 지워둔다. 배치 스레드가 랜덤하게 username을 푼다.

오민석

  • 유저 이름이 unique하고 변경 불가여서 primary key로 뒀는데 생각해보니 이상한 생각이였네요… 바꿔야 겠습니다!
  • 다음 과제인 페이징을 구현해야 했는데 이미 수현님이 구현하셔서 아이디어를 얻을 수 있었습니다!
  • 커넥션 풀에 관해서 승수님 코드를 봤는데 따로 구현하신 클래스를 봐도 이상한 부분이 없는데 커넥션 정리가 되어지지 않아 왜 그런지 조금 더 살펴봐야 할 것 같습니다!

박혜성

  • 커넥션 풀을 직접 구현한 분들은 자원의 효율적인 사용이 가능할 것 같습니다.
  • 수현님은 페이지네이션을 깔끔하게 구현하셔서 다음 요구사항이 나와도 변경할 점이 크지 않겠습니다.
  • 소프트 딜리트의 구현을 생각해보았습니다. 삭제된 정보를 저장하기 위한 별도 테이블을 둔다는 아이디어가 괜찮았습니다.

김현우

  • 역시 마찬가지로 커넥션 풀을 직접 구현하신 점이 인상적이었습니다.
  • 수현님은 1주차부터 페이지네이션을 직접 구현하신 것을 보면서 인상적이었습니다.
  • 수현님이 글 페이지를 불러올 때 글 정보 + 유저 정보를 디비에서 한번에 불러오는게 어떤지 물어보셨을 때 재사용성이 떨어진다고 생각해서 반대했습니다.

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally