목차
- NestJS REST API 벤치마킹 및 추천 레포
- Config 파일 작성 방식(TypeScript vs YAML vs JSON)
- NestJS 컨트롤러 경로 겹침 문제와 해결법
- Prisma BigInt 타입 처리와 다중 스키마 파일 운영
- DDD(도메인 주도 설계) 공부 자료와 실무 적용
- 영상 스트리밍 서비스 간단 구현 팁 (MVP 수준)
- AI 활용 E2E 테스트 코드 생성 도전기
- 빚(대출)과 개발 동기 관련 소소한 대화
- 마이크로서비스 아키텍처(MSA)와 DDD 경험담 및 현실
- 개발자 커뮤니티의 재미있는 소소한 이야기
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 테스트 자동화 도전 경험도 최신 트렌드 및 문제 해결 능력 표현에 좋음.
링크🔗
- 삼촌님 쇼핑백엔드: https://github.com/samchon/shopping-backend
- Awesome NestJS: https://awesome-nestjs.com/
- Prisma BigInt 공식 문서: https://www.prisma.io/docs/orm/prisma-client/special-fields-and-types#serializing-bigint
- Fintech 스터디 GitHub: https://github.com/sipe-team/3-2_smart_fintech
- 인스타 릴 영상(유머): https://www.instagram.com/reel/DFWuZcsyaA7/
- iOS 앱 (커플 다이어리): https://apps.apple.com/kr/app/%EC%BB%A4%ED%94%8C-%EB%8B%A4%EC%9D%B4%EC%96%B4%EB%A6%AC-%ED%95%98%EB%A3%A8%EC%97%90-%ED%95%98%EB%82%98%EC%94%A9-%EC%84%9C%EB%A1%9C%EB%A5%BC-%EC%95%8C%EC%95%84%EA%B0%80%EB%8A%94-%EC%9E%AC%EB%AF%B8/id6741366216
#NestJS#Prisma#DDD#VideoStreaming#MSA#BigInt#E2ETesting#ConfigManagement#TypeScript#개발공부