프로젝트를 진행하며 구현 기능 및 error에 대한 회고

정재헌·2023년 1월 1일
0

이커머스 웹 서비스 모델링

이커머스 웹 서비스를 모델링을 1차 프로젝트로 진행하였다. 2주의 기간 동안, 로그인 및 회원가입 / path parameter를 적용한 상품 디테일 페이지 구현 / 장바구니 기능 구현 총 4가지의 기능 구현을 담당하게 되었다.

  • 로그인 및 회원가입 기능 구현 : bcrypt / jsonwebtoken

유저의 회원가입 및 로그인을 위하여 bcrypt 및 jsonwebtoken을 활용하였다. 회원가입을 위한 정보를 request로 전달 받아, 중복 여부를 확인하고 중복 회원이 아니면 bcrypt 암호화를 활용하여 유저의 비밀번호를 암호화하여 저장하였다.
그리고, 유저가 회원가입 후 로그인을 진행하면 암호화된 비밀번호로 해당 유저인지에 대한 일치 여부를 확인하고 true로 판단될 경우에 유저의 id(user table 내 유저를 구분할 수 있는 primary key이자 유저의 개인 정보와는 무관한 정보)를 담아 jsonwebtoken을 만들어 유저에게 발급하였다.

<회원가입 기능 구현>

<로그인 기능 구현>

  • path parameter를 적용한 상품 디테일 페이지 구현

유저가 상품의 상위 개념에서 하위 개념으로 들어가며, 하위 개념에만 해당하는 상품 정보들을 페이지에 노출시키기 위하여 path parameter를 활용하였다. path parameter를 적용하며 느낀 점은 filtering 또는 searching의 개념이 적용되어야 한다면 query parameter가 더 적절하며, 유저가 동등한 분류의 각기 다른 하위 개념을 동시에 볼 수 있도록 query parameter를 적용하여 기능을 구현했으면 더 좋았을 것 같다는 생각이 들었다.

<상품 리스트 페이지>

<path parameter 적용>

  • query runner를 적용한 장바구니 기능 구현

장바구니 기능 구현을 위해서 작성한 첫 코드에는 database에 저장하기 위하여 다양한 query문 활용이 필요하였다. query문을 작성하며 느낀 점은, 만약에 중간에 에러로 인하여 또는 통신 문제로 query문이 멈추게 될 경우에는 잘못된 데이터가 저장될 수도 있겠다는 생각이 들었다.
이러한 고민을 해결하기 위하여, 함께 프로젝트를 담당한 다른 백엔드 개발자 그리고 프로젝트 담당 멘토에게 의견을 구했고 query runner를 활용하게 되었다. query runner는 간단히 말해, 쿼리가 정상적으로 작동하면 정상 작동한 결과를 반환하고 중간에 에러 처리를 하게 될 경우 다시 처음 상태로 roll back 하게 만들어주는 것이다. query runner를 사용을 통해 쿼리문 뿐만 아니라 자세한 에러핸들링이 얼마나 중요한 것인지를 느낄 수 있었다.

<transaction-query runner 적용>

  • 에러핸들링에 대하여

프로젝트를 마치며 가장 크게 느낀 점은 바로, 에러 핸들링에 대한 중요성이다. 기능 구현만큼 자세한 에러 처리가 중요하며, 이런 에러 처리 덕분에 기능이 더욱 완벽해질 수 있다는 것을 느낄 수 있었기 때문이다. 개발자로 성장해가며 기능 구현 뿐만 아니라 더 좋은 에러 핸들링을 하고 싶다.

profile
백엔드 개발자

0개의 댓글