Skip to content
CodeSook
CodeSook

03. Architecture we will use in this workshop


Advanced Layered Architecture

What is Layered Architecture

เป็นการจัดการแยกโค้ดให้เป็นส่วนๆ แบ่งเป็นชั้นๆ บน ลง ล่าง
มาดูภาพกันเลยดีกว่า

┌─────────────────┐
│ Presentation │ (Controllers/Routes)
├─────────────────┤
│ Business │ (Services)
├─────────────────┤
│ Data │ (Repositories)
└─────────────────┘

โดยชั้นบนจะเข้าถึงการชั้นล่างได้ เรียก function ของชั้นล่างได้ แต่ห้ามชั้นล่างจะเข้าถึงชั้นบน

Controller (Presentation)
Service (Business)
Repository (Data)

เราจะวางโครงสร้างของ folder เป็นแบบนี้

Terminal window
src/
├── types/ # Shared interfaces/types
├── repositories/ # Data access layer
├── services/ # Business logic layer
├── controllers/ # Presentation layer
├── schema/ # Presentation layer
└── app.ts # Application setup

Why

เราจะใช้ Advanced Layered Architecture ในการทำ Backend ของเราใน workshop นี้ เพราะว่า

  • ในอนาคตเราจะไม่ได้ทำแค่ basic project จะต้องเจอโปรเจคที่มีความซับซ้อนมากๆ
  • เข้าใจได้ง่ายกว่า Clean Architecture
  • ต่อยอดไปใช้ Clean Architecture ได้ง่ายขึ้น
  • เรายังไม่ได้ต้องการความคล่องตัวเท่ากับการใช้ Clean Architecture
  • single database
  • I’m not master for Clean Architecture yet