Serverless Computing คืออะไร และเหตุใดจึงสำคัญสำหรับ IIoT

ในโลกของ Industrial IoT (IIoT) ที่เซ็นเซอร์หลายแสนตัวส่งข้อมูลทุก ๆ เสี้ยววินาที สถาปัตยกรรมเซิร์ฟเวอร์แบบดั้งเดิมที่ต้องเปิดทิ้งไว้ตลอดเวลา (always-on) เริ่มกลายเป็นคอขวดทั้งในแง่ต้นทุนและความยืดหยุ่น Serverless Computing หรือ Function-as-a-Service (FaaS) คือพาราดิมที่เปลี่ยนวิธีคิดเรื่องการประมวลผลข้อมูลอุตสาหกรรมอย่างสิ้นเชิง โดยให้คุณเขียนโค้ดเพื่อตอบสนองต่อ “เหตุการณ์” (event) ที่เกิดขึ้นจริง เช่น อุณหภูมิเกินเกณฑ์ มอเตอร์สั่นผิดปกติ หรือสายการผลิตหยุดชะงัก โดยไม่ต้องกังวลเรื่องการจัดการเซิร์ฟเวอร์เลย

แนวคิดหลักของ Serverless ในบริบท IIoT คือ Event-Driven Architecture — ระบบจะกระตุ้น (trigger) ฟังก์ชันให้ทำงานก็ต่อเมื่อมี event เกิดขึ้นจริงเท่านั้น ซึ่งสอดคล้องกับพฤติกรรมของข้อมูลอุตสาหกรรมที่ส่วนใหญ่เป็น sporadic (ไม่ต่อเนื่อง) ตัวอย่างเช่น เซ็นเซอร์วัดสั่นสะเทือนอาจส่งข้อมูลทุก ๆ 100 ms แต่สัญญาณเตือนภัยเกิดขึ้นเพียง 2–3 ครั้งต่อวัน การใช้ Serverless ทำให้ทรัพยากรประมวลผลถูกใช้เฉพาะเมื่อจำเป็นจริง ๆ

สถาปัตยกรรม Serverless สำหรับ IIoT อย่างละเอียด

ส่วนประกอบหลัก 4 ชั้น

สถาปัตยกรรม Serverless สำหรับ IIoT ประกอบด้วยชั้นหลัก 4 ชั้นที่ทำงานสัมพันธ์กัน:

ชั้น (Layer) หน้าที่ เทคโนโลยี/มาตรฐาน Latency เป้าหมาย
1. Event Source รับข้อมูลจากเซ็นเซอร์/PLC/Edge Gateway MQTT, AMQP, OPC UA Pub/Sub, HTTP Webhook 1–10 ms (Edge) / 50–200 ms (Cloud)
2. Event Router กระจาย event ไปยังฟังก์ชันที่เกี่ยวข้อง Event Bus, Message Queue, Topic-based Routing 5–20 ms
3. Function Execution ประมวลผล logic เช่น anomaly detection, alerting FaaS Runtime (containerized), Edge Function 50–500 ms (ขึ้นกับความซับซ้อน)
4. State Store เก็บผลลัพธ์, state, และ context Time-Series Database, In-Memory Cache, Object Storage 1–10 ms (cache) / 10–50 ms (DB)

การไหลของข้อมูล (Data Flow)

เมื่อเซ็นเซอร์ส่งค่าอุณหภูมิผ่าน MQTT topic เช่น factory/line1/oven3/temperature ข้อมูลจะถูกส่งไปยัง Edge Gateway ซึ่งทำหน้าที่เป็น MQTT Broker ในเบื้องต้น จากนั้น Gateway จะ forward ข้อมูลไปยัง Event Router บน Cloud หรือ Edge ขึ้นอยู่กับการตั้งค่า routing rule ตัวอย่างเช่น หากอุณหภูมิเกิน 85°C Event Router จะ trigger ฟังก์ชัน checkOverheating() ทันที ฟังก์ชันนี้อาจอ่านค่า baseline จาก cache เปรียบเทียบกับค่าปัจจุบัน แล้วส่ง alert ไปยังระบบแจ้งเตือนภายในเวลา ต่ำกว่า 200 มิลลิวินาที นับจากเซ็นเซอร์ส่งข้อมูล

