6 คะแนน โดย GN⁺ 21 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • กรณีย้ายบล็อกส่วนตัวไปยัง bunny.net เพื่อลดการพึ่งพา Cloudflare แบบรวมศูนย์
  • bunny.net คือ บริการ CDN จากยุโรป ที่มีฐานอยู่ในสโลวีเนีย ให้ประสิทธิภาพและเครือข่าย PoP ที่มีประสิทธิผลทั่วโลก
  • ใช้ Porkbun สำหรับจดทะเบียนโดเมน และย้ายฟังก์ชัน “Orange Cloud” ของ Cloudflare ไปยังสภาพแวดล้อมของ bunny.net
  • ตั้งค่า CDN ได้ครบถ้วนผ่านขั้นตอนอย่าง Pull Zone, นโยบายแคช, ใบรับรอง SSL, Edge Rule เป็นต้น
  • เพียงฟังก์ชันพื้นฐานอย่าง การป้องกัน DDoS, Origin Shield, Stale Cache ก็ให้ความเสถียรเพียงพอ และอาจเป็น ทางเลือกแทน Cloudflare ที่ใช้งานได้จริง สำหรับผู้ใช้ทั่วไป

ย้ายจาก Cloudflare ไปยัง bunny.net

  • สรุปขั้นตอนและวิธีตั้งค่าสำหรับการย้ายบล็อกส่วนตัวไปยัง bunny.net เพื่อลดปัญหาการ พึ่งพา Cloudflare และความเป็นศูนย์กลาง
    • แม้ Cloudflare จะมีฟีเจอร์ทรงพลังให้ใช้ฟรี แต่ก็ทำให้เกิดการพึ่งพาบริษัทเดียวมากขึ้น และเมื่อเกิดปัญหาก็อาจส่งผลกระทบต่ออินเทอร์เน็ตในวงกว้าง
    • ความไม่สบายใจกับการกระจุกตัวของอินเทอร์เน็ตอยู่กับบริษัทอเมริกัน และประเด็นถกเถียงต่าง ๆ ทำให้เริ่มมองหาทางเลือกอื่น

ภาพรวมของ Bunny.net

  • bunny.net เป็น บริษัทจากยุโรป ที่ตั้งอยู่ในสโลวีเนีย และให้บริการ CDN ที่แข่งขันกับ Cloudflare ได้
    • มี ประสิทธิภาพและความเร็ว สูงทั่วโลก แม้ขนาดเครือข่าย PoP จะเล็กกว่า แต่มีประสิทธิภาพดี
    • ได้รับการประเมินในทางบวกว่าเป็นการสนับสนุนการเติบโตของระบบนิเวศเทคโนโลยียุโรป

ออกจาก Cloudflare

  • เดิมใช้ Cloudflare เป็นผู้รับจดทะเบียนโดเมนของบล็อก แต่หา ทางเลือกในยุโรป ที่เหมาะสมได้ยาก
    • ตัด INWX ออกเพราะไม่มี WHOIS privacy ฟรี และเลือก Porkbun แทน
    • Porkbun ใช้โครงสร้างพื้นฐานของ Cloudflare แต่มี คุณภาพการสนับสนุนที่ดีมาก
  • ย้ายฟังก์ชัน “Orange Cloud” ของ Cloudflare (การแคชอัตโนมัติ, การซ่อน origin, ฟังก์ชันป้องกัน) ไปยัง bunny.net

ขั้นตอนการตั้งค่า Bunny.net

  • สร้างบัญชี

    • เมื่อลงทะเบียนจะได้รับ เครดิต 20 ดอลลาร์เป็นเวลา 14 วัน และได้เพิ่มอีก 30 ดอลลาร์เมื่อผูกบัตรเครดิต
    • ตั้งค่าได้หลังยืนยันอีเมล และใช้ ระบบคิดค่าบริการตามการใช้งาน (ขั้นต่ำเดือนละ 1 ดอลลาร์)
    • เปลี่ยนไปสู่โครงสร้างที่ “ผู้ใช้เป็นลูกค้า ไม่ใช่ตัวสินค้า”
  • สร้าง Pull Zone

    • เป็นองค์ประกอบหลักสำหรับเปิดใช้งาน CDN โดยกำหนด Origin URL เพื่อเชื่อมต่อเซิร์ฟเวอร์
    • หากรันหลายแอปอยู่ ควรกำหนดโดเมนใน Host header
    • เลือก Standard tier แล้วตั้งค่า Zone ที่มีราคาต่างกันตามภูมิภาคได้
    • ผู้ใช้จากภูมิภาคที่ปิดใช้งานจะถูกเปลี่ยนเส้นทางไปยัง Zone ที่เปิดใช้งานซึ่งอยู่ใกล้ที่สุด
  • เชื่อมต่อ Pull Zone

    • กรอกโดเมนเว็บไซต์ใน “Add a custom hostname”
    • เพิ่ม CNAME record ตามคำแนะนำเพื่อเชื่อมเส้นทาง CDN (website.b-cdn.net)
    • หลัง DNS กระจายแล้ว ให้คลิก “Verify & Activate SSL” เพื่อออกใบรับรอง SSL ให้เสร็จ
    • เมื่อสำเร็จ เว็บไซต์จะให้บริการผ่าน bunny.net CDN

