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 เป็นแบบนี้
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