-
Notifications
You must be signed in to change notification settings - Fork 0
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>
- 나머지 기타 에러는 톰캣 에러로 빠진다.
- 예외 메시지를 동적으로 랜더링할 수 있는지는 확인이 필요하다.
- 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 으로 간단하게 해결이 되었다고 하셔서 저도 써야될거 같습니다.