우아한테크코스/미션 기록

[레벨2] 장바구니 미션

d02 2023. 5. 14. 22:03

기능 요구사항

Spring Web MVC를 이용하여 쇼핑몰의 상품 관리 기능을 구현하는 미션
1단계
- 상품 목록 페이지 연동
- 상품 관리 CRUD API 작성
- 관리자 도구 페이지 연동
2단계
- 사용자 기능 구현 (basic auth 인증 적용)
- 사용자 설정 페이지 연동
- 장바구니 기능 구현
- 장바구니 페이지 연동

작성한 요구사항 목록, API 명세, 코드리뷰 피드백 및 리팩터링 목록은 저장소의 README.md(이곳)에서 확인할 수 있다.

전체 회고

솔직히 말하자면, 장바구니 미션의 경우 2단계에서부터 진하게 몰입하지 못했다는 아쉬움이 있다.

사실 둘 다 제대로 준비했어야 맞는 건데, 테코톡 준비에 정신이 팔려서 2단계 미션을 늦게 진행했기 때문이다.

무사히 발표를 마쳤고, 선택과 집중이 필요한 상황이었다고도 생각한다.

하지만 성장할 수 있는 학습 키워드를 많이 얻었음에도, 뒤늦게 밀린 과제 하듯이 진행한 것이 아쉽다. 

둘 다 잘 해낼 수는 없었을까? 너무 쉽게 포기하지는 말아야겠다는 교훈을 얻었다.

디버깅을 통해 학습하기

이번 미션에 앞서, 강의에서 제공해준 인증 관련 학습테스트에서는 해당 코드를 디버깅을 통해서도 공부해보라고 말하고 있었다.

하지만 어느 부분을 디버깅해서, 무엇을 보아야 할지 감이 안와서, "디버깅"이란 키워드를 머릿속에 남겨둔 뒤 일단 미션을 시작했다.


도메인 관련 테스트만 작성할 때는, 이 테스트가 왜 실패하는지 파악하기 어려운 경우가 드물었다.

만약 실패했다면, 전부 내가 구현한 내용이기에 어느 부분을 살펴보아야 하는지 금방 알 수 있었기 때문이다.

하지만 Spring을 사용하고, 통합 테스트나 DB와 연결하여 실행하는 테스트를 작성하게 되면서는 종종 테스트의 빨간 불 때문에 오랜 시간을 붙잡고 있어야 했다.

왜 잘못 되었는지 이전에, 어느 부분을 살펴보아야 하는지를 알지 못할 때에는 문제 해결을 빠르게 할 수 없었다.


그래서 이번 리뷰어님께 "어느 부분을 디버깅해보아야 할지"에 대한 도움을 정말 많이 받은 것 같다.
더 학습해보아야 할 내용에 대해서도 디버깅해볼 만한 포인트를 제시해주셔서 감사했다.

(예를 들어 테스트에서 원하는 빈이 주입이 안되는 문제를 해결하기 어려웠는데, 테스트에서 ApplicationContext를 생성하더라도 모든 빈을 등록하는 것이 아니라는 걸 모르기 때문이었다. 이에 대해서는 TestContext 클래스를 확인해볼 수 있었다!)


작동 원리보다 사용법을 우선순위로 학습하는 것은 좋지만, 어느 정도는 작동 원리나 내부 구조에 대해 알고 있어야 한다는 것을 느꼈다.

그래서 앞으로는 더 적극적으로 디버깅을 하려는 자세로 학습해보려고 한다.

 

미션 로그

  • 뷰 컨트롤러에서 Model vs ModelAndView 사용 차이
  • Mockito 사용하여 테스트하기
  • @Interceptor, @ArgumentResolver
  • @ResponseEntityExceptionHandler
  • @JdbcTest에서 원하는 Datasource 사용하게 하기
  • TestContext에 필요한 Bean 등록하는 법
  • @Valid, @Validated 차이
  • HTTP 응답 상태 코드 적절하게 선택하기
  • HTTP 메서드 중 PUT vs PATCH
  • RESTful API
  • DDL에서 auto increment인 정수값에 unsigned 적용하면 좋은 점
  • DML insert ignore
  • 외래키 장단점

 

주요 기술 부채

  • DB 초기화 전략 정리하기
  • JpaRepository의 구성 방식(DAO 인터페이스 관련)
  • @Transactional 구체적인 사용법, 동작 원리 ***
  • API 명세 문서화 관리 도구 사용해보기(RestDocs, Swagger ...)
  • 도메인 중심 패키지 구조 vs 계층형 패키지 구조
  • Spring의 각종 동작 원리를 모두 자세히 알지는 않아도, 문제 해결을 할 수 있게 키워드로는 파악하고 있자
반응형