เป็นแนวคิดการแบ่งระบบในเชิง “กายภาพ” หรือ “Deployment” ออกเป็น 3 ส่วนหลักๆ ซึ่งมักจะทำงานอยู่บนเซิร์ฟเวอร์หรือสภาพแวดล้อมที่แยกจากกันได้
- Presentation Tier (Client): ส่วนที่ผู้ใช้โต้ตอบโดยตรง ซึ่งก็คือ เว็บเบราว์เซอร์ ของผู้ใช้ที่แสดงผล HTML, CSS, และ JavaScript 🖥️
- Application Tier (Logic/Middle Tier): ส่วนที่ประมวลผลตรรกะทางธุรกิจทั้งหมด ซึ่งก็คือ เซิร์ฟเวอร์ที่รัน Laravel Application ของเรา ทั้งหมด (รวมทั้ง Livewire, Service, Repository) 💻
- Data Tier: ส่วนที่จัดเก็บและจัดการข้อมูล ซึ่งก็คือ Database Server (เช่น MySQL, PostgreSQL) 🗄️
Layered Architecture (Service/Repository)
เป็นแนวคิดการแบ่งโค้ดในเชิง “ตรรกะ” (Logical) หรือ “การจัดโครงสร้างโค้ด” ที่ทำงานอยู่ ภายใน Application Tier เพื่อให้โค้ดสะอาดและเป็นระเบียบ
- Presentation Layer (Livewire/Controller): รับคำสั่งจากผู้ใช้ (ที่ส่งมาจาก Presentation Tier)
- Business Layer (Service): ประมวลผลตรรกะทางธุรกิจ
- Data Access Layer (Repository): ติดต่อกับ Data Tier เพื่อดึงหรือบันทึกข้อมูล
สรุปความสัมพันธ์
สถาปัตยกรรมแบบ Service/Repository ที่เราคุยกัน คือ วิธีการจัดระเบียบโค้ดที่ทำงานอยู่ภายใน Application Tier ของสถาปัตยกรรมแบบ Three-Tier
ดังนั้น คำตอบคือ ใช่ครับ แนวทางที่เราทำกันนั้นสอดคล้องและเป็นส่วนหนึ่งของ Three-Tier Architecture โดยเป็นการลงรายละเอียดในส่วนของ Application Tier ให้มีโครงสร้างที่ชัดเจนและเป็นระบบนั่นเองครับ