คู่มือ

Serverless คืออะไร การประมวลผลแบบ serverless อธิบายง่ายๆ

Serverless คือวิธีการรันโค้ดโดยที่คุณไม่ต้องตั้งค่าหรือจัดการเซิร์ฟเวอร์เอง คุณส่งโค้ดให้ผู้ให้บริการคลาวด์ และมันจะรันเฉพาะเมื่อมีสิ่งกระตุ้น เช่น คำขอจากเว็บ ไฟล์ที่อัปโหลด หรือการแจ้งเตือนการชำระเงิน แล้วก็หยุด คุณมักจ่ายสำหรับเวลาที่โค้ดทำงานจริง ไม่ใช่เครื่องที่นั่งว่างอยู่

ทำไม serverless จึงสำคัญเมื่อสร้างด้วย AI

เมื่อคุณสร้างแอปด้วย AI และดูตัวเลือกโฮสติ้งหรือโค้ด คุณจะเจอคำว่า "serverless function" "edge function" หรือ "cloud function" แพลตฟอร์มโฮสติ้งหลายแห่งมีบริการเหล่านี้ และเครื่องมือสร้างแอปด้วย AI บางตัวนำแบ็กเอนด์ไปใช้ในรูปแบบนี้ การเข้าใจโมเดลนี้ช่วยตอบคำถามเชิงปฏิบัติสามข้อ:

  • ค่าใช้จ่าย แอปของคุณจะเสียเงินตอนที่ไม่มีใครใช้งานหรือไม่?
  • ความเร็ว ทำไมคำขอแรกหลังช่วงเงียบจึงช้ากว่า?
  • ข้อจำกัด ทำไมงานที่ยาวนาน เช่น การสร้างรายงานขนาดใหญ่หรือประมวลผลวิดีโอ จึงหมดเวลา?

นอกจากนี้ควรรู้ด้วยว่า serverless ไม่ใช่ การไม่มีแบ็กเอนด์ คุณยังมีโค้ดฝั่งเซิร์ฟเวอร์อยู่ เพียงแค่คนอื่นเป็นผู้รันเครื่องเหล่านั้น สำหรับพื้นฐาน ดู เซิร์ฟเวอร์คืออะไร

ตัวอย่างในชีวิตประจำวัน

เซิร์ฟเวอร์แบบดั้งเดิมเหมือนการเป็นเจ้าของรถยนต์ มันพร้อมใช้งานทันที แต่คุณต้องจ่ายค่าประกัน ที่จอด และค่าบำรุงรักษา ไม่ว่าคุณจะขับหรือไม่

Serverless เหมือนการเรียกแท็กซี่ คุณจ่ายเฉพาะเที่ยวที่นั่ง และถ้าคนหนึ่งร้อยคนต้องการรถพร้อมกัน แท็กซี่หนึ่งร้อยคันก็จะมาให้ แต่อาจต้องรอรถมาถึงสักครู่ (เรียกว่า cold start) แต่ละเที่ยวมีความยาวสูงสุด และคนขับจำคุณไม่ได้จากเที่ยวก่อน (function เป็น stateless)

Serverless function ทำงานอย่างไร

ในรูปแบบที่พบบ่อยที่สุด เรียกว่า functions as a service:

  1. คุณเขียน function โค้ดเล็กๆ ที่จัดการเหตุการณ์ประเภทหนึ่ง เช่น "จัดการ POST ไปยัง /api/bookings"
  2. คุณนำขึ้น deploy ผู้ให้บริการเก็บมันและผูกกับตัวกระตุ้น เช่น URL ตารางเวลา ไฟล์ใหม่ในที่เก็บข้อมูล หรือข้อความในคิว
  3. มีเหตุการณ์เข้ามา ผู้ให้บริการเริ่มสำเนาของ function (หรือใช้ตัวที่อุ่นอยู่แล้ว) รันมัน และส่งผลลัพธ์กลับ
  4. ขยายเองอัตโนมัติ ถ้ามีคำขอพันรายการเข้ามาพร้อมกัน ผู้ให้บริการจะรันสำเนาจำนวนมากขนานกัน ตามขีดจำกัดของบัญชีคุณ
  5. ว่างงาน เมื่อทราฟฟิกหยุด สำเนาจะถูกปิด เมื่อไม่มีอะไรรันอยู่ คุณไม่ต้องจ่ายค่าคอมพิวต์

