nestjs 썸네일nestjs

2025-02-04

목차

  1. NestJS REST API 벤치마킹 및 추천 레포
  2. Config 파일 작성 방식(TypeScript vs YAML vs JSON)
  3. NestJS 컨트롤러 경로 겹침 문제와 해결법
  4. Prisma BigInt 타입 처리와 다중 스키마 파일 운영
  5. DDD(도메인 주도 설계) 공부 자료와 실무 적용
  6. 영상 스트리밍 서비스 간단 구현 팁 (MVP 수준)
  7. AI 활용 E2E 테스트 코드 생성 도전기
  8. 빚(대출)과 개발 동기 관련 소소한 대화
  9. 마이크로서비스 아키텍처(MSA)와 DDD 경험담 및 현실
  10. 개발자 커뮤니티의 재미있는 소소한 이야기

1. NestJS REST API 벤치마킹 및 추천 레포

  • NestJS 프로젝트를 잘 구현한 오픈소스 레포를 추천받고 공유됨.
  • 대표적인 추천 레포: 삼촌님 쇼핑백엔드
  • 벤치마킹용으로 레포들을 활용하기 적합하며, 구글 검색이나 AI를 통해서도 쉽게 찾아볼 수 있음.
  • 초보 개발자뿐 아니라 실무자도 참고하기 좋은 커뮤니티 공유 자료임.
  • 참고사이트: Awesome NestJS

2. Config 파일 작성 방식 (TypeScript vs YAML vs JSON)

  • TS 기반 설정 파일을 선호하는 의견이 많음.
  • YAML은 문법 오류가 발생하기 쉽고, 숫자 타입에서 1.10이 1.1로 인식되는 등의 문제 발생 가능.
  • JSON은 TS보다 덜 쓰이지만 간단한 환경설정에 용이.
  • TypeScript 설정 파일은 문법 오류 위험이 적고, 자동완성 등 편의성이 크기 때문에 실무에 선호됨.

3. NestJS 컨트롤러 경로 겹침 문제와 해결법

  • @Controller() 데코레이터 사용 시 비슷한 경로(centers/:centerId/staffs/payrolls vs centers/:centerId/staffs/:staffId/payrolls) 중첩에 의한 라우팅 충돌 발생 가능.
  • Express의 미들웨어 구조 특성상, 먼저 잡힌 라우터가 미리 요청을 처리해버리는 문제가 있음.
  • 해결법:
    • 컨트롤러 등록 순서 변경 및 HTTP 메서드 순서 조절해보기.
    • NestJS 내부 작동 방식을 확인하고, 라우팅 우선순위를 직접 제어하기.
    • 보다 엄격한 경로 설계(파라미터 위치나 명칭 재조정) 권고.
    • Fastify 사용 권장 (Express의 미들웨어, 라우팅 순서 문제 해결 가능, 성능도 우수).
  • Multer 등 미들웨어 호환 이슈는 Fastify 도입시 주의 필요.

4. Prisma BigInt 타입 처리 및 다중 스키마 운영

  • Prisma 사용 시 DB에서 bigint 타입 필드는 자동으로 bigint 모델로 생성됨.
  • 내부 함수에서 number 타입으로 다루는 게 편리하나 JSON 직렬화시 bigint는 문자열로 변환 필요.
  • 만약 Number 범위를 벗어난 아주 큰 수를 다룬다면, 반드시 bigint 타입으로 유지하고 반환 시 string 변환 권장.
  • Prisma 스키마 파일 관리는 개인마다 스타일 차이가 클 수 있음.
    • 단일 파일 보다는 도메인별로 여러 스키마 파일 분리해서 운영하는 경우가 많음.
    • 성격과 규모에 따라 적합한 파일 구조를 선택하길 추천.

5. DDD(도메인 주도 설계) 공부 자료와 실무 적용

  • DDD는 특정 언어나 프레임워크에 국한되지 않는 개발 방법론임.
  • NestJS에서 DDD 적용 베스트 프랙티스는 따로 확립된 것은 없으며 일반적인 DDD 원칙 참고 권장.
  • 추천 도서: 김영한 님의 『도메인 주도 설계 핵심』(자바 중심이나 개념 파악에 매우 유용).
  • MSA와 함께 쓰이는 경우도 많지만, 현실적으로는 바운디드 컨텍스트 완벽 분리나 횡단 관심사의 해결이 매우 어려움.
  • 실무에서는 트레이드오프를 맞추며 점진적으로 도입하는 경우가 많음.
  • TypeScript/NestJS에서는 클래스와 인터페이스 활용 방식에 개인 취향과 팀 스타일 차이가 크며,
    • 변경이 적은 부분은 클래스 사용,
    • 자주 변경되는 부분이나 추상화 시 인터페이스 또는 덕타이핑 활용이 흔함.