การตั้งค่าแคช

  • หากเว็บไซต์ส่ง Cache-Control header มาอย่างเหมาะสม bunny.net จะเคารพค่านั้น
    • ตรวจสอบการตั้งค่า “Respect origin Cache-Control” ที่ “Caching → General”
    • หากตั้ง no-cache จะไม่ทำการแคช
  • หากไม่มี cache header จะใช้ฟังก์ชัน Smart Cache เพื่อแคชเฉพาะรูปภาพ, CSS, JS เป็นต้นโดยอัตโนมัติ
  • ในบล็อกที่สร้างด้วย Elixir Phoenix ได้เพิ่ม custom cache header middleware ให้กับ pipeline public
    • ตั้งค่า cache-control: public, s-maxage=86400, max-age=0 เพื่อให้แคชหน้า HTML ได้ด้วย
    • เมื่อลงบทความใหม่ ต้อง ล้างแคชของ Pull Zone ด้วยตนเอง เพื่อให้ HTML ล่าสุดถูกนำมาใช้
  • ผลการวัดด้วยเครื่องมือ Larm ยืนยันว่า ความเร็วในการตอบสนองดีขึ้น ในหลายตำแหน่งทั่วโลก

การตั้งค่าพื้นฐานที่แนะนำ

  • เปิด “Force SSL” เพื่อบังคับทุกคำขอให้ใช้ HTTPS
  • มี การป้องกัน DDoS มาให้พื้นฐาน และหากเปิด Origin Shield เพิ่มก็จะช่วยลดภาระของเซิร์ฟเวอร์
    • เลือกตำแหน่งใกล้ origin เพื่อรวมศูนย์แคช แล้ว edge server จะตรวจสอบ Origin Shield ก่อน
  • ตัวเลือก “Stale Cache: While Origin Offline / While Updating” ช่วยให้
    • ยัง ให้บริการคอนเทนต์ที่แคชไว้ต่อไป ได้แม้ origin ล่ม
    • ระหว่างอัปเดตก็สามารถแสดงแคชเดิมชั่วคราวได้
  • เพิ่ม Edge Rule เพื่อรีไดเร็กต์โดเมน pull zone ที่ถูกสร้างอัตโนมัติไปยังโดเมนจริง
    • ชื่อกฎ: “Default domain redirect”
    • การทำงาน: Redirect, status code 301
    • เงื่อนไข: เมื่อมีคำขอ *://<slug>.b-cdn.net/* ให้ย้ายไปที่ https://jola.dev{{path}}

สรุปและการประเมิน

  • การตั้งค่านี้ครอบคลุมเพียง ฟังก์ชันพื้นฐาน ของ bunny.net เท่านั้น Edge Rules, การตั้งค่าแคชขั้นสูง, Security Shield, video streaming, Edge Scripting, Edge Containers ยังไม่ได้กล่าวถึง
  • สถิติ, log, metric บนแดชบอร์ดมีรายละเอียดมาก และสามารถติดตามได้ในระดับคำขอว่าแคชหรือไม่และมีปัญหาอะไร
  • กำลังย้ายบริการทั้งหมดไปยัง bunny.net ต่อไปในอนาคต และคาดหวังการเปิดตัว storage ที่เข้ากันได้กับ S3
  • สำหรับผู้ใช้ทั่วไป ก็เป็น ตัวเลือกที่แข่งขันได้เพียงพอในฐานะทางเลือกแทน Cloudflare