ตัวอย่าง function ขนาดเล็กใน JavaScript อาจหน้าตาแบบนี้:

export default async function handler(request) {
  const { name } = await request.json();
  return Response.json({ message: `Hello, ${name}` });
}

ไม่มีโค้ดสำหรับเริ่มเซิร์ฟเวอร์ เปิดพอร์ต หรือรักษาโปรเซสให้ทำงานอยู่ แพลตฟอร์มจัดการทั้งหมดนั้นให้

คำว่า "serverless" ยังถูกใช้อย่างหลวมๆ กับบริการที่มีการจัดการอื่นๆ ที่ขยายอัตโนมัติและคิดเงินตามการใช้งาน เช่น ฐานข้อมูลแบบ serverless ที่หยุดชั่วคราวเมื่อไม่มีการใช้งาน

คำศัพท์สำคัญ

คำศัพท์ความหมาย
Function (FaaS)หน่วยโค้ดเล็กๆ ที่ผู้ให้บริการรันตามความต้องการ
Trigger / eventสิ่งที่เริ่ม function เช่น คำขอ HTTP การอัปโหลดไฟล์ ตัวจับเวลา หรือข้อความในคิว
Cold startความหน่วงเมื่อต้องเริ่มสำเนาใหม่ของ function ก่อนจะตอบคำขอ
Warmสำเนาที่กำลังทำงานอยู่แล้วและตอบได้ทันที
Statelessfunction ไม่เก็บหน่วยความจำระหว่างการรัน สิ่งที่ต้องคงอยู่ต้องไปเก็บในฐานข้อมูลหรือที่เก็บไฟล์
Timeoutเวลาสูงสุดที่การรันหนึ่งครั้งได้รับอนุญาต เช่น AWS Lambda สูงสุด 15 นาที และหลายแพลตฟอร์มตั้งค่าเริ่มต้นให้น้อยกว่ามาก
Edge functionfunction ที่รันในหลายตำแหน่งใกล้ผู้ใช้ มักมีขีดจำกัดที่เข้มงวดกว่า
Scale to zeroการไม่รันอะไรเลยและไม่เสียค่าคอมพิวต์เมื่อไม่มีทราฟฟิก

ตัวอย่างประกอบ: เว็บจองคลาสโยคะขนาดเล็ก

เว็บจองของสตูดิโอโยคะแห่งหนึ่งได้รับผู้เข้าชมพุ่งทุกเย็นวันอาทิตย์เมื่อประกาศตารางใหม่ และแทบไม่มีเลยในวันอื่น

  • บนเซิร์ฟเวอร์ที่เปิดตลอดเวลา สตูดิโอจ่ายค่าเครื่องตลอด 24/7 ขนาดตามยอดของเย็นวันอาทิตย์ และส่วนใหญ่ว่างในเวลาอื่น
  • ด้วย serverless function GET /api/classes และ POST /api/bookings เป็น function ช่วงที่คนแน่นวันอาทิตย์จะเปิดสำเนาจำนวนมากโดยอัตโนมัติ ในเช้าวันอังคารที่เงียบ แทบไม่มีอะไรรันเลย และบิลใกล้ศูนย์

ข้อแลกเปลี่ยนก็ปรากฏขึ้นด้วย ผู้ที่เปิดเว็บเป็นคนแรกในเช้าวันอังคารอาจรอ cold start เพิ่มอีกเล็กน้อย ฐานข้อมูลต้องรับการเชื่อมต่อระยะสั้นจำนวนมากจากสำเนา function หลายตัว ซึ่งอาจต้องใช้ connection pooler และหากสตูดิโอต้องการงาน "สร้าง PDF การเข้าเรียนประจำปีของทุกคน" งานนี้อาจเกินขีดจำกัดเวลาของ function และต้องรันที่อื่น

