내일배움캠프 NestJS 프로젝트 코드리뷰 - 온라인 공연 예매 서비스
내일배움캠프를 진행한지도 벌써 3개월 정도로 접어들고 있습니다. 이 글에서는 내일배움캠프에서 필자가 진행한 NestJS 개인 프로젝트와 튜터님께 받은 코드리뷰에 대해 소개해보겠습니다.
내일배움캠프 NestJS 프로젝트 코드리뷰
1주일 정도 더 된 기간동안 이번엔 온라인 공연 예매 서비스를 만들어보았습니다. 프로젝트의 소개는 아래와 같습니다.
Project Outline
TypeScript와 NestJS를 이용한 온라인 공연 예매 서비스 프로젝트.
✅필수 기능 구현 리스트
- 로그인 / 회원가입
- 프로필 보기
- 새 공연 등록 (관리자만)
- 공연 목록 보기
- 공연 검색하기
- 공연 상세보기
- 예매 확인하기 (사용자 본인 예매 정보만 조회가능)
🏆 추가 기능 구현 리스트
- 공연의 좌석 예매 정보 확인하기
- 공연 등급별 예매하기
- 동시성 처리하기
- 예매 취소하기
Technology Stack
- 프로그래밍 언어: TypeScript, JavaScript (Node.js)
- 프레임워크: Nest.js
- 데이터베이스: TypeORM, AWS RDS
- 버전 관리 시스템: Git
- 개발 도구: Visual Studio Code
- 배포 환경: GitHub
- 테스트 도구: Thunder Client
API Specification : 바로가기
ERD : 바로가기
그 밖의 프로젝트 내용과 소스가 궁금하다면 아래 링크를 참고 바랍니다.
NestJS 프로젝트 코드리뷰
위 진행한 프로젝트에 대한 코드리뷰를 제출 후 며칠 만에 받을 수 있었습니다.
문서작성은 협업을 위한 최소한의 배려
가장 먼저 README 작성이 잘되서 좋았다는 칭찬과 함께, main.ts에 사용하지 않는 변수는 정리할 것을 지적하였습니다. 그리고 controller단에서 dto값을 넘길 때 dto에서 만든 순서대로 일일이 지정하여 보냈는데 이럴 경우 api의 변화가 생길 시 일일이 변수추가해야하는 번거로움이 생길 수 있다고 조언하였습니다. 이에 class처럼 객체화하여 service로 바로 보내는 것을 추천했습니다.
class-validator의 다양한 기능을 발견하다
코드리뷰 보면서 새로 알게 된 것도 있었습니다. 저는 회원가입에서 비밀번호 체크시 service단에서 password의 length을 불러와 6자리 이하면 그 때 6자리 이상 쓸 것을 반환하였는데, class-validator에 length 데코레이터라는 기능이 있다고 코드리뷰에서 알려주었습니다.
Repository 관리는 별도로 하는게
또한 위 프로젝트 소스를 보면 알 수 있지만 sevice에서 Retository에 entity를 추가하여 사용하고 있는데, 이럴 경우 Repository의 기본 메소드 밖에 사용할 수 없고, DB에 접근하는 소스 코드가 sevice에 같이 섞여 있게 되어 유지보수성이 떨어진다는 지적을 받았습니다.
이에 Repository를 관리할 파일을 따로 만들어 Class화 한 후 코드를 정리하는 것을 추천하였습니다. 이 조언과 함께 참고할 만한 페이지를 아래처럼 소개해주었습니다.
위 글을 요약하면 현재 typeORM이 버전이 올라가면서 데코레이터로 불러 쓸 수 있던 @EntityRepository()를 사용할 수 없게 되어 Repository를 불러올 수 있는 decorator를 커스텀 해서 써야 한다는 내용이었습니다. 상당힌 긴 글로 설명 해주었기에 글 읽는데 시간이 꽤 걸렸고, 이해하는 데에는 읽은 두배 이상의 시간이 걸렸습니다.
지금도 다 이해한 건 아니지만 어느 정도 흐름을 파악할 수 있었습니다.
잦은 지적으로 머리가 아파오던 즈음
튜터님은 http statuscode 칭찬 하나를 타이밍 좋게 적어주었습니다. 덕분에 코드리뷰를 끝까지 볼 수 있었습니다.
총평을 끝으로
아래의 총평을 끝으로 튜터님의 코드리뷰는 끝났습니다.
NestJS를 사용해서 간단한 API 서버 구축에 성공하셨습니다.
TS도 어색하지만 그럭저럭 사용하실수 있는것으로 보입니다. (물론 저도 그럭저럭 사용합니다. 잘 사용하려면 눈, 손, 귀가 익을만한 충분한 시간이 필요해요 ㅎㅎ) 이번에 서버 구축해보셔서 알겠지만 NestJS는 REST를 만들어내기 아주 좋은 프레임워크입니다. 대부분 형식이 고정되어 있고 정해져있다는것을 알 수 있을거에요. 프레임워크에서 제공하는 기능과 API를 계속해서 만들어내다보면 어느새 익숙해지고 그 안에서 트러블 슈팅 하다보면 실력이 점점 늘어가는걸 느낄수 있을거에요. 앞으로 꾸준히 공식문서도 보시고 다른 사람 코드도 보면서 익숙해지려 노력하시면 좋은 결과 있을것 같습니다.
다른 프로젝트에서도 그랬지만 결국 공식문서 잘 이해할 줄 알면 기능 구현하는데 많은 도움이 되는 듯 했습니다. 그걸 알다가도 막상 오류가 발생하면 구글링을 우선으로 하곤 했습니다. 공식문서를 더 가까이 해야겠다는 다짐으로 마무리 할 수 있었던 이번 프로젝트였습니다.
▼ NestJS 이렇게 써보셨나요? ▼
'내일배움캠프' 카테고리의 다른 글
내일배움캠프 Node트랙 심화 프로젝트 역할 및 진행사항 2 (0) | 2024.01.09 |
---|---|
내일배움캠프 Node트랙 심화 프로젝트 역할 및 진행사항 (1) | 2024.01.08 |
내일배움캠프 백오피스 프로젝트 - 펫시터 매칭 사이트 후기, 소감 (1) | 2023.12.18 |
내일배움캠프 개인 과제 피드백 - validate 구문은 리소스가 적게드는 로직부터 검사하기 (0) | 2023.11.20 |
알고리즘 스터디 방법, 효율적인 학습과 성장을 위한 가이드 (0) | 2023.11.09 |