π€ NestJS λͺ¨λνμ μ΄μ μ λκΉ?
- MVC
- NestJS
- Spring
π€Β κ°μ

NestJS λ₯Ό 곡λΆνλ€κ° μλμ κ°μ μ½λλ₯Ό μ νμλ€.
// app.module.ts
import { Module } from '@nestjs/common';
import { MoviesModule } from './movies/movies.module';
import { AppController } from './app.controller';
@Module({
imports: [MoviesModule],
controllers: [AppController],
providers: [],
})
export class AppModule {}
μ΄ μ½λλ₯Ό λ³΄κ³ λ¬Έλ© μ΄λ€ μκ°μ΄ λ€μλ€.
μ κ°κ°μ λͺ¨λμ μ»΄ν¬λνΈμ²λΌ λΆλ¦¬νλκ±°μ§?
κ·Έλ₯ λͺ¨λ
app.module.tsμ μ μ©νμ§ μλ μ΄μ κ° μμκΉ?
NestJSμ λͺ¨λνκ° νλ‘μ νΈ κ΄λ¦¬μ μ΄λ€ μν₯μ λ―ΈμΉ κΉ?
NestJSμμ λͺ¨λμ λΆλ¦¬ν¨μΌλ‘μ¨ μ»λ μ΄μ μ??
μ΄λ¬ν λͺ¨λ κ΅¬μ‘°λ‘ νλ‘μ νΈλ₯Ό μ§ννλ©΄ νμ μ λ―ΈμΉλ μν₯μ μμκΉ?
μ΄λ¬ν μλ¬Έμ ν΄κ²°νκΈ° μν΄ μ΄ κΈμ μ 리νμλ€!
π‘NestJSμ λͺ¨λ ꡬ쑰λ₯Ό μ¬μ©νλ μ΄μ μ΄μ μ₯μ μ?
βΒ 1. λͺ¨λν(Modularity)μ μΊ‘μν(Encapsulation)
λͺ¨λν(Modularity)NestJSλ μ ν리μΌμ΄μ μ μμ λ¨μλ‘ λλ μ μλλ‘ λͺ¨λμ μ§μνλ€.- κ° λͺ¨λμ νΉμ λλ©μΈμ λν κΈ°λ₯μ
μΊ‘μννμ¬ λ 립μ μΌλ‘ κ΄λ¦¬ν μ μλ€. μ½λμ ꡬ쑰λ₯Ό λͺ ννκ² νκ³ μ μ§λ³΄μμ±μ λμ΄λ©° λ€λ₯Έ κ°λ°μμμ νμ μ μμνκ² νλ€.μΊ‘μν(Encapsulation)- λͺ¨λνλ ꡬ쑰λ κ° λ°°μ λ°μ λͺ¨λμ μμ μ΄ μ± μμ§κ³ μ§μ€ν μ μλλ‘ μ λνλ€.**
λ€λ₯Έ λͺ¨λ κ°μ μμ‘΄μ±μ μ΅μννμ¬ μ½λκ° λ³κ²½λ λ μν₯μ μ€μΌ μ μλ€.
βΒ 2. κ΄μ¬μ¬μ λΆλ¦¬(Separation of Concerns)
-
NestJSμ λͺ¨λ ꡬ쑰λ μ ν리μΌμ΄μ μ ꡬμ±νλ κ° λΆλΆμ΄ λ 립μ μΌλ‘ κ°λ°λ μ μλλ‘ λμμ€λ€. β μμ :AuthModuleμ μΈμ¦κ³Ό κ΄λ ¨λ λͺ¨λ λ‘μ§μ λ€λ£¨κ³RegisterModuleμ λ‘κ·ΈμΈ λ° νμκ°μ κ³Ό κ΄λ ¨λ λͺ¨λ λ‘μ§μ λ€λ£¬λ€. -
μ΄λ₯Ό ν΅ν΄
λ€λ₯Έ λͺ¨λμμλ ν΄λΉ λ‘μ§μ μ κ²½ μ°μ§ μμλ λλ©° μ΄λ μ μ§λ³΄μμ ν μ€νΈλ₯Ό μ©μ΄νκ² λ§λλ ν¨κ³Όκ° μλ€.
βΒ 3. μ¬μ¬μ©μ±(Reusability)π€Β κ°μ
NestJSμ λͺ¨λμ λ 립μ μΌλ‘ μμ±λμ΄ λ€λ₯Έ μ ν리μΌμ΄μ μ΄λ νλ‘μ νΈμμ μ¬μ¬μ©λ μ μλ€. β μμ :AuthModuleμ λ€λ₯Έ νλ‘μ νΈμ μ¬μ¬μ©ν μ μμΌλ©°, νμν κ²½μ°λͺ¨λμ μ½κ² νμ₯νκ±°λ μμ ν μ μλ€.
βΒ 4. μ μ°μ±(Flexibility)
- μλ‘μ΄ κΈ°λ₯μ μΆκ°ν΄μΌ ν λ, μλ‘μ΄ λͺ¨λμ μμ±νμ¬ κΈ°μ‘΄ λͺ¨λκ³Ό λ 립μ μΌλ‘ κ°λ°ν μ μλ€.
μ ν리μΌμ΄μ μ΄ μ»€μ§μ λ°λΌ ꡬ쑰λ₯Ό λ μ μ°νκ² νμ₯ν μ μλ€.
βΒ 5. ν μ€νΈ μ©μ΄μ±(Testability)
- λͺ¨λμ΄ λ
립μ μ΄λ―λ‘ ν
μ€νΈ λν κ° λͺ¨λ λ¨μλ‘ μνλκΈ°μ ν¨μ¬ μ¬μμ§λ€.
β
μ΄λ₯Ό ν΅ν΄ κ° λͺ¨λμ΄ μ μμ μΌλ‘ λμνλμ§ νΈμ¨μ μΌλ‘ κ²μ¦ν μ μκ³ , λ¬Έμ κ° λ°μν κ²½μ° ν΄λΉ λͺ¨λμ μ§μ€ν μ μλ€.
βΒ 6. ν νμ λ° μ€μΌμΌλ§(Team Collaboration and Scaling)
νμ μ μ©μ΄μ±- νλ‘μ νΈ κ΅¬μ±μ λ΄μμ κ° νμμ΄ νΉμ λͺ¨λμ΄ μ§μ€νμ¬ μμ
ν μ μμ΄
μ¬λ¬ μ¬λμ΄ λμμ λ€μν κΈ°λ₯μ κ°λ°νλ κ²μ΄ μ©μ΄ν΄μ§λ€. μ€μΌμΌλ§(Scaling)- νλ‘μ νΈ κ·λͺ¨κ° μ»€μ§ λ, λͺ¨λ λ¨μλ‘ μμ
μ λΆν ν¨μΌλ‘μ¨
ν¨μ¨μ μΌλ‘ νλ ₯ν μ μκ² λλ€.
π€Β κ·Έλ λ€λ©΄ λ¨μ μ μμκΉ?
β λͺ¨λμ λΆλ¦¬νλ κ²μ μ λνλ λ§νΌ μλμ κ°μ 리μ€ν¬μ λ¨μ μ΄ μ‘΄μ¬νλ€!
πΒ 1. νλ‘μ νΈ λ³΅μ‘μ± μ¦κ°
NestJSλ μ¬μ© λͺ©μ μμ²΄κ° μμ νλ‘μ νΈμλ μ΄μΈλ¦¬μ§ μλ€. μμ νλ‘μ νΈμμ λͺ¨λμ λ무 λ§μ΄ λλκ² λλ€λ©΄ μ€νλ €λ³΅μ‘μ±μ΄ μ¦κ°νμ¬ μ μ§λ³΄μκ° νλ€μ΄μ§ μ μλ€.- νμν λͺ¨λ κ°μ κ΄κ³λ₯Ό
μλͺ» κ΄λ¦¬νλ©΄ μμ‘΄μ± μ¬μ΄ν΄(Dependency cycle)μ΄ λ°μν μ μλ€!
πΒ 2. μ΄κΈ° μ€κ³μ λ¬Έμ
- λͺ¨λμ λΆλ¦¬νμ¬ κ°κ°μ λ
λ¦½μ²΄λ‘ μ΄μνκΈ° λλ¬Έμ νλ‘μ νΈ μ΄λ°λΆν° λͺ¨λ ꡬ쑰λ₯Ό μλͺ» μ€κ³νλ©΄
μΆν λ³κ²½νλ λ° λ§μ μκ°μ΄ μμλ μ μλ€.β λ°λΌμ μ΄κΈ° μ€κ³ λ¨κ³μμ λͺ¨λμ μ λλλ κ²μ΄ μ€μ!
πΒ κ²°λ‘ !
NestJSμμ μ§μνλ λͺ¨λν ꡬ쑰λ
Springκ³Ό κ°μ΄ μν°νλΌμ΄μ¦κΈ μ ν리μΌμ΄μ μ κ΄λ¦¬νκΈ°μ λ§€μ° μ μ©ν ꡬ쑰λΌκ³ μκ°νλ€. λ§μΉMVC(Model-View-Controller)λ₯Ό μ°μμν€λ ꡬ쑰λ₯Ό ν΅ν΄ μ μ§λ³΄μμ±κ³Ό μ¬μ¬μ©μ±μ λμ΄κ³ , ν νμ μ μννκ² νλ©°, μ μ°νκ² νμ₯ν μ μλ μλΉμ€λ₯Ό κ°λ°ν μ μλ€λ κ²μ μ λ§ μ’λ€κ³ μκ°νλ€. νμ§λ§, κ³Όμ λΆκΈμ΄λΌλ λ§μ΄ μλ€. μμ νλ‘μ νΈμμλ μ€νλ €λ³΅μ‘μ±μ μ¦κ°μμΌ νλ‘μ νΈλ₯Ό μνν μ§ννμ§ λͺ»νκ² λ μ μμ΄μ μ ν λͺ¨λν μ λ΅μ΄ κΌ μ νλμ΄μΌ νλ€κ³ μκ°νλ€!