[Nest.js] κ°λ μ 리
μΉ΄μΉ΄μ€νμ΄ | λ§μ λκ³ κΈμ΅νλ€
μ¬κΈ°λ₯Ό λλ¬ λ§ν¬λ₯Ό νμΈνμΈμ.
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