1 ความคิดเห็น

 
GN⁺ 21 일 전
ความคิดเห็นจาก Hacker News
  • ถ้าเป็นบทความบล็อกในเชิงบวก ก็น่าจะดีหากระบุให้ชัดเจนเพื่อ การเปิดเผยอย่างโปร่งใส ว่าลิงก์ทั้งหมดในหน้านั้นเชื่อมไปยัง Bunny Affiliate Program

    • ฉันเพิ่งรู้ตัวว่าใส่ลิงก์ไว้เยอะเกินไปเลยลบบางส่วนออก ฉันแค่คิดว่าน่าสนใจที่ Bunny มี โปรแกรมพันธมิตร เท่านั้น ไม่ได้ตั้งใจปกปิด
    • ฉันไม่ใช่ผู้เชี่ยวชาญด้านกฎหมาย แต่การไม่เปิดเผยการแนะนำที่มีผลตอบแทนอาจเข้าข่ายผิด แนวทางของ FTC ดูเหมือนว่าในสหราชอาณาจักรก็มีกฎคล้ายกันเช่นกัน
  • ฉันใช้ bunny.net สำหรับ CDN และ DNS
    ฉันกังวลว่าบริการฟรีอาจกลายเป็นเสียเงินในสักวัน เลยคิดว่าจ่ายเงินเล็กน้อยตั้งแต่แรกดีกว่า ขึ้นจาก $2 เป็น $3 ยังโอเค แต่จากฟรีกลายเป็น $20 นั้นเสี่ยง
    อีกอย่างฉันชอบ บริษัทเล็กและเป็นอิสระ ที่ใส่ใจนักพัฒนา เลยใช้ bunny.net, transistor.fm และ Plausible Analytics

    • ถ้าเป็นแบบนั้นก็ย้ายไปผู้ให้บริการอื่นได้เลย CDN กับ DNS แทบไม่มี vendor lock-in แค่ export การตั้งค่าแล้ว import ไปที่อื่น
    • ถ้ามองตามเหตุผล Cloudflare น่าจะปรับลดปริมาณฟรีลงเพียงเล็กน้อยมากกว่า เพราะในทางปฏิบัติทุกเจ้าพยายามหลีกเลี่ยงนโยบายราคาที่ทำลายกันเอง การใช้บริษัทเล็กก็ยังเป็นทางเลือกที่ดี
    • บริการฟรีสุดท้ายแล้วมักเป็นการช่วยผู้ให้บริการ ทำให้ผู้ใช้กลายเป็น ‘สินค้า’ ได้ง่าย พอจ่ายเงินแล้วการแลกเปลี่ยนคุณค่าจะชัดเจนขึ้น
    • แต่บริการเสียเงินก็อาจขึ้นราคากะทันหันหรือเปลี่ยนเงื่อนไขได้เหมือนกัน
    • ฉันก็ใช้ bunny.net ด้วยเหตุผลเดียวกัน และเพื่อช่วยรักษา ความหลากหลายของระบบนิเวศอินเทอร์เน็ต ด้วย
  • ฉันรัน SaaS อยู่บน Cloudflare Workers + Pages การ deploy ฟังก์ชันเซิร์ฟเวอร์เลสและเว็บแบบสแตติกจากรีโพเดียวกันได้ทำให้ ประสบการณ์นักพัฒนา ดีมาก
    แต่ช่วงหลังเจอปัญหา CDN edge cache เสิร์ฟ HTML เก่าหลัง deploy แล้ว การดีบักยากมากและต้องเดาเองว่าปัญหาอยู่ที่ cache ชั้นไหน
    ถึงอย่างนั้น ถ้าจะเริ่มจาก free tier มันยอดเยี่ยมมาก คุณสามารถรันแอป production ที่แทบไม่เสียเงินได้ด้วย Workers, Pages, KV และ R2

    • จุดแข็งที่สุดของ Cloudflare คือ wrangler CLI พอใช้กับ Claude Code ก็ทำให้การตั้งค่าและดีบักเป็นอัตโนมัติได้ทั้งหมด
    • Bunny ก็มีความสามารถคล้ายกัน มีทั้ง API ที่เข้ากันได้กับ SQLite และ edge functions ด้วย ฉันเคยทำเครื่องมือฟรีชื่อ dnsisbeautiful.com/global-http-availability เพราะปัญหาการดีบักตามภูมิภาค
    • ฉันก็เจอปัญหา cache แบบเดียวกัน และก็มีคนแชร์สคริปต์ไว้เพื่อแก้เรื่องนี้
    • Bunny ไม่มี free tier แต่เป็น ระบบชำระเงินล่วงหน้า เลยไม่มีความเสี่ยงโดนเรียกเก็บเงินแบบไม่คาดคิด ฉันชอบตรงที่จะไม่มีวันโดนบิลหลายแสนดอลลาร์เพราะทราฟฟิกพุ่ง
    • เราตั้งค่าให้ CI ล้าง cache อัตโนมัติหลัง deploy แต่ก็ยังมีโอกาสที่ stale content จะถูก cache ซ้ำอีกเพราะการกระจาย cache ที่ล่าช้า
  • ตอนนี้ Cloudflare ไม่ได้เป็นแค่ CDN ธรรมดา แต่เป็น edge platform ถ้าย้ายไป Bunny ได้ง่าย ก็แปลว่าคุณไม่ได้ใช้ความสามารถหลักจริง ๆ ของ Cloudflare
    น่าเสียดายที่มันยังไม่รองรับมาตรฐานอย่าง WinterTC ได้ดีนัก การใช้ฟังก์ชัน serve เฉพาะทางแบบ BunnySDK ยิ่งเป็น การผูกติดแบบปิดกั้น หนักกว่าเดิมอีก

    • เพื่ออ้างอิงไว้ก่อน edge platform ของ Cloudflare เองก็ ปิด พอสมควร
    • WinterTC ไม่ได้ระบุวิธีการเริ่มต้น HTTP server มันอย่างน้อยแค่กำหนดให้มีอินเทอร์เฟซ Request/Response ของ Fetch API
  • เราใช้ Bunny อยู่หลายแบบและพอใจมาก โดยเฉพาะ คุณภาพของทีมซัพพอร์ต ที่ยอดเยี่ยม Cloudflare ก็ดี แต่ถ้าไม่ได้ซื้อซัพพอร์ตระดับองค์กรแบบเสียเงินก็มีข้อจำกัด UpCloud ก็ซัพพอร์ตดีมากเช่นกัน

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

    • แต่การใช้ผู้ให้บริการเจ้าเดียวก็ยังเป็น จุดล้มเหลวเดียว อยู่ดี ถ้าอยากได้ความทนทานจริง ๆ ก็ต้องใช้หลายผู้ให้บริการควบคู่กัน หมายถึงต้องรัน origin server เองและใช้ CDN ให้น้อยที่สุด
  • ฉันย้ายมา Bunny ตั้งแต่ปีก่อนและพอใจมาก ฉันชอบที่มันรองรับ CDN ที่ตั้งอยู่ใน EU และด้วย Magic Containers ก็สามารถรัน API ที่ขยายได้ทั่วโลกในราคาระดับ $1 ต่อเดือนได้

    • Magic Containers เหมาะมากกับ โปรเจกต์ขนาดเล็ก ให้ความสามารถคล้าย Cloudflare Durable Objects แต่ถูกกว่ามาก
  • บทความนี้อาจดูเหมือนโฆษณา แต่จริง ๆ แล้วเป็นแค่การแชร์ประสบการณ์เฉย ๆ มีการระบุ affiliate link ไว้แล้ว และไม่ได้มีเจตนาปกปิด

    • คำวิจารณ์ที่ว่า “ย้ายจากจุดล้มเหลวเดียวไปสู่อีกจุดล้มเหลวเดียว” เป็นการเข้าใจผิด ผู้เขียนกังวลเรื่อง การรวมศูนย์ของอินเทอร์เน็ตทั้งระบบ ไม่ใช่แค่เว็บไซต์ของตัวเอง Bunny เป็นทางเลือกแทนโครงสร้างที่ยึดสหรัฐเป็นศูนย์กลาง
    • บางคนรายงานเธรดนี้ว่าเป็นสแปม
  • มีข้อควรระวังอย่างหนึ่งคือ องค์กรบางแห่ง เช่น สถาบันการศึกษา มัก บล็อก โดเมน *.b-cdn.net

    • เราเองก็เคยใช้ Cloudflare R2 เป็น CDN แล้วเจอปัญหาว่า asset ถูกบล็อกในหน่วยงานรัฐบาลบางแห่งในยุโรป พอย้ายไป Bunny ก็หายหมด
  • ข้อเสียที่น่าเสียดายคือ ไม่มีโฮสติ้งฟรี ต่อให้ทราฟฟิกน้อยก็ยังต้องจ่ายอย่างน้อย 1 ยูโรต่อเดือน (ไม่รวม VAT)
    อีกทั้งผู้ให้บริการ DNS ที่รองรับ CNAME flattening ก็มีไม่มาก และการทำ cache invalidation ก็ต้องทำสองรอบกว่าจะมีผลจริง

    • มีคนเอาราคาไปล้อ แต่ประเด็นสำคัญไม่ใช่จำนวนเงิน แต่เป็น กำแพงในการเริ่มต้นใช้งาน ปัญหาคือคุณต้องกรอกบัตรเครดิต
    • ก็มีคนประชดว่า “1 ยูโรนี่แพงเกินไปสินะ”
    • จริง ๆ แล้วการไม่มี free tier นี่ ไม่ใช่บั๊ก แต่เป็นฟีเจอร์ เป็นการเลือกเพื่อให้โครงสร้างต้นทุนคาดเดาได้
    • ถ้าเทียบกับบริการฟรีแต่ล่มบ่อยอย่าง GitHub Pages เงิน 1 ยูโรก็นับว่าจ่ายได้สบาย
    • สุดท้ายแล้วก็แค่ 1.20 ยูโรต่อเดือนเท่านั้น