Cold Start: ความท้าทายอันดับหนึ่งของ Serverless ในงานอุตสาหกรรม

Cold Start คือเวลาที่ระบบใช้ในการสร้างและเตรียมฟังก์ชันใหม่เมื่อยังไม่มี instance ที่พร้อมใช้งาน ในงาน Consumer ทั่วไป cold start ประมาณ 100–500 ms อาจไม่เป็นปัญหา แต่ในงานอุตสาหกรรมที่ต้องการการตอบสนองในระดับ sub-second นี่คือปัญหาใหญ่

สถานการณ์ Cold Start Time ผลกระทบต่อกระบวนการผลิต
ฟังก์ชันเล็ก (Node.js/Python, 50 MB image) 80–250 ms ต่ำ — เหมาะกับ monitoring/analytics
ฟังก์ชันขนาดกลาง (มี ML model 2–5 MB) 300–800 ms ปานกลาง — ต้องใช้ mitigation strategy
ฟังก์ชันใหญ่ (container image 500 MB+) 1,000–3,000 ms สูง — ไม่เหมาะกับ safety-critical path
Warm Instance (พร้อมใช้) 1–10 ms ต่ำมาก — เหมาะกับ real-time control

กลยุทธ์ลด Cold Start สำหรับ IIoT

  • Provisioned Concurrency — จอง instance ไว้ให้พร้อมเสมอ (warm) ลด cold start เหลือต่ำกว่า 10 ms แต่มีค่าใช้จ่ายสูงกว่า
  • Edge Function Deployment — deploy ฟังก์ชันบน Edge Gateway แทน Cloud เพื่อกำจัด network latency และ cold start จาก cloud provisioning
  • Minimized Container Image — ใช้ base image ขนาดเล็ก (ต่ำกว่า 50 MB) ลดเวลา pull image จาก 2,000 ms เหลือต่ำกว่า 200 ms
  • Connection Pooling — ใช้ pre-warmed database connection pool เพื่อหลีกเลี่ยง TCP handshake delay ที่เพิ่ม 50–100 ms
  • Cascade Trigger Pattern — ฟังก์ชันแรก (lightweight) trigger ฟังก์ชันถัดไปเพื่อให้ instance ถัดไป warm up ไปพร้อมกัน

Serverless vs. Traditional Microservices: การเปรียบเทียบเชิงลึก

เกณฑ์เปรียบเทียบ Serverless (FaaS) Traditional Microservices
การจัดการโครงสร้างพื้นฐาน ไม่ต้องจัดการ (fully managed) ต้องดูแล VM/container orchestration เอง
การ Scale อัตโนมัติ 0 ถึง N (scale-to-zero) ต้องตั้งค่า HPA/VPA ลำบากกว่า
Latency (worst case) สูง (cold start 1–3 วินาที) ต่ำและคาดเดาได้ (1–10 ms)
Execution Time Limit จำกัด (ปกติ 15 นาที/ฟังก์ชัน) ไม่จำกัด
State Management Stateless — ต้องใช้ external store อาจเก็บ state ใน memory ได้
ความเหมาะสมกับ IIoT Event processing, alerting, ETL Real-time control, streaming, long-running tasks

Use Case จริงในโรงงานอุตสาหกรรม

1. การตรวจจับความผิดปกติของมอเตอร์ (Motor Anomaly Detection)

โรงงานผลิตชิ้นส่วนยานยนต์ติดตั้งเซ็นเซอร์วัดกระแสมอเตอร์ (Motor Current Signature) บนมอเตอร์ 120 ตัว ข้อมูลถูกส่งทุก 50 ms ผ่าน MQTT ไปยัง Event Router ซึ่ง trigger ฟังก์ชัน detectAnomaly() ที่ใช้ Machine Learning model ขนาด 3 MB ตรวจสอบรูปแบบกระแสที่ผิดปกติ เมื่อพบความผิดปกติ ฟังก์ชันจะส่ง alert ไปยังระบบ CMMS และบันทึก event ลง Time-Series Database ระบบทำงานได้ 1,200 ฟังก์ชัน execution ต่อนาที โดยใช้ทรัพยากรเฉพาะเมื่อมี event จริง

