Back-End μž‘μ—…μ‹€/Nest.js

[Nest.js] κ°œλ… 정리

μ£Όλ‹ˆμ“°πŸ§‘‍πŸ’» 2024. 1. 13. 14:40
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λ₯Ό μ‰½κ²Œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ ν”„λ ˆμž„μ›Œν¬μ—μš”.



μœ„μ—μ„œ 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
λ°˜μ‘ν˜•