Cloudflare Containers
คืออะไร
ลองนึกถึงตู้คอนเทนเนอร์ขนส่งสินค้า แอปทั้งหมดของคุณและทุกอย่างที่มันต้องการถูกบรรจุลงในกล่องปิดผนึกใบเดียวที่รันได้เหมือนเดิมไม่ว่าจะอยู่ที่ไหน Cloudflare Containers ให้คุณรัน Linux (คอนเทนเนอร์ลินุกซ์) เต็มรูปแบบ — กล่องปิดผนึกใบนั้น — ได้โดยตรงภายในเครือข่ายของ Cloudflare เคียงข้างกับ Workers ของคุณ เมื่อ Worker ต้องการบางอย่างที่ทำเองไม่ได้ — รันไทม์ที่หนักกว่า ไฟล์โปรแกรมเฉพาะทาง หรือภาษา/ไลบรารีที่ไม่พอดีกับ sandbox ของ Workers — มันสามารถส่งงานนั้นให้คอนเทนเนอร์ที่เริ่มทำงานใกล้กับผู้ใช้ของคุณ คุณเป็นคนกำหนดคอนเทนเนอร์ ส่วน Worker เป็นคนควบคุมว่าจะเริ่ม หยุด และขยายสำเนาเมื่อไร
จุดแข็ง
- รัน container image จริง ทำให้คุณใช้เครื่องมือและรันไทม์ที่ใช้ไม่ได้ใน sandbox ของ Workers ได้
- อยู่ข้าง ๆ Workers บนเครือข่ายทั่วโลกของ Cloudflare ทำให้ระยะห่างระหว่างสองส่วนนี้สั้นมาก
- Worker เป็นผู้ควบคุมคอนเทนเนอร์ ทำให้คุณยังคงใช้ logic ด้าน routing, auth และ ที่มีอยู่แล้วได้
- เหมาะกับงาน batch job, การประมวลผลสื่อ, headless browser (เบราว์เซอร์ที่ทำงานโดยไม่มีหน้าจอ) และการย้ายโค้ดที่ใช้ Docker อยู่แล้วมาใช้
- ขยายตามความต้องการและหดกลับได้ ทำให้คุณไม่ต้องจ่ายค่าเซิร์ฟเวอร์ที่ว่างงานตลอดเวลา
ข้อแลกเปลี่ยน
- เริ่มทำงานหนักกว่าและช้ากว่า Worker ธรรมดา — cold start (ความล่าช้าตอนอุ่นเครื่อง เมื่อคำขอมาถึงแต่ยังไม่มีอะไรทำงานอยู่) เป็นเรื่องจริง จึงไม่เหมาะกับทุกคำขอ
- มีชิ้นส่วนที่ต้องดูแลมากขึ้น: ตอนนี้คุณต้องจัดการ image การ build และวงจรชีวิตของมัน ไม่ใช่แค่สคริปต์เดียว
- มีค่าใช้จ่ายสูงกว่า Worker ล้วน ๆ สำหรับงานง่าย ๆ แบบเดียวกัน ควรใช้เมื่อคุณต้องการคอนเทนเนอร์จริง ๆ เท่านั้น
- ยังใหม่กว่า Workers ดังนั้นควรคาดหวังว่าเครื่องมือและข้อจำกัดต่าง ๆ จะเปลี่ยนแปลงไปเรื่อย ๆ
ควรใช้เมื่อไร
ใช้คอนเทนเนอร์เมื่องานนั้นต้องการ OS (operating system หรือระบบปฏิบัติการ) เต็มรูปแบบ หรือรันไทม์ที่ edge ให้ไม่ได้จริง ๆ — เช่นการรัน tool ที่มีอยู่แล้ว (โปรแกรมที่คุณควบคุมด้วยการพิมพ์คำสั่ง) ภาษาที่ Workers ไม่รองรับ หรือขั้นตอนที่ใช้การประมวลผลหนัก — ในขณะที่ยังคงให้หน้าด่านแบบ edge-native ของคุณอยู่ใน Worker
เข้ากับ vibe coding แค่ไหน
นี่เป็นเป้าหมายที่เหมาะมากสำหรับความช่วยเหลือของ AI เพราะรูปแบบมันคุ้นเคยอยู่แล้ว: Dockerfile (สูตรสำหรับสร้างคอนเทนเนอร์) บวกกับ Worker เล็ก ๆ ที่เรียกใช้มัน บอก ว่าคุณกำลังใช้ Cloudflare Containers เพื่อให้มันเชื่อม binding ระหว่าง Worker กับคอนเทนเนอร์ได้อย่างถูกต้อง แทนที่จะสมมติว่าเป็น cloud (virtual machine หรือเครื่องคอมพิวเตอร์เช่าบนคลาวด์) ทั่วไป
// wrangler.jsonc — bind a container to a Worker
{
"name": "my-app",
"main": "src/index.ts",
"containers": [
{ "class_name": "MyContainer", "image": "./Dockerfile" }
]
}