2. การประมวลผลภาพตรวจสอบคุณภาพ (Quality Inspection Trigger)

กล้อง Industrial Vision ส่งภาพไปยัง Edge Gateway เมื่อพบ defect ที่มี confidence score ต่ำกว่าเกณฑ์ ระบบจะ trigger ฟังก์ชันบน Cloud เพื่อรันโมเดล AI ขนาดใหญ่กว่าเพื่อยืนยันผล การออกแบบนี้ทำให้ใช้ทรัพยากร Cloud เฉพาะเมื่อจำเป็น (ประมาณ 5% ของภาพทั้งหมด) ขณะที่ 95% ของภาพถูกประมวลผลที่ Edge เท่านั้น

3. การรายงาน OEE แบบ Real-time

ฟังก์ชัน calculateOEE() ถูก trigger ทุกครั้งที่ PLC ส่งสถานะการผลิต (part count, cycle time, downtime reason) ผ่าน OPC UA ฟังก์ชันจะคำนวณ OEE (Overall Equipment Effectiveness) และอัปเดต dashboard แบบ real-time โดยไม่ต้องดูแลเซิร์ฟเวอร์

แนวทางปฏิบัติที่ดี (Best Practices) สำหรับ Serverless IIoT

  1. แยก Hot Path จาก Cold Path — ฟังก์ชันที่ต้องการ latency ต่ำ (< 50 ms) ให้รันบน Edge เสมอ ฟังก์ชันที่ tolerance latency ได้ (analytics, reporting) ให้รันบน Cloud
  2. ใช้ Idempotent Design — ออกแบบฟังก์ชันให้สามารถรันซ้ำได้โดยไม่เกิดผลข้างเคียง เพราะ Serverless อาจ retry อัตโนมัติเมื่อ timeout
  3. กำหนด Dead Letter Queue (DLQ) — เมื่อฟังก์ชันล้มเหลวต่อเนื่อง event จะถูกส่งไป DLQ เพื่อวิเคราะห์ภายหลัง ป้องกันการสูญเสียข้อมูล
  4. จำกัดขนาด Payload — ฟังก์ชัน Serverless ควรรับ payload ไม่เกิน 128 KB ข้อมูลขนาดใหญ่ควรอ้างอิงผ่าน URL หรือ object storage reference
  5. Monitor ด้วย Distributed Tracing — เนื่องจากฟังก์ชันแต่ละตัวเป็นอิสระ การใช้ tracing (เช่น OpenTelemetry) จำเป็นมากเพื่อ track event ที่ไหลผ่านหลายฟังก์ชัน

💡 ข้อควรระวัง: อย่าใช้ Serverless สำหรับ safety-critical control loop เช่น emergency shutdown หรือ interlock logic เพราะ cold start และ network latency อาจทำให้การตอบสนองล่าช้าเกินไป ฟังก์ชันเหล่านี้ควรรันบน Safety PLC หรือ Edge Controller เท่านั้น

Key Takeaways

  • Serverless (FaaS) เหมาะกับ Event-Driven IIoT โดยเฉพาะงานที่มี event เกิดขึ้นไม่ต่อเนื่อง เช่น anomaly detection, alerting, และ reporting
  • Cold Start คือความท้าทายหลัก — มีได้ตั้งแต่ 80 ms ถึง 3,000 ms ขึ้นกับขนาดฟังก์ชัน ต้องวางกลยุทธ์ mitigation เช่น provisioned concurrency หรือ edge deployment
  • แยก Hot/Cold Path — real-time control รันบน Edge, analytics/reporting รันบน Cloud Serverless
  • Scale-to-Zero เป็นจุดแข็งที่สุดของ Serverless ทำให้ทรัพยากรถูกใช้เฉพาะเมื่อจำเป็นจริง ๆ
  • Idempotent Design จำเป็นมาก เพราะระบบอาจ retry ฟังก์ชันอัตโนมัติ
  • ห้ามใช้ Serverless สำหรับ safety-critical path — ต้องใช้ deterministic execution เช่น Safety PLC