목차
- 아침 인사 및 이직 관련 대화
- Nestia와 Swagger Prefix 문제
- 배달 서비스 쿠폰 도메인 설계
- 대용량 쿠폰 배포 전략
- 한국 주소체계와 네이밍 이슈
- 한글 커밋 및 주석에 대한 의견
- 객체지향 강의 추천 및 TDD 이야기
- 트랜잭션 롤백을 이용한 테스트 격리성
- 자율주행 상용화 동향
- 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 관계 매핑과 비동기 대용량 데이터 처리 (예: 큐 이용) 방법 이해 필수.
- 한국 주소체계 다루는 시스템 설계 관련 질문 시, 국토부 표준 데이터를 활용하는 점과 한글 네이밍의 필요성을 설명하면 강점.
- 트랜잭션과 테스트 격리성에 관한 이해는 백엔드 개발 직군 면접에서 유용함.
- 한글 커밋과 주석에 대한 자신의 철학을 논리적으로 말할 수 있으면 소통능력도 어필 가능.
링크🔗
- Nestia 공식 문서: https://nestia.io
- TypeORM 트랜잭션 롤백 테스트 예제: https://github.com/puleugo/typeorm-transaction-rollback
- Toss Payments 한글 코딩 컨벤션: https://tosspayments-dev.oopy.io/chapters/frontend/posts/hangul-coding-convention
- typia 공식 문서: https://typia.io/docs/setup
#이직#NestJS#Swagger#쿠폰설계#배달서비스#주소체계#한글커밋#객체지향#TDD#테스트자동화