Serverless เหมาะกับอะไร และไม่เหมาะกับอะไร

เหมาะมากเหมาะน้อยกว่า
ทราฟฟิกที่ต่ำ เป็นช่วงๆ หรือคาดเดาไม่ได้ทราฟฟิกหนักและต่อเนื่อง ซึ่ง always-on อาจถูกกว่า
งานคำขอ-ตอบสนองสั้นๆ: API, ตัวจัดการฟอร์ม, webhookงานที่รันนาน: ประมวลผลวิดีโอขนาดใหญ่ การนำเข้าข้อมูลขนาดใหญ่
ทีมเล็กที่ไม่อยากดูแลเซิร์ฟเวอร์แอปที่เปิดการเชื่อมต่อสดค้างไว้ (บางฟีเจอร์แชตหรือมัลติเพลเยอร์) เว้นแต่แพลตฟอร์มรองรับ
การจัดการเหตุการณ์: "เมื่อมีการอัปโหลดไฟล์ สร้างภาพย่อ"แอปที่ต้องการหน่วยความจำจำนวนมากที่คงไว้ระหว่างคำขอ

ความเข้าใจผิดที่พบบ่อย

  • "Serverless หมายความว่าไม่มีแบ็กเอนด์" หมายความว่าไม่มีเซิร์ฟเวอร์ ให้คุณจัดการ คุณยังต้องเขียนและรักษาความปลอดภัยของโค้ดแบ็กเอนด์
  • "Serverless ถูกกว่าเสมอ" ถูกในปริมาณน้อย แต่ราคาต่อคำขออาจรวมเป็นจำนวนมากเมื่อปริมาณสูงและคงที่
  • "Serverless ขยายได้ไม่จำกัด" แพลตฟอร์มมีขีดจำกัดการทำงานพร้อมกัน และฐานข้อมูลของคุณอาจเป็นคอขวดก่อน function จะถึงขีดจำกัด
  • "ไฟล์ที่บันทึกใน function จะยังอยู่ในครั้งหน้า" พื้นที่เก็บข้อมูลในเครื่องเป็นการชั่วคราว ให้ใช้ฐานข้อมูลหรือที่เก็บไฟล์
  • "Scale-to-zero คือ serverless" เกี่ยวข้องกันแต่ไม่เหมือนกัน แพลตฟอร์มบางแห่งรันแอปของคุณเป็นเซิร์ฟเวอร์ธรรมดาที่หลับเมื่อไม่มีงานและตื่นเมื่อมีคำขอถัดไป ประหยัดได้คล้ายกันและความหน่วงคำขอแรกคล้ายกัน แต่ไม่มีข้อจำกัดเวลาต่อคำขอแบบ function

สิ่งที่ควรถามเครื่องมือสร้างแอปด้วย AI

  • "แบ็กเอนด์นี้จะรันเป็น serverless function หรือเป็นเซิร์ฟเวอร์ที่เปิดตลอดหรือหลับได้ มีผลต่อค่าใช้จ่ายอย่างไร"
  • "มีงานไหนที่อาจใช้เวลานานกว่าขีดจำกัดเวลาของแพลตฟอร์มหรือไม่ ถ้ามี ควรจัดการอย่างไร"
  • "เก็บทุกอย่างที่ต้องคงอยู่ไว้ในฐานข้อมูลหรือที่เก็บไฟล์ ไม่ใช่ในหน่วยความจำหรือไฟล์ในเครื่อง"
  • "ควรจัดการการเชื่อมต่อฐานข้อมูลอย่างไรเมื่อมีสำเนาหลายตัวทำงานพร้อมกัน"
  • "ความหน่วงของคำขอแรกหลังจากแอปไม่ถูกใช้งานนานๆ เป็นเท่าไร"

Mythex โฮสต์แอปอย่างไร

