본문 바로가기
패스트캠퍼스 환급챌린지

패스트캠퍼스 환급챌린지 36일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

by 논문보관함 2025. 4. 9.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://bit.ly/4hTSJNB

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr

0409 수

학습 내용 정리

[Class 01]Part 20. File Upload

Ch 1. 이론

 

01. 파일 업로드 이론

Ch 2. 전통적 파일 업로드 방식 실습

01.간단 단일 파일 업로드 작업

02. 간단 복수 파일 업로드

수강후기

이번 수업에서는 NestJS 기반의 단일 및 복수 파일 업로드 기능 구현을 중심으로 학습하였다. 수업 초반에는 파일 업로드의 기본 이론과 Multer 라이브러리를 NestJS에서 어떻게 활용하는지를 정리하며 개념을 탄탄히 다졌다. 특히 @UploadedFile() 데코레이터와 FileInterceptor를 활용해 업로드된 파일에 접근하고 이를 컨트롤러에서 처리하는 흐름을 명확히 이해할 수 있었다.

실습에서는 MovieController의 @Post() 핸들러에 직접 업로드 로직을 구현했다. 파일 업로드 시 Express.Multer.File 타입으로 전달받아 콘솔에 로그를 찍고, 추후 데이터베이스 처리에 연결될 수 있도록 설계했다. 그 과정에서 @UseInterceptors(FileInterceptor('movie'))의 역할이 뚜렷이 느껴졌고, NestJS의 데코레이터 기반 설계가 얼마나 직관적인지 다시 한 번 체감할 수 있었다.

또한, 운영체제(OS) 별 경로 이슈를 해결하기 위한 join(process.cwd(), 'public', 'movie') 경로 설정 방식도 실습을 통해 명확하게 이해했다. 실제로 파일 저장 경로를 하드코딩하는 실수를 피하고자 Node.js의 path 모듈을 적극 활용한 점은 백엔드 실무 경험과도 연결되어 매우 실용적인 내용이었다. 실습 환경이 윈도우, 리눅스 모두를 고려하는 구조였기 때문에 확장성과 유지보수 측면에서도 배울 점이 많았다.

더불어 MulterModule.register()를 통해 전역적으로 파일 저장 경로를 설정하고, diskStorage를 통해 파일 저장 위치를 커스터마이징하는 방식도 학습했다. 이 설정을 통해 파일이 프로젝트 루트의 /public/movie 폴더에 안전하게 저장되도록 구현되었고, 실질적으로 파일이 서버에 저장되는 전체 프로세스를 이해할 수 있었다.

단일 파일 업로드 실습 이후에는 복수 파일 업로드에 대한 실습도 진행하였다. @UseInterceptors(FileFieldsInterceptor([...]))를 사용하여 여러 필드의 파일을 동시에 업로드받을 수 있었고, 이를 통해 실무에서 자주 사용하는 대표 이미지 + 상세 이미지 등록, 또는 동영상과 썸네일을 함께 업로드하는 구조를 직접 구현해보았다. 컨트롤러에서는 @UploadedFiles() 데코레이터를 통해 복수 파일에 접근하였으며, 파일 필드명을 기준으로 파일을 분리하여 저장할 수 있다는 점이 매우 유용했다. 또한, 각각의 파일에 대해 개별 검증 로직을 적용할 수 있는 가능성도 확인할 수 있었다.

이번 수업을 통해 단순한 파일 업로드 기능뿐 아니라, NestJS의 DI(의존성 주입) 구조, 데코레이터 기반 컨트롤러 설계, 미들웨어 및 인터셉터의 활용, 모듈 간 의존성 분리 및 책임 분담에 대한 개념까지 아우를 수 있었다. 특히 RBAC(Role.admin)과 같은 역할 기반 접근 제어를 함께 학습하면서 실전 서비스에서의 보안과 사용자 권한 관리까지 고려한 설계 방식에 대해 다시금 중요성을 느꼈다.

결론적으로 이번 실습은 단일 및 복수 파일 업로드라는 실용적인 주제를 통해, 백엔드 서버에서 사용자의 요청을 안전하고 유연하게 처리하기 위한 전체적인 흐름을 직접 체험해 볼 수 있는 매우 유익한 시간이었다. 단지 기능을 구현하는 데 그치지 않고, 실무에 필요한 설정과 고려사항까지 반영된 고급 실습이라는 점에서 높은 만족도를 느꼈다. 향후에는 파일명 자동 리네이밍, 썸네일 자동 생성, 파일 메타데이터 저장, 클라우드 저장소 연동(S3 등)과 같은 실전 기능들까지 확장 적용하며 본 실습의 깊이를 더해나갈 계획이다.


핵심:

  @UseInterceptors(FilesInterceptor('movies'))
  postMovie(
    @Body() body: CreateMovieDto,
    @Request() req,
    @UploadedFiles() files: Express.Multer.File[]
 
 
 

@(데코레이션) 과 인터셉터로 빠르고, 다양하게 사용가능하다.

사진