nestjs 썸네일nestjs

2025-02-06

목차

  1. PR 리뷰 지연 및 절차
  2. 스케줄러 관리 방식 & BullMQ Redis 활용
  3. 개발자 성장과 일정 산정 노하우 (30% 룰)
  4. 코딩 테스트와 실무 코드 스타일 차이
  5. NestJS Swagger 설정 방법
  6. 해외 부동산과 월세 경험 공유
  7. Prisma와 MySQL 타임존 이슈 해결
  8. 서버리스와 AWS API Gateway WebSocket 활용
  9. 경력직 이직 준비 팁
  10. 주소 체계와 좌표 변환 이슈

1. PR 리뷰 지연 및 절차

  • PR이 한 달째 리뷰되지 않고 리뷰어도 할당되지 않은 상황 발생
  • 보통 PR에 코멘트가 많이 달리면 리뷰어가 확인하는 경향
  • 추가 요청이나 따로 알림을 보내는 절차가 필요한지 문의
  • 리뷰 지연 시 적극적인 커뮤니케이션 필요성이 강조됨

2. 스케줄러 관리 방식 & BullMQ Redis 활용

  • 2가지 방식으로 스케줄러 관리 논의:
    1. API 서버 내부에 스케줄러 코드 포함
    2. 별도의 스케줄러 서버로 분리 운영
  • 장점과 단점:
    • 내부 구현 시 서버 다운이나 서버 확장 시 동시 실행 문제 발생 가능
    • 별도 서버 운영 시 부하 분산 및 장애 대응 유리
  • Kubernetes CronJob 사용 제안
  • NestJS에서는 BullMQ 사용 추천(이 작업 큐 시스템은 Redis 기반이며, 작업을 비동기로 효율적으로 관리 가능)
  • Redis를 띄워야 하는 불편함 있지만 강력한 안정성 제공

기술 개념 - BullMQ와 Redis

  • BullMQ는 Node.js 환경에서 작업 큐를 다루는 라이브러리임
  • Redis 서버가 작업 상태 저장, 스케줄링, 작업 재시도 등에 활용됨
  • 따로 서버 분리하면 장애 발생 시 독립적인 복구가 가능해 안정성 증가

3. 개발자 성장과 일정 산정 노하우 (30% 룰)

  • ‘30% 룰’ 소개: 자신이 생각하는 능력의 30%만 사용해 기간 산정
  • 개발자는 실제 투입 가능한 퍼포먼스가 평소 예상보다 낮음
  • 대표나 PO가 기간을 먼저 지정할 때, 작업량 줄이고 MVP 중심으로 기능 구현 권장
  • 완벽한 제품보다 유저에게 보이는 완성도를 중요시
  • 일정 산정 시 기본 설계·문서 작업 등도 충분히 고려해야 함
  • 의도적인 코드 품질 저하나 혼란 상태 허용은 일정 엄격할 때 활용 가능

4. 코딩 테스트와 실무 코드 스타일 차이

  • 코딩 테스트 문제는 빠른 시간 내 풀이 및 알고리즘 적합성 평가에 초점
  • 실무에서는 가독성 높은 map, filter, reduce 등 함수형 코딩 선호
  • 코딩 테스트에서는 반복문이나 해시맵 위주의 풀이가 일반적
  • 실무 코드에서는 요구사항에 맞춘 유지보수와 확장성 고려
  • 해당 차이 이해는 면접 준비 시 중요

5. NestJS Swagger 설정 방법

  • JWT 인증 사용 시 Swagger 내에 @ApiBearerAuth() 어노테이션 활용 권장
  • main.ts에서 CORS와 Swagger 설정을 적절히 활성화 필요
  • Swagger 보안 스키마에 bearer 타입 JWT 작성 필수
  • NestiaSwaggerComposer와 SwaggerModule을 활용해 문서 자동 생성 가능

추가 팁

  • 컨트롤러 메서드에 @Secure 혹은 Swagger 문서 주석으로 인증 설정 명시
  • Swagger UI에서 Authorization 헤더 입력으로 인증 테스트 지원

