https://www.miricanvas.com/v2/design2/8c8689d5-7164-4dfe-bd2d-93287d221cec

💻 기술적 질문

<공통 질문>

  1. 문제 상황 예시와 어떻게 해결했는지?
    1. 카테고리 검색 시 발생한 N+1 문제 상황 → EntityGraphBatchsize를 활용해서 요청과 연관된 Entity를 함께 조회하도록 해서 해결했다.
    2. 도서 상세페이지는 좋아요 기능처럼 회원만 사용 가능한 기능이 있습니다. 회원이 리뷰에 좋아요를 이미 누른 상태라면 프론트에서 버튼의 색상이 다른데, 좋아요 여부를 조회해오는 과정에서 비회원이 이 페이지에 접근 시 해당 api호출에 에러가 발생했습니다. 따라서 회원이든, 비회원이든 공통으로 사용하는 리뷰는 공통 api로 분리하고 리뷰dto에서도 좋아요 여부 필드를 제거하면서 역할 분리를 강화했고 문제가 해결되었습니다.
  2. 예외 처리는 어떻게 처리했는지?
    1. @ControllerAdvice 를 활용해서 공통된 양식의 에러 페이지를 렌더링해서 보여주었다.
  3. 성능 평가 지표가 무엇이며 개선 전후를 비교해줄 수 있는지?
  4. 테스트는 어떻게 작성했는지?
    1. Service / Controller에 slice test 방식으로 작성
    2. repostiory, service, cotroller 세가지 단에서 단위 테스트를 진행했습니다. repository는 실제 db에 데이터를 삽입해서 실제 환경과 가까운 테스트를 하기 위해 DataJpaTest,

@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.*NONE*) 애너테이션으로 진행했습니다.

Service는 Mockito를 사용하여 진행했고, Controller에서는 WebMvcTest로 진행하였습니다.

  1. 협업을 위해 추가적인 노력한 부분?
    1. 아침 9시 30분마다 스크럼 회의 - 공지 전달 및 어려운 점 공유, 일정 논의
    2. 같이 점심도 먹고, 생일도 축하해주면서 동료애를 다지는 시간으로 팀워크를 다졌습니다. 이는 스스럼 없이 서로에게 피드백해줄 수 있는 팀 분위기를 만들 수 있었습니다.
  2. Front-Service는 어떤 역할?
    1. 인증/인가 확인, API 호출, 렌더링 역할 수행
  3. 개선한다면 어느 부분을 개선하고 싶은지?

<REST API 관련>

  1. REST API로 개선하기 전에는 API 설계에 어떤 점을 고려했는지?

    → URI 설계: 리소스를 복수형으로 맞추고 계층화

    → OCP 원칙 고려: 재사용성 고려

  2. REST API를 도입함으로써 얻는 장점은?

    → 표준 프로토콜 기반이라 확장 / 유지보수측에서 유리합니다.

    → 오픈 API 문서화 도식이 쉬워 협업에 편리합니다.

  3. REST API에서 데이터 흐름은 어떻게 진행되나요?

    → 1. 클라이언트가 HTTP로 요청을 보냄

    → 2. 서버가 요청을 받아 DB내에서 정보를 처리후

    → 3. 응답에 대한 내용을 JSON 형식으로 일관되게 내려주는 흐름입니다.