https://www.miricanvas.com/v2/design2/8c8689d5-7164-4dfe-bd2d-93287d221cec
💻 기술적 질문
<공통 질문>
- 문제 상황 예시와 어떻게 해결했는지?
- 카테고리 검색 시 발생한 N+1 문제 상황 →
EntityGraph
와 Batchsize
를 활용해서 요청과 연관된 Entity를 함께 조회하도록 해서 해결했다.
- 도서 상세페이지는 좋아요 기능처럼 회원만 사용 가능한 기능이 있습니다. 회원이 리뷰에 좋아요를 이미 누른 상태라면 프론트에서 버튼의 색상이 다른데, 좋아요 여부를 조회해오는 과정에서 비회원이 이 페이지에 접근 시 해당 api호출에 에러가 발생했습니다. 따라서 회원이든, 비회원이든 공통으로 사용하는 리뷰는 공통 api로 분리하고 리뷰dto에서도 좋아요 여부 필드를 제거하면서 역할 분리를 강화했고 문제가 해결되었습니다.
- 예외 처리는 어떻게 처리했는지?
@ControllerAdvice
를 활용해서 공통된 양식의 에러 페이지를 렌더링해서 보여주었다.
- 성능 평가 지표가 무엇이며 개선 전후를 비교해줄 수 있는지?
- 테스트는 어떻게 작성했는지?
- Service / Controller에 slice test 방식으로 작성
- repostiory, service, cotroller 세가지 단에서 단위 테스트를 진행했습니다. repository는 실제 db에 데이터를 삽입해서 실제 환경과 가까운 테스트를 하기 위해 DataJpaTest,
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.*NONE*)
애너테이션으로 진행했습니다.
Service는 Mockito를 사용하여 진행했고, Controller에서는 WebMvcTest로 진행하였습니다.
- 협업을 위해 추가적인 노력한 부분?
- 아침 9시 30분마다 스크럼 회의 - 공지 전달 및 어려운 점 공유, 일정 논의
- 같이 점심도 먹고, 생일도 축하해주면서 동료애를 다지는 시간으로 팀워크를 다졌습니다. 이는 스스럼 없이 서로에게 피드백해줄 수 있는 팀 분위기를 만들 수 있었습니다.
- Front-Service는 어떤 역할?
- 인증/인가 확인, API 호출, 렌더링 역할 수행
- 개선한다면 어느 부분을 개선하고 싶은지?
<REST API 관련>
-
REST API로 개선하기 전에는 API 설계에 어떤 점을 고려했는지?
→ URI 설계: 리소스를 복수형으로 맞추고 계층화
→ OCP 원칙 고려: 재사용성 고려
-
REST API를 도입함으로써 얻는 장점은?
→ 표준 프로토콜 기반이라 확장 / 유지보수측에서 유리합니다.
→ 오픈 API 문서화 도식이 쉬워 협업에 편리합니다.
-
REST API에서 데이터 흐름은 어떻게 진행되나요?
→ 1. 클라이언트가 HTTP로 요청을 보냄
→ 2. 서버가 요청을 받아 DB내에서 정보를 처리후
→ 3. 응답에 대한 내용을 JSON 형식으로 일관되게 내려주는 흐름입니다.