Skip to content

1조 코드 리뷰

hek edited this page Aug 1, 2024 · 8 revisions

홍은기

배운점

  • jstl 문법과 js를 같은 파일안에 동일한 문법을 사용하면 충돌날 수 있다.(js 파일을 분리하자)
  • 댓글 조회 방식을 join을 사용하여 한 번의 쿼리로 글까지 가져올지 댓글 조회, 글 조회 각각 진행하여 2번의 쿼리로
  • 요청 앞단에 인증 필터를 구현하면 화이트 리스트(또는 블랙 리스트)의 url만 추가하면 되므로 좋은 방식인 것 같다.
    현재 프로젝트 구조에 따라 리팩토링 여부를 결정하면 될 것 같다.
  • 게시글 조회시 링크드 해시 맵을 사용한 캐싱을 직접 구현하신 부분이 인상 깊었습니다. 직접 구현하려면 힘들 것 같은데 역시 개발자가 불편하면 사용자가 편하다는 것을 느꼈습니다.
    캐시 크기가 매우 작다고 생각했음에도 2배 이상의 성능 차이가 있다고 들어서 흥미로웠습니다.

이경민

💡 구현 포인트

  • 7단계 구현 완료했습니다!
  • Servlet과 Filter에 대해서 최대한 주석을 많이 작성해보려고 했습니다.
  • Servlet과 Filter에 대해서 Mock을 활용해서 테스트를 진행했습니다.
  • Article과 Reply에 대해 외래키를 적용해서 조회 시 JOIN 연산을 활용하도록 했습니다.

❗️ 배운점

  • Article 조회 과정에서 캐싱을 사용하는 방법(승훈님)이 매우 인상깊어서 한번 적용해보고 싶다는 생각이 들었습니다.
  • 페이지네이션 구현(준기님)이 인상깊었고 N+1 문제를 어떻게 해결할지 생각해봐야 할 것 같습니다.
  • 생각보다 .xml을 활용한 설정 방식이 많다는 것!

김준기

궁금한 점

게시글 상세 조회할 때, 댓글도 함께 조회해야한다. 이 때 조회로직을 어떻게 구성했는지?

  • 방법1. Repository에서 Join 한 방 쿼리
  • 방법2. Service에서 쿼리 나눠서 조회하고, ReponseDTO에 조립
  • 방법3. 게시글 조회 쿼리, 댓글 조회 쿼리 나눠서 조회한다음 각각의 ResponseDTO를 setAttribute

게시글 상세 조회에서 댓글을 페이지네이션 할 수 있는가?

  • 기존에 랜더링했던 데이터들을 유지시킬 수 없으니, 기존 댓글들도 어쨌든 다시 조회해야하지 않나?
  • 결국 댓글 조회만 AJAX 같은 요청을 해야할 것 같은데?

쿠키 / 세션 기반 인증 필터 구현

Q. 인증 구현에서 쿠키 검증도 해줘야하는 것 아닌지? → 외장 톰캣에서 기본 strategy가 쿠키에 JSESSIONID가 있는지 확인해준다고 한다.

인가 필터도 구현했는지?

  • 안한 측면: 인가는 요구사항에 따라 일반화하기 어렵다고 생각했음

예외 핸들링 → 각 서블릿에서?, 예외에 따른 세부적인 예외 페이지도 구현했는지?

  • web.xml에서 예외와 예외 페이지를 매핑할 수 있다.
<exception-type>
<location>
  • 나머지 기타 에러는 톰캣 에러로 빠진다.
  • 예외 메시지를 동적으로 랜더링할 수 있는지는 확인이 필요하다.

인상 깊은 코드

LRU 캐싱 구현

  • Map = LinkedHashMap
    • loadFactor
    • accessOrder
    • removeEldest
  • 스프링의 cache 애노테이션도 원리는 비슷하다고 한다.

강승훈

  • error 처리가 web.xml에서 설정해도 예외 객체가 전달되어 forward 된다
  • 상세한 주석
  • web.xml도 데이터를 넣어서 환경변수처럼 사용할 수 있다.
  • 속도가 느려서 분발이 필요한 것 같다.

김현준

배운 점

  • 예외를 던지는 것으로 서블릿에 등록하면 예외 페이지로 갈 수 있다.
  • jstl과 js 문법이 겹치기 때문에 분리 해주어야 컴파일이 된다.
  • LRU 캐시를 이용해서 캐싱을 할 수 있다. Map으로 가능함.

느낀 점

  • xml 활용에 있어 다양한 활용이 된다는 것을 알게 되었어요.
  • 캐싱 부분은 정말 신기했는데 다양한 접근을 고려하게 된거 같아요.

김규원

배운점

  • LRU 캐시 : Post 전체 조회는 자주 쓰이기 때문에 LRU 캐시로 캐싱을 해서 반환한다는 점이 인상적이었습니다. 실제로 2배 이상 성능이 향상되었다고 하셔서 저도 캐싱을 써봤으면 좋았을거 같다는 생각이 들었습니다.
  • Db config 를 톰캣 context 변수로 갖고 이것을 로딩해서 쓰면 테스트 코드에 대한 설정을 넣을 때 편리하다는 점이 이상적이었습니다.
  • 줄 바꿔쓰기가 안 먹히는 문제 때문에 jstl 를 써야하나 했는데 Whitespace pre:wrap 으로 간단하게 해결이 되었다고 하셔서 저도 써야될거 같습니다.


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

개인 활동 페이지

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

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally