NestJS - YooByWk/YooByWk.github.io GitHub Wiki
NestJS
NestJS ๋ Node.js ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๊ธฐ ์ํ ํ๋ ์์ํฌ.
TypeScript๋ฅผ ์ฃผ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํด ์ฌ๋ฌ ๊ฐ๋
(OOP, FP, FRP) ๊ฐ๋
์ด ํตํฉ๋จ
์ฒ ํ
Spring ๊ณผ ์ ์ฌํ๋ค.
NestJS๋ Angular์ ๊ตฌ์กฐ์ ์ฒ ํ๊ณผ Java Spring์ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ค๊ณ ํจํด์ Node.js ํ๊ฒฝ์ ๋์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
1. ์์กด์ฑ ์ฃผ์ (DI, Dependency Injection)
์ ์: ํด๋์ค๊ฐ ์์ ์ด ์์กดํ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๋์ , IOC (Inversion of Control) ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ๋ฐ์ ์ฌ์ฉ
OOP ์ฐ๊ด์ฑ : DI๋ SOLID ์์น ์ค DIP (์์กด์ฑ ์ญ์ ์์น) ๋ฅผ ๊ตฌํํ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ด๋ค. ์ด๋ฅผ ํตํด ๊ตฌ์ฑ ์์ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ํ ์คํธ ์ฉ์ด์ฑ์ ๊ทน๋ํํ๋ค.
2. ๋ชจ๋์ฑ (Modularidad)
์ ์: ์ ํ๋ฆฌ์ผ์ด์ ์ Module ๋จ์๋ก ๋ถ๋ฆฌํ๊ณ ์บก์ํํ์ฌ ๊ด๋ฆฌ
์์: ๊ฐ ๋ชจ๋์ ๊ด๋ จ๋ Controller ์ Provider ๋ฅผ ๋ฌถ์ด ์ฑ ์ ๋ฒ์๋ฅผ ๋ช ํํ ํ๋ฉฐ, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ๋ณต์ก์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํ๋ค.
3. AOP (๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ๋ฐ ๋ฐ์ฝ๋ ์ดํฐ
์ ์: ๋ฐ์ฝ๋ ์ดํฐ(@)๋ฅผ ์ฌ์ฉํ์ฌ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ถ๊ฐ ๊ธฐ๋ฅ(ํก๋จ ๊ด์ฌ์ฌ) ์ ๋ถ๋ฆฌ
ํ์ฉ: @UseGuards (์ธ์ฆ/์ธ๊ฐ), @UseInterceptors (์๋ต ๋ณํ/๋ก๊น
), @UsePipes (์ ํจ์ฑ ๊ฒ์ฌ) ๋ฑ์ ํตํด ์ฝ๋๋ฅผ ๊ตฌ์กฐ์ ์ด๊ณ ์ ์ธ์ ์ผ๋ก ์ ์งํ๋ค.
ํต์ฌ ์์
Controller: ํด๋ผ์ด์ธํธ์ Request๋ฅผ ์ฒ๋ฆฌํ๊ณ Response๋ฅผ ๋ฐํํ๋ ๊ณ์ธตProvider(service): ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๊ณ์ธต, DI ์ปจํ ์ด๋์ ๋ฑ๋ก๋์ด ์ฌ์ฉModule: Controller ์ Provider๋ฅผ ๋ฌถ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ์ ๋จ์๋ฅผ ์ ์
ํน์ด์ฌํญ
Express.js์ ๋นํด ๊ตฌ์กฐ๊ฐ ๋ณต์กํจ : ์คํ๋ ค ๊ตฌ์กฐํ ๋ ์ฅ์ ์ด๊ธฐ๋ ํจ- ๊ณต์๋ฌธ์๊ฐ ์ ๋์ด์์. ์ด์ง๊ฐํ ์ ๋ณด๋ ๊ณต์๋ฌธ์์ ๋ค ๋์์๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉ
- ๋ง์ดํฌ๋ก ์๋น์ค ์ง์ : HTTP, gRPC, MQTT, Redis ์ธ ๋ค์ํ ๋ง์ดํฌ๋ก์๋น์ค ํต์ ๋ฐฉ์์ ์ฝ๊ฒ ํตํฉํ ์ ์๋ ๋ชจ๋์ ์ ๊ณตํด์ค...