6. 영상 스트리밍 서비스 간단 구현 팁 (MVP 수준)

  • 간단한 LMS (교육 플랫폼) 구축 시 강의 영상 S3 업로드 후 Video.js 등 프론트엔드 플레이어 활용 가능.
  • 동영상 스트리밍을 위한 MVP 단계에서는 복잡한 DRM보다는 HLS(HTTP Live Streaming) 변환 정도로 충분.
  • 백엔드에서 ffmpeg로 인코딩(화질 선택 가능) 후 HLS 변환 후 S3에 업로드.
  • 업로드 후 영상 인코딩 작업은 별도의 백그라운드 워커 혹은 AWS Lambda 등 서버리스 함수 활용 가능하나 비용 면에 주의.
  • AWS MediaConvert 등 클라우드 기반 미디어 인코딩 서비스도 참고할 만함.
  • Shaka Player는 Video.js 대안으로 추천.

7. AI 활용 E2E 테스트 코드 작성 시 겪는 이슈

  • AI GPT 계열 모델을 이용해 E2E 테스트 코드 자동 생성 시,
    • 요구사항이 길거나 복잡하면 AI가 정확히 이해하지 못하고 이상한 코드 작성하는 문제 있음.
  • 상세한 요구사항 입력이 중요하지만, 기준점을 잡기 어려워 결국 직접 작성하는 게 더 효율적인 경우가 많음.
  • BDD(Behavior-Driven Development) 스타일 테스트 작성이 도전적임.
  • AI 모델 변경이나 예제 테스트 코드 참조 후 반복 개선 필요.

8. 대출(빚)과 개발 동기 대화 소소한 공유

  • 개발 공부와 동기 부여 관련 유머와 진지한 대화가 오감.
  • ‘대출 주도 개발(DDD, 대출Driven Development)’ 놀이 언어로 소개됨.
  • 대출을 효과적으로 활용하는 법, 이자 공제 등 금융 상식 공유.
  • 개발 재능 향상과 연봉 상승을 위한 절실함 중요성 강조.
  • 중도 상환 수수료 여부에 따라 대출 상환 전략 달라짐.

9. 마이크로서비스 아키텍처(MSA)와 DDD 경험담 및 현실 토크

  • 현업에서 MSA와 DDD를 완벽히 구현하는 사례는 드뭄.
  • 바운디드 컨텍스트 분리와 횡단 관심사(로깅, 인증, 모니터링 등) 처리 난이도 큼.
  • 여러 언어 혼용 및 공통 모듈 분리에 조직 구조가 영향을 미침.
  • 현실적으로 트레이드오프와 타협하며 점진적 도입 권장.
  • 관련 스터디나 코드 공유 자료: Fintech 스터디 리포

10. 소소한 이야기와 재미 요소

  • 개발자들 사이에서 ‘솔로 다이어리’, ‘커플 다이어리’, ‘육아 다이어리’ 앱 아이디어 유쾌한 토론.
  • AI와 샘촌님 관련 화제 및 구글 인터뷰 영상 이야기.
  • 커피챗, 밥 사달라는 드립과 현실 고민.
  • 인프런 유료 멘토링 도전 고민.
  • AI 기술의 가능성에 대한 긍정과 한계 체험 공유.

면접팁⚡

  • DDD 관련 지식은 면접에서 좋은 인상을 줄 수 있으나 현실적으로 완벽 구현이 드묾을 염두에 두고 현실감 있게 이야기할 것.
  • Prisma의 BigInt 처리 방식 이해 및 적용 경험은 실무에서 도움이 되며 관련 질문에 대비 가능.
  • NestJS에서 컨트롤러 라우팅 문제 해결 경험은 기술 면접에서 구체적 사례로 어필 가능.
  • AI 테스트 자동화 도전 경험도 최신 트렌드 및 문제 해결 능력 표현에 좋음.

링크🔗

#NestJS#Prisma#DDD#VideoStreaming#MSA#BigInt#E2ETesting#ConfigManagement#TypeScript#개발공부