Mythex ไม่ได้อธิบายการโฮสต์ของตัวเองว่าเป็น serverless function เมื่อคุณเผยแพร่ แอปของคุณจะรันเป็นเว็บแอปหรือคอนเทนเนอร์ปกติที่ Mythex จัดการให้ ไม่มีอะไรให้ตั้งค่าโฮสติ้ง เป็นแบบ scale-to-zero: แอปที่เผยแพร่และฐานข้อมูลจะหลับเมื่อไม่มีการใช้งาน และตื่นเมื่อมีผู้เข้าชมครั้งถัดไป แอปที่หลับไม่เสียค่าคอมพิวต์ และเครื่องเพิ่มเติมจะเริ่มทำงานเฉพาะเมื่อทราฟฟิกหนาแน่น (แพ็กเกจ Pro ได้สูงสุด 3 เครื่องต่อบริการ) ฐานข้อมูล Postgres ที่แนบมาก็หลับหลังไม่มีการใช้งาน 5 นาที และเรียกเก็บตามเวลาที่มันตื่นอยู่ ดังนั้นคุณได้ประโยชน์ "จ่ายตามที่ใช้" ส่วนใหญ่ พร้อมความหน่วงของคำขอแรกหลังช่วงเงียบแบบเดียวกัน ดู ขีดจำกัดการโฮสต์ ในเอกสาร และคู่มือของเราเรื่อง การโฮสต์เว็บ และวิธีลดค่าใช้จ่ายโฮสติ้ง

คำถาม

Serverless หมายความว่าอะไรแบบง่ายๆ

Serverless หมายความว่าคุณส่งโค้ดให้ผู้ให้บริการคลาวด์ และมันจะรันเฉพาะเมื่อจำเป็น เช่น เมื่อมีคำขอเข้ามา โดยที่คุณไม่ต้องตั้งค่าหรือดูแลเซิร์ฟเวอร์ใดๆ คุณมักจ่ายตามเวลาที่โค้ดทำงานจริง ไม่ใช่เครื่องที่เปิดตลอดเวลา

Serverless ไม่มีเซิร์ฟเวอร์จริงๆ หรือ

มีเซิร์ฟเวอร์ แค่คุณไม่ต้องจัดการเอง ผู้ให้บริการรันโค้ดของคุณบนเครื่องของเขา เริ่มทำงานเมื่อมีคำขอเข้ามา ขยายเมื่อมีโหลดสูง และปิดเมื่อไม่มีงาน

Cold start คืออะไร

Cold start คือความหน่วงเพิ่มเติมที่เกิดขึ้นเมื่อ serverless function ทำงานหลังจากไม่มีการใช้งาน เพราะผู้ให้บริการต้องเริ่มสำเนาใหม่ก่อน ความหน่วงนี้อาจแทบไม่รู้สึก หรือนานกว่าหนึ่งวินาที ขึ้นอยู่กับแพลตฟอร์ม ภาษา และขนาดของโค้ด

Serverless ถูกกว่าเซิร์ฟเวอร์ปกติไหม

สำหรับแอปที่มีทราฟฟิกน้อยหรือไม่สม่ำเสมอ มักจะถูกกว่า เพราะตอนว่างแทบไม่เสียเงิน แต่สำหรับแอปที่มีทราฟฟิกหนาแน่นและต่อเนื่อง เซิร์ฟเวอร์ที่เปิดตลอดอาจถูกกว่า ขึ้นอยู่กับรูปแบบการใช้งานและราคาของผู้ให้บริการ

แพลตฟอร์ม serverless ตัวอย่างมีอะไรบ้าง

ตัวอย่างที่รู้จักกันดี ได้แก่ AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers และฟีเจอร์ function ของแพลตฟอร์มโฮสติ้งอย่าง Vercel และ Netlify

Mythex · Pricing · สร้างอะไรก็ได้ด้วย AI · เทมเพลตเว็บไซต์และแอป · เปรียบเทียบ Mythex · อภิธานศัพท์การสร้างแอปด้วย AI · เครื่องมือฟรีสำหรับสร้างแอปด้วย AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)