본문 바로가기
내일배움캠프

내일배움캠프 NestJS 프로젝트 코드리뷰 - 온라인 공연 예매 서비스

by 코드스니펫 2024. 1. 7.
반응형

내일배움캠프 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 : 바로가기

 

그 밖의 프로젝트 내용과 소스가 궁금하다면 아래 링크를 참고 바랍니다.

 

 

GitHub - lemon-table/nestjs_project

Contribute to lemon-table/nestjs_project development by creating an account on GitHub.

github.com

 

 

NestJS 프로젝트 코드리뷰

 

 

내일배움캠프 개인 과제 피드백 - validate 구문은 리소스가 적게드는 로직부터 검사하기

내일배움캠프 개인 과제 피드백 - validate 구문은 리소스가 적게 드는 로직부터 검사 내일배움캠프 주특기 입문 개인 과제를 마쳤습니다. 끝나고 개인별로 피드백을 주셨는데 그 중 필자가 받은

lemonlog.tistory.com

 

위 진행한 프로젝트에 대한 코드리뷰를 제출 후 며칠 만에 받을 수 있었습니다.

 

문서작성은 협업을 위한 최소한의 배려

가장 먼저 README 작성이 잘되서 좋았다는 칭찬과 함께, main.ts에 사용하지 않는 변수는 정리할 것을 지적하였습니다. 그리고 controller단에서 dto값을 넘길 때 dto에서 만든 순서대로 일일이 지정하여 보냈는데 이럴 경우 api의 변화가 생길 시 일일이 변수추가해야하는 번거로움이 생길 수 있다고 조언하였습니다. 이에 class처럼 객체화하여 service로 바로 보내는 것을 추천했습니다. 

 

 

class-validator의 다양한 기능을 발견하다

코드리뷰 보면서 새로 알게 된 것도 있었습니다. 저는 회원가입에서 비밀번호 체크시 service단에서 password의 length을 불러와 6자리 이하면 그 때 6자리 이상 쓸 것을 반환하였는데, class-validator에 length 데코레이터라는 기능이 있다고 코드리뷰에서 알려주었습니다. 

 

 

내일배움캠프 백오피스 프로젝트 - 펫시터 매칭 사이트 후기, 소감

내일배움캠프 백오피스 프로젝트 - 펫시터 매칭 사이트 후기, 소감 일주일간 팀원과 작업한 펫시터 매칭 사이트가 끝났습니다. 여러 우여곡절이 있었지만 목표한 대로 마쳤기에 만족하고 있습

lemonlog.tistory.com

 

Repository 관리는 별도로 하는게

또한 위 프로젝트 소스를 보면 알 수 있지만 sevice에서 Retository에 entity를 추가하여 사용하고 있는데, 이럴 경우 Repository의 기본 메소드 밖에 사용할 수 없고, DB에 접근하는 소스 코드가 sevice에 같이 섞여 있게 되어 유지보수성이 떨어진다는 지적을 받았습니다. 

 

이에 Repository를 관리할 파일을 따로 만들어 Class화 한 후 코드를 정리하는 것을 추천하였습니다. 이 조언과 함께 참고할 만한 페이지를 아래처럼 소개해주었습니다. 

 

 

Nest <Custom Repository> 생성부터 적용까지 __ (feat. 회원가입 인증)

바로 Custom Repository를 들어가면 개연성이 없으므로 어떠한 과정에서 어떠한 문제가 있었고, 우리가 직접 Custom Repository(사용자 생성 레포지토리)를 생성해야 하는 이유를 미리 말하고자 한다. 또

velog.io

 

위 글을 요약하면 현재 typeORM이 버전이 올라가면서 데코레이터로 불러 쓸 수 있던 @EntityRepository()를 사용할 수 없게 되어 Repository를 불러올 수 있는 decorator를 커스텀 해서 써야 한다는 내용이었습니다. 상당힌 긴 글로 설명 해주었기에 글 읽는데 시간이 꽤 걸렸고, 이해하는 데에는 읽은 두배 이상의 시간이 걸렸습니다.

 

지금도 다 이해한 건 아니지만 어느 정도 흐름을 파악할 수 있었습니다.

 

 

잦은 지적으로 머리가 아파오던 즈음

튜터님은 http statuscode 칭찬 하나를 타이밍 좋게 적어주었습니다. 덕분에 코드리뷰를 끝까지 볼 수 있었습니다.

 

 

좋은 개발자의 비밀, 실력 향상과 성공을 위한 지침 - 부트캠프의 중요성

좋은 개발자의 비밀, 실력 향상과 성공을 위한 지침 - 부트캠프의 중요성 오늘날의 디지털 시대에서는 개발자들이 핵심 역할을 수행하며 현대 사회를 움직이게 하는 중요한 역할을 맡고 있습니

lemonlog.tistory.com

 

총평을 끝으로

아래의 총평을 끝으로 튜터님의 코드리뷰는 끝났습니다.

 

NestJS를 사용해서 간단한 API 서버 구축에 성공하셨습니다.
TS도 어색하지만 그럭저럭 사용하실수 있는것으로 보입니다. (물론 저도 그럭저럭 사용합니다. 잘 사용하려면 눈, 손, 귀가 익을만한 충분한 시간이 필요해요 ㅎㅎ) 이번에 서버 구축해보셔서 알겠지만 NestJS는 REST를 만들어내기 아주 좋은 프레임워크입니다. 대부분 형식이 고정되어 있고 정해져있다는것을 알 수 있을거에요. 프레임워크에서 제공하는 기능과 API를 계속해서 만들어내다보면 어느새 익숙해지고 그 안에서 트러블 슈팅 하다보면 실력이 점점 늘어가는걸 느낄수 있을거에요. 앞으로 꾸준히 공식문서도 보시고 다른 사람 코드도 보면서 익숙해지려 노력하시면 좋은 결과 있을것 같습니다.

 

다른 프로젝트에서도 그랬지만 결국 공식문서 잘 이해할 줄 알면 기능 구현하는데 많은 도움이 되는 듯 했습니다. 그걸 알다가도 막상 오류가 발생하면 구글링을 우선으로 하곤 했습니다. 공식문서를 더 가까이 해야겠다는 다짐으로 마무리 할 수 있었던 이번 프로젝트였습니다.

 

▼ NestJS 이렇게 써보셨나요? ▼

 

 

NestJS ejs 적용하는 방법, 동적 웹페이지 렌더링 하기

NestJS ejs 적용하는 방법, 동적 웹페이지 렌더링 하기 NestJS는 강력한 서버 사이드 애플리케이션 프레임워크로, EJS(Embedded JavaScript)와 같은 템플릿 엔진을 사용하여 동적인 웹 페이지를 렌더링할 수

lemonlog.tistory.com

 

 

NestJS 빠른 테스트를 위한 명령어 npm run start:dev

NestJS 빠른 테스트를 위한 명령어 npm run start:dev 프로젝트를 개발하면서 코드를 작성하고 테스트하며 개발환경을 구축하는 일은 빈번한 작업 중 하나입니다. NestJS를 사용하는 경우에도 자주 사용

lemonlog.tistory.com