스파르타코딩클럽 로고
로그인
전체 강의
부트캠프
국비
커뮤니티
블로그
이벤트
수강생 작품
고객센터
기업 서비스
둘러보기
인텔리픽
신입 개발자 채용 공고를 한 곳에서
로그아웃
1660188018656-Screen%20Shot%202022-08-11%20at%2012.19.52%20PM.png

NestJS 시작하기 - (1)등장배경

조회수 1832·3분 분량
2022. 8. 8.

*이 콘텐츠는 Nest.js Korea 1st Meetup, <Shall we Nest.js?>중, 제가 발표를 맡은 부분을 글로 정리한 것입니다. 내용이 긴 만큼, 여러 편으로 연재할 예정입니다.




<Shall we Nest.js?> 밋업을 연 까닭

안녕하세요. 팀스파르타 남병관입니다. 팀스파르타는 지난 2월부터 기술 스택을 플라스크(Flask)에서 Nest.js로 교체하는 작업을 진행하고 있는데요. Nest.js를 쓰다 보니, 이쪽 생태계가 그렇게 넓지 않다는 걸 체감하게 되더라고요. Nest.js를 사용하고 있는 우리는 그 인기가 J커브를 그리고 있다고 믿지만, ‘훨씬 더 성장 곡선이 가팔라져야 하지 않을까?’라는 생각이 들었습니다. 그래서 많은 분께 ‘우리 한번 같이 Nest.js를 써 보지 않으실래요?’라고 제안드리는 자리를 마련하고자 밋업을 개최하게 되었습니다.

청중

저는 크게 Nest.js 시작하기, 그리고 기술 스택을 교체하며 팀스파르타가 Nest.js를 선택한 이유, 이렇게 두 가지 주제를 가지고 이야기를 해 볼까 합니다. 제 파트는 '의존성 주입'이나 ‘providers’와 같은 단어에 흠칫하신 분들이 집중해서 봐 주시면 좋을 듯합니다. 반대로 '의존성 주입은 너무 쉬운 내용인데?', 혹은 '나는 익숙하진 않아도 Nest.js를 좀 써 봤어' 하시는 분들은 다음 파트로 넘어 가시면 유익한 정보를 얻어가실 수 있을 겁니다.




Nest.js 시작하기

nestjs overview

어떠한 기술 스택이든 공식 문서에서 개요(Overview) 부분이 가장 기초 중의 기초인데요.

contents

Nest.js 공식 문서(https://docs.nestjs.com/) 개요에서도 저는 Controllers, Providers, Modules, Pipes. 이 네 가지만 다뤄보려고 합니다. 저와 끝까지 함께하시면 최소한 이 네 단어가 무엇을 의미하는지 알고, 적어도 사이드 프로젝트를 할 때 Nest.js를 써 먹을 수 있는 수준까지는 되실 겁니다.




Nest.js의 등장배경


philosophy of nestjs

공식 문서에서 제일 처음 부분을 보시면 새롭게 나온 것이 어떠한 문제를 풀고 있는지를 알 수 있습니다. 그렇다면 "Nest.js는 무슨 문제를 풀기 위해 만들어진 거야?" 라고 물었을 때 어떤 답을 할 수 있을까요? 직접 만든 사람들의 표현을 빌리자면 "Nest.js는 아키텍처(Architecture) 문제를 풀고자 해"라고 답할 수 있겠습니다. "누구나 손쉽게 서버에 아키텍처를 구성해서 개발할 수 있도록 돕겠다"는 것이 Nest.js의 기본 철학인데요.

사실 저는 이 철학을 처음 읽었을 때 '되게 용감하다'는 생각이 제일 먼저 들었습니다. 위에 블록 처리한 부분을 읽어 보시면 다음과 같은 이야기인데요. "자바스크립트(JavaScript) 진영에서, 노드(Node) 진영에서 라이브러리와 같은 툴이 많이 나오지만, 그중 그 어떠한 것도 효과적으로 중요한 아키텍처의 문제를 해결하지 못하고 있다. 그래서 우리는 Nest.js를 만들었다." 이걸 읽으면서 되게 멋있으면서도 동시에 ‘무슨 자신감으로 이렇게 얘기를 하는 걸까’라는 궁금증이 생기더라고요. 이제부터 Nest.js가 아키텍처의 문제를 어떻게 풀었는지를 얘기해 보고자 합니다.




Nest.js 실행하기


$ git clone https://github.com/nestjs/typescript-starter.git project
$ cd project
$ npm install
$ npm run start

그 전에 바로 Nest.js를 시작해 보고 싶은 마음이 드시죠. 시작을 함께해 보면, 위와 같이 단 4줄이면 바로 서버를 띄울 수 있습니다. 타입스크립트(TypeScript)가 적용된 Nest.js를 바로 실행하실 수 있어요. 앞으로 제가 준비한 예시를 통해서 차근차근 설명해 드릴게요.

nestjs init

위 이미지 좌측을 보시면 소스(src)라는 폴더 아래 컨트롤러(controller), 모듈(module), 서비스(service), 메인(main)이 보이실 겁니다. 아까 언급한 4줄의 명령을 순서대로 입력만 하면 이렇게 바로 아키텍처 기본 코드가 작성이 되어요. 이렇게 뜨면서도 익스프레스(Express)나 플라스크와는 다르게 기본적으로 컨트롤러와 서비스라는 기본 아키텍처를 제공하고 있습니다.

module and provider

소스를 자세히 보시면 모듈(module)이나 프로바이더(provider)와 같은 낯선 단어들이 보이실 텐데요. ‘모듈은 대충 알 것도 같은데, 프로바이더는 대체 뭐지?’ 싶으실 수 있습니다. 보통 처음 Nest.js를 시작하시면 다들 낯설어 하세요. 이 두 가지를 설명하기 전에 먼저 우리에게 익숙한 컨트롤러부터 짚고 넘어가면 좋을 것 같습니다.

(2편에서 계속)

- 해당 콘텐츠는 저작권법에 의해 보호받는 저작물로 스파르타코딩클럽에 저작권이 있습니다.
- 해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
내용이 유익하셨다면? 공유하기
copyclip-blog-sharekakao-blog-sharefacebook-blog-share
다른 분들이 많이 읽은 글
코딩 가이드
Dockerfile 최적화하기
조회7802·8분 분량
Dockerfile 최적화하기
퇴사 후 부트캠프에 합류한 이유 [항해99} 수료생 인터뷰]
조회1316·7분 분량
퇴사 후 부트캠프에 합류한 이유 [항해99} 수료생 인터뷰]
copyclip-blog-share