nestjs 썸네일nestjs

2025-01-15

목차

  1. 아침 인사 및 이직 관련 대화
  2. Nestia와 Swagger Prefix 문제
  3. 배달 서비스 쿠폰 도메인 설계
  4. 대용량 쿠폰 배포 전략
  5. 한국 주소체계와 네이밍 이슈
  6. 한글 커밋 및 주석에 대한 의견
  7. 객체지향 강의 추천 및 TDD 이야기
  8. 트랜잭션 롤백을 이용한 테스트 격리성
  9. 자율주행 상용화 동향
  10. typia 라이브러리 사용 에러 공유

1. 아침 인사 및 이직 관련 대화

  • 아침에 간단한 인사로 시작하며 출근에 대한 피로감 표현.
  • 이직에 대한 강한 욕구를 가진 인원들이 많았음.
  • 이직 스터디, 시스템 디자인 강의 등의 공부 모임 아이디어 제안.
  • 아키텍처 공부가 연차가 쌓일수록 재미지고 있다는 의견 공감.

2. Nestia와 Swagger Prefix 문제

핵심 이슈

  • yarn nestia 명령어를 사용해 Swagger 문서(swagger.json) 생성 시, NestJS의 setGlobalPrefix로 설정한 API 경로 prefix가 반영되지 않음.

설명

  • Nestia는 NestJS 어플리케이션에서 API 스펙을 자동 생성해주는 도구임.
  • setGlobalPrefix는 NestJS에서 API의 공통 경로(prefix)를 설정하는 함수로, 예를 들어 /api를 붙이고 싶을 때 사용됨.
  • prefix가 Swagger 문서에 반영되지 않는 것은 Nestia 설정 문제나 NestJS 모듈 구성 문제일 수 있음.

해결 팁

  • Nestia 공식 문서(nestia.io) 확인 권장.
  • 모듈에서 관련 설정이 올바르게 붙어 있는지 점검.
  • 버전 이슈가 있을 수 있으니 Nestia와 NestJS 버전 호환성 검토 필요.
  • 문제 지속 시 GitHub 이슈로 문의하거나 커뮤니티 도움 받기.

3. 배달 서비스 쿠폰 도메인 설계

핵심 질문

  • 특정 지점이나 브랜드(프랜차이즈)에 쿠폰을 적용하는 테이블 설계 방법.

설명

  • 쿠폰도메인은 회원 테이블, 쿠폰 테이블, 회원-쿠폰 매핑 테이블로 나누어 설계하는 것이 기본.
  • 특정 브랜드 내 모든 가게에 쿠폰 적용을 위해 쿠폰 테이블에 브랜드ID를 매핑하는 방식을 고민함.
  • 실제로는 쿠폰과 여러 적용 대상(가게, 브랜드, 회원 등)을 연결하는 다대다 관계(M:N)를 처리하기 위한 매핑 테이블을 추가하는 게 일반적임.
  • 매핑 테이블을 통해 쿠폰 적용 대상 범위를 유연하게 관리 가능.

4. 대용량 쿠폰 배포 전략

핵심 질문

  • 모든 회원(예: 10만 명)에게 쿠폰을 일괄 지급할 때 회원-쿠폰 매핑 테이블에 10만 건을 한꺼번에 넣어야 하는지.

답변 및 팁

  • 기본적으로 그렇게 매핑하는 방식이 맞음.
  • 한꺼번에 DB에 부하를 줄 수 있으므로, 큐(queue)를 활용해 비동기 처리.
  • 사용자 경험 측면에서 회원이 쿠폰을 직접 받도록 유도하거나 로그인 시 자동 발급하는 방법도 활용함.
  • 당장 무리하게 DB 삽입하기보다는 분산 처리 및 이벤트 트리거 방식을 추천.

5. 한국 주소체계와 네이밍 이슈

