ใครที่เคยทำเว็บแล้วต้องจัดการกับ Static Files (เช่น รูปภาพ, CSS, JS) จำนวนมาก คงจะคุ้นเคยกับการใช้บริการ Object Storage อย่าง Amazon S3, Google Cloud Storage, หรือ Azure Blob Storage กันเป็นอย่างดีใช่ไหมครับ?
และหนึ่งใน Pain Point ที่ปวดหัวและคาดเดาได้ยากที่สุดก็คงหนีไม่พ้น Egress Fee หรือ ค่าส่งข้อมูลออก ที่บางทีก็แพงจนน่าตกใจ
วันนี้ผมมีทางเลือกใหม่ที่น่าสนใจมาก ๆ และอาจจะกลายมาเป็นตัวเลือกหลักของหลาย ๆ คนในอนาคต (หรือหลายคนในนี้ก็อาจจะใช้อยู่แล้ว) นั่นก็คือ Cloudflare R2 Storage
รู้จัก Cloudflare R2
พูดง่าย ๆ เลย R2 คือเซอร์วิส Object Storage ที่ Cloudflare สร้างขึ้นมาเพื่อเป็นคู่แข่งโดยตรง ของ Amazon S3 ครับ ถูกออกแบบมาเพื่อเก็บข้อมูลที่ไม่มีโครงสร้าง (Unstructured Data) ซึ่งก็คือไฟล์ต่าง ๆ ที่เราใช้ในเว็บแอปพลิเคชันนั่นเอง ไม่ว่าจะเป็น รูปภาพ, วิดีโอ, ไฟล์ CSS, JavaScript, ไฟล์เอกสาร PDF หรือไฟล์ Assets อื่น ๆ พวกนี้คือ Static
Cloudflare บอกว่าพวกเขาตั้งใจสร้าง R2 ขึ้นมาเพื่อนักพัฒนาโดยเฉพาะ (Built for developers) โดยมีเป้าหมายเพื่อลดความซับซ้อนและที่สำคัญคือขจัดค่าใช้จ่ายแฝงที่คาดเดายากออกไปให้หมด
ทำไม R2 ถึงเป็น Game Changer
จุดขายสำคัญที่สุดที่ทำให้ dev ทั่วโลกหันมามอง R2 ก็คือ... "Zero Egress Fees (ค่าส่งข้อมูลออก = $0)" ฟังไม่ผิดครับ 0
เอ้า! แล้วเจ้าอื่นไม่ฟรีเหรอ?
ตรงนี้คือจุดที่หลายคนอาจจะสับสนครับ โดยทั่วไปแล้ว Cloud Provider ยักษ์ใหญ่เกือบทุกเจ้า รวมถึง Amazon S3 จะใช้โมเดลที่เรียกว่า "Ingress ฟรี แต่ Egress คิดเงิน" ครับ
Ingress (ข้อมูลขาเข้า)
คือการที่เราอัปโหลดไฟล์ขึ้นไปเก็บไว้บน Storage ของ provider อันนี้ ส่วนใหญ่จะฟรี ครับ เขาอยากให้เราเอาข้อมูลไปเก็บไว้กับเขาเยอะ ๆ นั่นแหละ
ในส่วน Egress (ข้อมูลขาออก)
คือการที่มีคนมา "ดาวน์โหลด" หรือดึงข้อมูลออกจาก Storage ของเรา เช่น ทุกครั้งที่ User เปิดหน้าเว็บแล้วเบราว์เซอร์ต้องดาวน์โหลดรูปภาพ, CSS, JS จาก S3 ตรงนี้แหละครับคือส่วนที่เขาคิดเงิน และมักจะเป็นค่าใช้จ่ายที่แพงและคาดเดาได้ยากที่สุดด้วย
ปกติเวลา User เปิดหน้าเว็บของเราและเบราว์เซอร์ต้องดาวน์โหลดรูปภาพหรือไฟล์ต่าง ๆ จาก S3 เราจะโดนคิดเงินค่าส่งข้อมูลออก (Data Transfer Out) ซึ่งเป็นค่าใช้จ่ายที่แพงและคุมยากที่สุด แต่ R2 ทำลายกำแพงนี้ทิ้งไปเลยครับ ไม่ว่า User จะโหลดไฟล์ของเรากี่ครั้งก็ตาม เราจะไม่เสียเงินในส่วนนี้แม้แต่บาทเดียว
Pricing Model ของ R2 จึงเรียบง่ายมาก
1. Storage - จ่ายแค่ค่าเก็บข้อมูลตามปริมาณที่เราใช้ (GB ต่อเดือน)
2. Operations - จ่ายแค่ค่าดำเนินการตามจำนวนครั้งที่เรียกใช้งาน ซึ่งแบ่งเป็น Class A (สำหรับเขียน/แก้ไขไฟล์) และ Class B (สำหรับอ่านไฟล์)
นอกจากเรื่องค่า Egress Fee แล้ว R2 ยังมีจุดเด่นอื่น ๆ ที่ทำให้ชีวิตชาว dev ง่ายขึ้นเยอะ เช่น
S3-Compatible API
R2 ถูกออกแบบให้มี API ที่เข้ากันได้กับ S3 แบบเป๊ะ ๆ หมายความว่าเครื่องมือ, SDK, หรือ Library (เช่น Boto3 ของ Python) ที่เราเคยใช้กับ S3 สามารถนำมาใช้กับ R2 ได้แทบจะทันทีโดย แก้ไขโค้ดเพียงเล็กน้อยเท่านั้น (ส่วนใหญ่คือแค่เปลี่ยน Endpoint URL และ Credentials)
ทำงานร่วมกับ Ecosystem ของ Cloudflare ได้อย่างสมบูรณ์
สามารถใช้ CDN ของ Cloudflare เพื่อแคชไฟล์ที่อยู่บน R2 ได้ทั่วโลก ทำให้การโหลดไฟล์เร็วขึ้นมากสำหรับ User ทุกที่
Cloudflare Workers
สามารถเขียนโค้ด Serverless เพื่อจัดการหรือเปลี่ยนแปลงไฟล์ใน R2 ได้โดยตรงที่ Edge ก่อนส่งถึง User เช่น การปรับขนาดรูปภาพ การใส่ลายน้ำ หรือการจัดการสิทธิ์การเข้าถึงแบบ dynamic
มี Free Tier ที่โคตรรรใจกว้าง
นี่เป็นอีกหนึ่งจุดแข็งเลยครับ R2 มี Free Tier ให้ใช้งานฟรีในปริมาณที่ค่อนข้างเยอะ (เว็บ devhub.in.th ก็ยังใช้ตัวนี้ฟรีอยู่เช่นกันครับ) เหมาะมากสำหรับโปรเจคท์เล็ก ๆ เว็บส่วนตัว หรือใช้ในการทดลองก่อนจะใช้งานจริง
เทียบ Free Tier R2 vs S3 ให้เห็นภาพชัด ๆ
Cloudflare R2 vs Amazon S3
- Storage (พื้นที่เก็บข้อมูล) 10 GB เดือน --> ส่วน S3 ได้ 5 GB / เดือน
- Class A Operations (เขียน) 1 ล้านครั้ง / เดือน --> ส่วน S3 ได้ 2,000 ครั้ง / เดือน
- Class B Operations (อ่าน) 10 ล้านครั้ง / เดือน --> ส่วน S3 ได้ 20,000 ครั้ง / เดือน
- Data Transfer (Egress) ไม่จำกัด (FREE) --> ส่วน S3 ได้ 100 GB / เดือน
Cloudflare R2 vs AWS S3
ฟีเจอร์ | R2 | S3 |
Storage (พื้นที่เก็บข้อมูล) | 10 GB เดือน | 5 GB / เดือน |
Class A Operations (เขียน) | 1 ล้านครั้ง / เดือน | 2,000 ครั้ง / เดือน |
Class B Operations (อ่าน) | 10 ล้านครั้ง / เดือน | 20,000 ครั้ง / เดือน |
Data Transfer (Egress) | ไม่จำกัด (FREE) | 20,000 ครั้ง / เดือน |
จะเห็นว่า Free Tier ของ R2 นั้นให้เยอะกว่า S3 ในทุก ๆ ด้าน โดยเฉพาะค่า Data Transfer ที่ให้แบบไม่จำกัดเลยครับ
ใครที่กำลังปวดหัวกับค่าใช้จ่ายแฝงของ S3 หรือกำลังมองหา Object Storage ที่มี Performance ดี ราคาโคตรคุ้ม (ถ้าเว็บไม่ใหญ่ ตัวฟรีนี่แทบจะเหลือ ๆ เลย)