[Nest.js] ๊ฐœ๋… ์ •๋ฆฌ

2024. 1. 13. 14:40ใ†Back-End ์ž‘์—…์‹ค/Nest.js

728x90
๋ฐ˜์‘ํ˜•

 

 

 

์นด์นด์˜คํŽ˜์ด | ๋งˆ์Œ ๋†“๊ณ  ๊ธˆ์œตํ•˜๋‹ค

์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋งํฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

qr.kakaopay.com

 

 

 

 

 

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 



 

 

 

๐Ÿš€ ๊ฐœ๋… ์ •๋ฆฌ

    ๐Ÿ”ฝ Back-end

        ๐Ÿ“ฆ Nest.js๋ž€?

Nest.js๋Š” Node.js์˜ ์œ ์—ฐํ•จ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๋ฉด์„œ Framework(ํ”„๋ ˆ์ž„์›Œํฌ) ๋‚ด์— ์œ ์šฉํ•œ ๊ธฐ์ˆ ์„ ์ด๋ฏธ ๋‹ค์ˆ˜ ๊ตฌํ˜„ํ•ด ๋‘” ํ”„๋ ˆ์ž„์›Œํฌ์—์š”.

๋˜ํ•œ Nest.js๋Š” Kamil Myล›liwiec์— ์˜ํ•ด ๋งŒ๋“ค์–ด์กŒ๋Š”๋ฐ, Java Script, Type Script๋กœ Server(์„œ๋ฒ„) ์ธก Application(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ์ฆ‰, WAS(Web Application Server)๋ฅผ ์œ„ํ•œ Open source framework์—์š”.

Nest.js์˜ ์ฃผ์š” ์ฒ ํ•™์€ Angular(์—ฅ๊ทค๋Ÿฌ) ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์˜๊ฐ์„ ๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Š” Mudule(๋ชจ๋“ˆ)ํ™”, ์˜์กด์„ฑ ์ฃผ์ž…, Decorator(๋ฐ์ฝ”๋ ˆ์ดํ„ฐ) ๋“ฑ๊ณผ ๊ฐ™์€ ์—ฅ๊ทค๋Ÿฌ์˜ ์ฃผ์š” ๊ฐœ๋…์„ Server Side(์„œ๋ฒ„ ์‚ฌ์ด๋“œ) ๊ฐœ๋ฐœ์— ์ ์šฉํ•œ ๊ฒƒ์ด์—์š”.
๋˜ํ•œ, Express.js๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ณ , ํšจ์œจ์ ์ธ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

Nest.js๋Š” ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ , ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๋•๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ, ๊ฐ•๋ ฅํ•œ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ๊ณผ ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ ์…‹์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ„ํŽธํ•˜๊ฒŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ณ  ์žˆ์–ด์š”.

Nest.js๋Š” Node.js์— ๊ธฐ๋ฐ˜์„ ๋‘” Web(์›น) API ํ”„๋ ˆ์ž„์›Œํฌ๋กœ Expree.js ๋˜๋Š” Fastify ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ Wrapping(๋ž˜ํ•‘)ํ•˜์—ฌ ๋™์ž‘ํ•ด์š”. Express.js์™€ Fastify๋Š” ๋ชจ๋‘ Node.js๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ”„๋ ˆ์ž„์›Œํฌ์—์š”.

728x90



์œ„์—์„œ Nest.js๋Š” Express.js ๊ธฐ๋ฐ˜์„ ๋‘์—ˆ๋‹ค๊ณ  ์ด์•ผ๊ธฐ ํ–ˆ๋Š”๋ฐ, Nest.js ๊ธฐ๋ณธ ์„ค์น˜ ์‹œ Express.js๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ผ์š”.
Fastify๋Š” Express.js์™€์˜ Benchmark(๋ฒค์น˜๋งˆํฌ) ๊ฒฐ๊ณผ 2๋ฐฐ ์ •๋ณด ๋น ๋ฅธ ์†๋„๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฐํ˜€์กŒ์–ด์š”.
๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , Nest.js๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ Fastify๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” Express.js๊ฐ€ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ณ , ์ˆ˜ ๋งŽ์€ Middleware(๋ฏธ๋“ค์›จ์–ด)๊ฐ€ Nest.js์™€ ํ˜ธํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

Node.js๋Š” ์ˆœ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๊ณผ๋„ํ•œ ์œ ์—ฐํ•จ์œผ๋กœ ์ธํ•ด ๊ฒฐ๊ณผ๋ฌผ ํ’ˆ์งˆ์ด ์ผ์ •ํ•˜์ง€ ์•Š๊ณ , ์•Œ๋งž์€ Library(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์š”.
์ด์— ๋ฐ˜ํ•ด Nest.js๋Š” Database(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค), Object-relational mapping(ORM - ๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘) Configuration(์„ค์ •), ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ ์ˆ˜ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ๋‹ต๋‹ˆ๋‹ค.
๋˜ํ•œ, ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” Node.js์˜ ์žฅ์ ๋„ ์ž˜ ์‚ด๋ ค๋‚ด์—ˆ์–ด์š”.

Nest.js๋Š” ๋ชจ๋“ˆ, Component(์ปดํฌ๋„ŒํŠธ) ๊ธฐ๋ฐ˜์œผ๋กœ Programming(ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์žฌ ์‚ฌ์šฉ์„ฑ์„ ๋†’์˜€์–ด์š”.
๋˜ํ•œ, Spring Boot(์Šคํ”„๋ง ๋ถ€ํŠธ)์™€ ๊ฐ™์ด Inversion of Control(IoC - ์ œ์–ด์˜ ์—ญ์ „), Dependency Injection(DI - ์˜์กด์„ฑ ์ฃผ์ž…), Aspect-oriented Programming(AOP - ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)๊ณผ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋…์„ ๋„์ž…ํ•˜์˜€์–ด์š”.

์ด ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ฐœ๋ฐœ์ž๋“ค์€ Node ๊ณ„์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ต๋‹ˆ๋‹ค.
Nest.js๋Š” Type Script๋ฅผ ๊ธฐ๋ณธ ์–ธ์–ด๋กœ ์ฑ„ํƒํ•˜์—ฌ Type Script๊ฐ€ ๊ฐ€์ง„ Type System(ํƒ€์ž… ์‹œ์Šคํ…œ)์˜ ์žฅ์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์–ด์š”.

๋ฐ˜์‘ํ˜•



์›น ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ฐ–์ถฐ์•ผํ•  ํ•„์ˆ˜ ๊ธฐ๋Šฅ์€ ์•„๋ž˜์™€ ๊ฐ™์•„์š”.

โœ… ์ตœ์‹  ECMA Script ์ง€์›
โœ… Type Script (์„ ํƒ ์‚ฌํ•ญ์ด๋‚˜, ์‚ฌ์šฉ ์ถ”์„ธ๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ์ค‘)
โœ… Command Query Responsibility separation(CQRS)
โœ… ํŽธ๋ฆฌํ•œ ์„ค์ •
โœ…  Interceptor(์ธํ„ฐ์…‰ํ„ฐ)
โœ… ๋‹ค์–‘ํ•œ Middleware(๋ฏธ๋“ค์›จ์–ด)
โœ… Scheduling(์Šค์ผ€์ฅด๋ง)
โœ… Logging(๋กœ๊น…)
โœ… Testing(ํ…Œ์ŠคํŒ…)
โœ… API Document (API ๋ฌธ์„œํ™”)
โœ… ORM

Nest.js๋Š” ์ด ์ค‘ ๋Œ€๋ถ€๋ถ„์„ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ณ , ๋‚ด์žฅํ•˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ ์—ญ์‹œ ์‰ฝ๊ฒŒ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์š”.

 

 

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

 

NestJS๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐฑ์—”๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ:ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์˜ ์ฐจ์„ธ๋Œ€ ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋‚˜๋‹ค

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

์นด์นด์˜คํŽ˜์ด | ๋งˆ์Œ ๋†“๊ณ  ๊ธˆ์œตํ•˜๋‹ค

์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋งํฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

qr.kakaopay.com

 

 

 

728x90
๋ฐ˜์‘ํ˜•