핵심 내용

  • 한국 주소는 시/군/구, 읍/면/동, 리 등 세분화되어 있어 DB 스키마 설계가 까다로움.
  • 예를 들어 'JUSO_RI'는 "리" 단위 주소를 의미함.

설명

  • 변수명과 테이블명을 영어로 통일하기 어렵고, 한글 명칭을 그대로 사용하는 경우가 많음.
  • 국토부 공식 주소 DB 스키마를 참고하는 것이 가장 정확하고 편리함.
  • 영어로 전환 시 뜻 전달이 어려워서 현업에서는 한글 네이밍 사용하는 경우가 많음.
  • 협업 시 명확한 컨벤션 설정이 중요.

6. 한글 커밋 및 주석에 대한 의견

토론 내용

  • 한글로 커밋 메시지 및 코드 주석을 쓰는 것에 대해 자유로운 분위기.
  • 한글 커밋은 의사 전달이 명확해 장점으로 평가됨.
  • 영어에 부담을 느끼는 개발자들도 많고, 한글 사용이 차별화된 커뮤니케이션을 방해하지 않음.
  • 다만 너무 비논리적인 커밋 메시지는 한글이든 영어든 개선이 필요함.

7. 객체지향 강의 추천 및 TDD 이야기

  • 우아한형제들의 객체지향 강의가 추천됨.
  • TDD에 대해서는 "주석부터 작성하고 개발하라"는 유머 섞인 주장도 있었음.
  • TDD는 테스트 코드를 먼저 작성하고, 테스트를 통과하는 코드를 만드는 개발 방법론임.
  • 이론뿐만 아니라 실습과 코드 리뷰가 동반되면 효과적임.

8. 트랜잭션 롤백을 이용한 테스트 격리성

  • TypeORM 기반으로 트랜잭션을 시작하고 테스트 종료 시 롤백하는 패턴이 소개됨.
  • 이 방법은 테스트 간 데이터 독립성을 보장하여 실제 DB 오염 없이 안정적인 테스트가 가능함.
  • 트랜잭션 내에서 원자성(Atomicity)이 보장됨을 활용한 좋은 사례임.
  • 관련 예제 코드는 https://github.com/puleugo/typeorm-transaction-rollback 에서 확인 가능.

9. 자율주행 상용화 동향

  • 일론 머스크는 2025년까지 자율주행 상용화를 목표로 했으나, 중국에서는 이미 자율주행 택시 서비스를 상용화한 케이스가 있음.
  • 글로벌 자율주행 기술 경쟁이 치열함을 시사.
  • 기술적 기준과 법규에 따른 상용화 진척도 차이가 존재함.

10. typia 라이브러리 사용 에러 공유

  • 개발 중 typia.validate() 함수 호출 시 "no transform has been configured" 에러 발생.
  • 공식 문서(https://typia.io/docs/setup) 설정 제대로 확인 필요.
  • 흔히 발생하는 설정 누락 문제로, 트랜스폼(데이터 변환) 설정이 중요함.
  • 오류 해결 후 출퇴근 시간에 맞춰 재시도하는 개발자의 현실적 상황 공유.

면접팁⚡

  • 쿠폰/도메인 모델 설계 질문에 대비해 M:N 관계 매핑과 비동기 대용량 데이터 처리 (예: 큐 이용) 방법 이해 필수.
  • 한국 주소체계 다루는 시스템 설계 관련 질문 시, 국토부 표준 데이터를 활용하는 점과 한글 네이밍의 필요성을 설명하면 강점.
  • 트랜잭션과 테스트 격리성에 관한 이해는 백엔드 개발 직군 면접에서 유용함.
  • 한글 커밋과 주석에 대한 자신의 철학을 논리적으로 말할 수 있으면 소통능력도 어필 가능.

링크🔗

#이직#NestJS#Swagger#쿠폰설계#배달서비스#주소체계#한글커밋#객체지향#TDD#테스트자동화