낙서장이자 오답 노트이자 컨닝 페이퍼
패스트캠퍼스 환급챌린지 35일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기 본문
패스트캠퍼스 환급챌린지 35일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기
NangIn 2025. 5. 5. 14:05본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
강의 내용 정리
Database Seeding
개요: DB 시딩이란?
- DB 시딩(Seeding): 개발 환경에서 테스트나 시연을 위해 샘플 데이터를 자동으로 삽입하는 작업
- 프로덕션에서는 잘 쓰지 않지만, 개발/테스트 환경에서는 필수
폴더 구조 및 시딩 준비
- Postman에 시드 폴더 생성
- Authorization → Bearer Token (환경 변수로 access_token 사용)
- 시딩 순서:
- 로그인
- 다이렉터 생성
- 장르 생성
- 무비 생성
랜덤 데이터 생성 (Pre/Post 스크립트 활용)
- 랜덤 다이렉터 생성
- 랜덤 풀네임, 랜덤 국가 → name, country 값 자동 생성
- Postman Test 탭에서 응답 받은 id를 environment variable로 저장:
-
const body = pm.response.json(); let directors = pm.environment.get('director_ids') || ''; directors = directors ? `${directors},${body.id}` : `${body.id}`; pm.environment.set('director_ids', directors);
- 랜덤 장르 생성
- 랜덤 명사, 형용사를 조합하여 장르 이름 생성
- 중복 방지 로직 추가:
- 이미 존재하면 400 에러 반환
- 위와 같은 방식으로 장르 ID 저장
무비 시딩을 위한 관계 랜덤 연결
- 무비 생성 시 필요한 정보
- title: 랜덤 명사 + 형용사 + 숫자
- description: 랜덤 문장
- directorId: 시딩된 다이렉터 중 하나 랜덤 선택
- genreIds: 장르 중 3개 랜덤 중복 없이 선택
- Pre-request Script 예시
-
const _ = require('lodash'); // 다이렉터 ID 랜덤 선택 const directorIds = pm.environment.get("director_ids").split(","); const randomDirectorId = _.sample(directorIds); pm.environment.set("director", randomDirectorId); // 장르 ID들 중 3개 랜덤 중복 없이 선택 const genreIds = pm.environment.get("genre_ids").split(","); let picked = []; let failCount = 0; while (picked.length < 3 && failCount < 20) { const g = _.sample(genreIds); if (!picked.includes(g)) { picked.push(g); } else { failCount++; } } pm.environment.set("genres", picked);
-
Postman Runner로 대량 생성
- Postman Collection Runner 활용법
- Runner에서 시드 폴더 선택 → 실행 순서 지정
- 반복 횟수(iteration) 설정 (ex. 감독 10명, 장르 50개, 영화 200개)
- 중복 에러 발생 가능하지만 일부 실패는 무방
테이블 리셋 후 재시딩
- DB 테이블 드랍 → 서버 재시작 → Postman으로 다시 시딩
- 유저 등록 → 롤 변경 (어드민) → 로그인 → 다시 시딩 가능
학습 후기
이번 강의를 통해 Postman을 활용한 Database Seeding 자동화 방법을 배우면서, 백엔드 개발에서 데이터 준비가 얼마나 중요한지 다시금 느꼈습니다. 실제 서비스에서는 프로덕션 데이터를 직접 다루지만, 개발과 테스트 환경에서는 시딩을 통해 일관된 테스트 환경을 유지하는 것이 매우 중요합니다. 단순히 데이터를 넣는 것에 그치는 게 아니라, 관계형 데이터를 유의미하게 구성하고, 이를 반복적으로 쉽게 재사용할 수 있도록 자동화하는 흐름을 체득할 수 있었습니다.
특히 인상 깊었던 점은 Postman 스크립트를 활용한 랜덤 데이터 생성과 변수 저장 방식이었습니다. Pre-request Script에서는 lodash와 같은 유틸을 활용해 랜덤한 감독 ID, 장르 ID 등을 추출하고, 이를 Postman 환경변수에 저장하는 구조가 굉장히 유연하고 강력했습니다. 단순한 API 테스트 도구로만 알고 있었던 Postman이 실제로는 데이터 생성용 워크플로우 자동화 도구로 활용될 수 있다는 점에서 눈이 열렸습니다. 테스트 탭에서 응답값을 파싱하고 환경변수에 저장해 다음 요청에 활용하는 방식은 서비스 개발 초기에 데이터를 대량으로 준비해야 할 때 큰 도움이 될 수 있습니다.
또한 Postman Runner를 활용해 반복 횟수를 조정하면서 대량 데이터를 생성하는 기능도 유용했습니다. 단순히 다이렉터, 장르, 무비를 순서대로 생성하는 것뿐만 아니라, 각 무비가 관계를 맺고 있는 다이렉터와 장르를 랜덤하게 연결하는 과정이 포함되어 있어서, 실무에서 자주 마주하게 될 관계형 데이터 시딩 시나리오를 미리 체험해 볼 수 있었습니다. 특히 반복 중 일부 실패는 무시해도 되는 전략 덕분에 오류에 유연하게 대응할 수 있었고, 이는 테스트 효율성을 높이는 데 중요한 요소라고 느꼈습니다.
마지막으로, 시딩 작업을 진행하며 데이터 초기화 및 재시딩 흐름까지 자연스럽게 익힐 수 있었습니다. NestJS 서버 재시작과 함께 데이터베이스를 초기화하고 다시 시딩하는 일련의 작업이 반복되면서, 백엔드 초기화 → 유저 등록 → 권한 설정 → 시딩 자동화라는 전반적인 백엔드 개발 워크플로우를 체득하게 되었습니다. 실무에서는 종종 staging 환경에서 테스트 데이터를 넣어야 하는 상황이 있는데, 이 방법을 숙지해두면 반복 작업 없이 빠르게 처리할 수 있을 것이라 확신합니다.
이번 학습을 통해 Postman은 단순한 API 테스트 도구가 아니라, 테스트 환경 구축과 데이터 워크플로우 자동화까지 지원하는 매우 유용한 도구임을 몸소 체감했습니다.
학습 인증샷



