การเปลี่ยนผ่านสถาปัตยกรรมเว็บ: จาก Colocation สู่ Serverless
หลายปีที่ผ่านมา ผมมีโอกาสได้ทำงานติดตั้ง ดูแล และย้ายระบบหลากหลายรูปแบบ ตั้งแต่ระดับฐานข้อมูล (database), application server, และ web server ไปจนถึงการติดตั้งในศูนย์ข้อมูล (data center) และการย้ายระบบขึ้นสู่ cloud ซึ่งทำให้เห็นทั้งข้อดีและข้อจำกัดของแต่ละสถาปัตยกรรมอย่างชัดเจน ไม่นานมานี้ เมื่อมีเวลาปรับปรุง blog ส่วนตัว จึงตั้งโจทย์กับตัวเองว่าจะทดลองย้ายระบบไปสู่สถาปัตยกรรมแบบ serverless อย่างเต็มรูปแบบ
วัตถุประสงค์ของการปรับย้ายระบบ
บทความนี้นำเสนอกรณีศึกษาการปรับย้ายระบบ blog วิชาการส่วนบุคคล จากสภาพแวดล้อมแบบ colocation และ cloud แบบดั้งเดิม ไปสู่สถาปัตยกรรมแบบ serverless บนแพลตฟอร์มของ :contentReference[oaicite:0]{index=0} โดยมีวัตถุประสงค์เพื่อ
- ลดภาระการบริหารจัดการระบบ (operational overhead)
- เพิ่มประสิทธิภาพในการให้บริการ (performance)
- ปรับรูปแบบการพัฒนาให้สอดคล้องกับแนวคิด edge-native
1. สถาปัตยกรรมเดิม: Colocation และข้อจำกัด
ในระยะเริ่มต้น ระบบถูกติดตั้งบน colocation server ซึ่งเป็นรูปแบบที่ให้การควบคุมสูงสุดในระดับ hardware และ network
ลักษณะสำคัญ
- การจัดการระบบปฏิบัติการและ network ด้วยตนเอง
- การกำหนด security control ในระดับต่ำ (low-level control)
- ความสามารถในการปรับแต่งเฉพาะทาง
ข้อจำกัด
- ภาระในการดูแลรักษาระบบ (system maintenance) สูง
- การขยายระบบ (scalability) มีข้อจำกัดเชิงกายภาพ
- ความต่อเนื่องของบริการ (availability) ขึ้นกับการบริหารจัดการโดยตรง
โดยสรุป สถาปัตยกรรมนี้เหมาะกับระบบที่ต้องการการควบคุมสูง แต่มีต้นทุนด้านการดำเนินงาน (operational cost) สูงตามไปด้วย
2. การเปลี่ยนผ่านสู่ Cloud: การเพิ่มความยืดหยุ่น
การย้ายระบบขึ้นสู่ cloud (ในรูปแบบ virtual machine) ช่วยลดข้อจำกัดด้าน hardware และเพิ่มความยืดหยุ่นในการจัดสรรทรัพยากร
ข้อดี
- การจัดเตรียมระบบ (provisioning) ทำได้รวดเร็ว
- รองรับการขยายระบบแบบ dynamic
- ลดภาระด้าน hardware lifecycle
อย่างไรก็ตาม ปัญหาหลักยังคงอยู่ในมิติของการบริหารจัดการ ได้แก่
- การอัปเดตระบบปฏิบัติการ (patch management)
- การกำหนดค่าความมั่นคงปลอดภัย (hardening)
- การตรวจสอบและเฝ้าระวัง (monitoring)
ดังนั้น แม้ cloud จะลดภาระด้านโครงสร้างพื้นฐาน แต่ยังไม่สามารถลดภาระด้านการดำเนินงานได้อย่างมีนัยสำคัญ
3. Serverless Architecture: การลดภาระเชิงโครงสร้าง
การเปลี่ยนผ่านสู่ serverless architecture เป็นการเปลี่ยนแนวคิดจาก
“การบริหาร server” → “การบริหาร execution environment”
ในการทดลองครั้งนี้ ผมเลือกใช้แพลตฟอร์มของ :contentReference[oaicite:1]{index=1} เนื่องจากสามารถเริ่มต้นใช้งานได้โดยไม่มีค่าใช้จ่าย (ภายใต้ข้อจำกัดของ free tier)
องค์ประกอบหลักของระบบ
- Pages: สำหรับการให้บริการ static content
- Workers: สำหรับ logic และ API
- D1: สำหรับการจัดเก็บข้อมูลเชิงโครงสร้าง (lightweight database)
คุณลักษณะสำคัญ
- ไม่มีการจัดการระบบปฏิบัติการโดยผู้ใช้งาน
- การ deploy อยู่ในรูปแบบ CI/CD โดยธรรมชาติ
- การประมวลผลเกิดขึ้นที่ edge node ใกล้ผู้ใช้งาน
4. ผลลัพธ์เชิงเทคนิค
4.1 การลดภาระการดำเนินงาน
การย้ายสู่ serverless ทำให้กิจกรรมต่อไปนี้ถูกลดหรือหมดไป:
- การดูแล server lifecycle
- การ patch และ update ระบบ
- การบริหาร resource ระดับเครื่อง
4.2 ประสิทธิภาพในการให้บริการ
- ลด latency จากการให้บริการผ่าน edge network
- ปรับปรุงค่า time-to-first-byte (TTFB)
- รองรับผู้ใช้งานแบบ global โดยไม่ต้อง deploy หลาย region
4.3 การเปลี่ยน focus ของการพัฒนา
จากเดิมที่เน้น: infrastructure management เปลี่ยนเป็น application logic และ service design
5. การวิเคราะห์เชิงสถาปัตยกรรม
สถาปัตยกรรมแบบ serverless บน edge สามารถพิจารณาได้ในมิติของ abstraction level ที่สูงขึ้น โดยมีการ decouple องค์ประกอบหลักดังนี้:
- compute ถูก abstract ออกจากเครื่องจริง
- network ถูก integrate กับ CDN โดยอัตโนมัติ
- scaling เป็น implicit (ไม่ต้องกำหนดล่วงหน้า)
แนวโน้มนี้สอดคล้องกับการพัฒนาในสาขา distributed systems ที่มุ่งลด coupling ระหว่าง resource และ application
6. ข้อจำกัดและบริบทการใช้งาน
แม้ว่าสถาปัตยกรรมแบบ serverless จะมีข้อดีหลายประการ แต่ยังมีข้อจำกัดในบางบริบท เช่น:
- งานที่ต้องการควบคุม hardware โดยตรง
- ระบบที่มี long-running process
- งานประมวลผลขนาดใหญ่ เช่น high-performance computing (HPC)
ดังนั้น การเลือกใช้สถาปัตยกรรมควรพิจารณาตามลักษณะของ workload เป็นหลัก
สรุป
การเปลี่ยนผ่านจาก
colocation → cloud → serverless
ไม่ได้เป็นเพียงการเปลี่ยนเทคโนโลยี แต่เป็นการเปลี่ยน “ระดับของ abstraction” ในการออกแบบระบบ
สถาปัตยกรรมแบบ serverless โดยเฉพาะในบริบทของ edge computing ช่วยให้สามารถ:
- ลดภาระการบริหารจัดการระบบ
- เพิ่มประสิทธิภาพการให้บริการ
- ปรับ focus ไปสู่การพัฒนาเชิงฟังก์ชันและนวัตกรรม