6. 해외 부동산과 월세 경험 공유

  • 다양한 국가 월세, 전세, 렌트 환경 소개
  • 한국은 월세가 실수령액의 60% 초과 시 거절하는 문화도 있음
  • 미국, 영국 등은 소득 증명, 보증인 요구가 많고 월세 비중도 높음
  • 유학생, 워홀러들은 협소한 공간에 다수가 거주하는 사례 많음
  • 좋은 자취방 조건:
    • 햇빛 잘 들고 창문 많을 것
    • 화장실 공간 넓음과 위생 상태 양호
    • 역세권 위치와 편의시설 접근성 중요
  • 재택근무 확산으로 집환경의 중요성이 커지고 있음

7. Prisma와 MySQL 타임존 이슈 해결

  • created_at과 updated_at의 시간 저장 방식 이원화 문제 발생
  • Prisma는 create 시 자체적으로 UTC 기반 값을 넣고, update는 DB 자동 갱신(한국시간)
  • DB 타임존과 드라이버, ORM 동기화가 중요
  • 해결책:
    • Prisma 스키마에 @createdAt, @updatedAt 어노테이션 활용
    • 서버 측에서 UTC 시간을 일괄 관리 혹은 DB 시간대 설정 통일
    • 쿼리 로그 분석으로 시간대 데이터 흐름 파악
  • 일반적으로 서버↔클라이언트 통신은 UTC 표준 권장, 사용자에게 시간 표현만 현지화

타임존 관리 팁

  • 데이터베이스는 UTC 저장, 애플리케이션/클라이언트에서 필요한 시간대로 변환 권장
  • MySQL에서는 timestamp 컬럼이 타임존 영향을 받음, datetime은 안 받음 참고

8. 서버리스와 AWS API Gateway WebSocket 활용

  • AWS API Gateway는 WebSocket 지원으로 서버리스 아키텍처에서 실시간 통신 가능
  • Lambda 함수와 연동하여 비용 효율적 및 확장성 높은 소켓 서버 운영 가능
  • 기존 NestJS + Serverless 환경과 연동 시 특별한 설정 확인 필요
  • 앱싱크(AppSync) 등 GraphQL 실시간 데이터 처리도 고려 가능
  • 비용과 트래픽에 맞는 적절한 서버리스 구성 설계가 중요

9. 경력직 이직 준비 팁

  • 작은 스타트업 리드 경험도 충분히 내세울 수 있음
  • 기술적 도전이 적어도 시스템 아키텍처 설계 경험, 최선의 선택 근거 제시 중요
  • 특이 경험, 문제 해결 과정과 기술 스택 설명이 도움됨
  • 경력직 이직 시 자신의 역할과 영향력, 기술 깊이를 구체적으로 표현

10. 주소 체계와 좌표 변환 이슈

  • 국내 주소 체계는 도로명, 법정동, 행정동 등 다양한 타입 존재
  • 좌표 변환 (위도·경도)과 주소 매칭은 배달 서비스 등에서 핵심 문제
  • 좌표계 종류(카텍, GPS 등)와 데이터 일관성 중요
  • 지도 API(네이버, 카카오, 구글, MapBox 등)와 좌표계 상호 보완도 필요
  • 실무에서 API를 통한 지오코딩(주소→좌표 변환)과 역지오코딩 지원 필수
  • 부정확한 주소 데이터는 서비스 품질 저하 및 운영 문제 야기

면접팁⚡

  • 스케줄러 운영 방식 질문에선 별도 스케줄러 서버 운영의 장점(부하 분산, 장애 복구)을 어필
  • 코딩 테스트 대비 실무 코딩 스타일 차이점 인지 및 장단점 설명 가능해야 함
  • 타임존 문제 해결 경험과 Prisma/MySQL 연동 시 주의점 구체적으로 이야기하면 깊이있는 인상 가능
  • 프로젝트 일정 산정에 대해 ‘30% 룰’ 개념과 MVP 우선 전략 설명하며 현실적인 의사소통 중요성 강조
  • Swagger 보안 설정 경험 있으면 API 문서화 이해도 높다는 인상

링크🔗

#NestJS#Swagger#BullMQ#Prisma#MySQL#타임존#AWSAPIgateway#WebSocket#스케줄러#개발면접