การที่ทุกอย่าง ถูกรวมอยู่ในโปรเจกต์เดียวกันและรันอยู่ใน Server ตัวเดียวกันแบบนี้ เราเรียกว่า Monolithic Architecture
Monolithic Architecture คืออะไร ?
มันคือรูปแบบการสร้างซอฟต์แวร์ที่ส่วนประกอบทั้งหมด (User Interface, Business Logic, Database Access) ถูกรวมเข้าด้วยกันเป็นหน่วยเดียว เวลาคุณสั่ง Build คุณจะได้ไฟล์ก้อนเดียว แล้วนำไปรันที่เดียวจบ
ส่วนประกอบ
- Frontend: ใช้ Template Engine อย่าง Thymeleaf เพื่อสร้าง HTML บน Server แล้วส่งไปให้ Browser
- Backend: จัดการสิทธิ์ , ติดต่อ Database (SQL Server) , และควบคุม Flow การทำงาน
API
สามารถใช้ API ควบคู่ไปกับ Web Controller ได้ในโปรเจกต์เดียวกันครับ
- Controller -> สำหรับส่งหน้าเว็บ
- RestController -> สำหรับส่งข้อมูล ให้ Mobile App หรือระบบอื่นมาดึงข้อมูลไปใช้
ทำไมเราถึงเรียกว่า Monolith ?
- ใช้ Runtime เดียวกัน: เมื่อคุณสั่งรันโปรเจกต์ ทั้งหน้าเว็บ และระบบหลังบ้านจะทำงานภายใต้ Java Process ตัวเดียวกัน
- แชร์ Resource เดียวกัน: ใช้ CPU และ RAM ก้อนเดียวกันบนเครื่อง Server
- Deploy พร้อมกัน: เวลาคุณแก้ไข Code แค่ปุ่มเดียวในหน้า Login คุณต้อง Build และ Restart ระบบใหม่ทั้งหมด
สรุปสั้น ๆ : คือการสร้าง “ระบบที่สมบูรณ์ในตัวมันเอง”
เมื่อไหร่ที่มันจะไม่ใช่ Monolith ?
มันจะเปลี่ยนไปเป็น Decoupled Architecture หรือ Microservices ก็ต่อเมื่อ
- คุณแยก Frontend ออกไปเขียนด้วย React / Vue แล้วรันบน Server คนละตัวกับ Spring Boot
- คุณแยก Database ออกไปเป็นหลาย ๆ ก้อนตามฟังก์ชันงาน
เปรียบเทียบกับรูปแบบอื่น
| รูปแบบ | ลักษณะการทำงาน |
| Monolith | เหมือน Laravel ที่ใช้ Blade + Controller จบในที่เดียว รันบน Server ตัวเดียว |
| Decoupled / Separated | แยกเป็น Backend และ Frontend (React /Vue / Next.js) คุยกันผ่าน JSON |
| Microservices | แยก Backend ออกเป็นหลาย ๆ โปรเจกต์ย่อย แยกฐานข้อมูลกัน |
ข้อดีและข้อเสียของ Monolith
ข้อดี
- Simple: พัฒนาง่าย ไม่ต้องปวดหัวกับการตั้งค่า CORS หรือการยิง API ข้ามเครื่อง
- Performance: การดึงข้อมูลทำได้เร็วเพราะทุกอย่างอยู่ในหน่วยความจำเดียวกัน
- Deployment: เอาไฟล์ไปรันที่ Server แค่ที่เดียว จบ
- เหมาะกับการทำ Prototype อย่างน้อยลดความยุ่งยากในการจัดการ service, API
ข้อเสีย
- Scalability: ถ้าคนใช้เยอะจนเว็บอืด คุณต้องขยาย ทั้งก้อน ไม่สามารถขยายเฉพาะส่วนได้
- Tight Coupling: ถ้าส่วนใดส่วนหนึ่งพัง อาจจะทำให้ทั้งระบบรันไม่ได้
อ่านเพิ่มเติม