27 คะแนน โดย xguru 2022-10-11 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • เว็บเริ่มต้นจากคอมพิวเตอร์เพียงเครื่องเดียว
  • ผ่านมา 32 ปีแล้ว แต่เราก็ยังพัฒนาเหมือนกับว่ามันเป็นคอมพิวเตอร์เพียงเครื่องเดียวอยู่
  • ในช่วงหลายปีที่ผ่านมา เว็บไซต์แบบสแตติกถูกเสิร์ฟผ่าน CDN จากจุดที่ใกล้ผู้ใช้มากขึ้น
  • ตอนนี้สิ่งเดียวกันกำลังเกิดขึ้นกับเว็บแอปแบบไดนามิก และตอนนี้สามารถดีพลอยได้ทุกที่

Edge คืออะไร

  • เมื่อผู้คนพูดถึง "The Edge" หมายถึงการที่เว็บไซต์หรือแอปของคุณถูกดีพลอยไปยังเซิร์ฟเวอร์หลายเครื่องที่อยู่ใกล้ผู้ใช้แต่ละคนทั่วโลก
  • เมื่อมีคนร้องขอเว็บไซต์/แอปของคุณ ระบบจะพาไปยังเซิร์ฟเวอร์ที่ใกล้ที่สุด
  • เซิร์ฟเวอร์แบบกระจายเหล่านี้สามารถรันโค้ดแบบกำหนดเองเพื่อรองรับเว็บแอปแบบไดนามิกได้ ไม่ใช่แค่แอสเซ็ตของเว็บไซต์สแตติกเท่านั้น
  • การย้ายไปยังเซิร์ฟเวอร์ใกล้ตัวแบบนี้ก็เป็นความพยายามเพื่อปรับปรุง latency เช่นกัน
  • ยิ่งหน้าเว็บโหลดนานเท่าไร โอกาสที่ผู้ใช้จะออกไปก็ยิ่งสูงขึ้น
  • หากดีพลอยบนแพลตฟอร์มอย่าง Heroku ก็จะไปอยู่ใน AWS data center ที่อเมริกาเหนือ ทำให้ TTFB (Time to First Byte) ช้าลงสำหรับยุโรปหรือเมืองอื่น ๆ
  • แต่ถ้าทดสอบ Deno.com ที่ติดตั้งอยู่บน Edge Network ของเราอย่าง Deno Deploy จะเห็นว่า TTFB เร็วกว่ามาก
  • แนวคิดเรื่อง Server ถูกนำเสนอครั้งแรกใน RFC ปี 1969
  • เครื่อง NeXT ที่อยู่ในสำนักงานของ Tim Berners-Lee คือเว็บเซิร์ฟเวอร์เครื่องแรก แต่ตอนนั้นอินเทอร์เน็ตก็เปิดใช้งานมาแล้วกว่าสองทศวรรษ

แคชเนื้อหาไว้ใกล้ผู้ใช้

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

เซิร์ฟเวอร์ให้น้อยลง, serverless ให้มากขึ้น

  • เซิร์ฟเวอร์มีปัญหาอีกด้านหนึ่งที่ตรงข้ามกับ "โอเวอร์โหลด" นั่นคือการใช้งานไม่คุ้มค่า
  • เซิร์ฟเวอร์ปิดเครื่องไม่ได้ ต้องเปิดตลอด 100% ของเวลา และต้องจ่ายค่าใช้จ่ายทั้งหมด
  • serverless ช่วยบรรเทาปัญหานี้ โดยจะเริ่มทำงานเมื่อจำเป็นและปิดลงอีกครั้ง
  • แต่ "serverless" เป็นชื่อที่ทำให้เข้าใจผิด เพราะไม่ได้แปลว่าไม่มีเซิร์ฟเวอร์ และเซิร์ฟเวอร์ก็ยังเกี่ยวข้องอยู่
  • เพียงแต่ไม่มี dedicated server ที่รันอยู่ตลอดเวลา
  • เฟรมเวิร์ก serverless ตัวแรกที่ถูกใช้อย่างแพร่หลายคือ AWS Lambda
  • ข้อดีของ serverless มีสองอย่าง
    • จ่ายเฉพาะสิ่งที่ใช้งาน
    • ไม่ต้องคอยกังวลเรื่องการจัดการเซิร์ฟเวอร์ ไม่ต้องวางแผน ไม่ต้องดูแล ไม่ต้องบำรุงรักษา
  • ข้อเสียส่วนใหญ่คือเรื่องประสิทธิภาพ
    • ปัญหา "Cold Start"
    • และเซิร์ฟเวอร์ก็ยังรวมศูนย์อยู่ จึงยังมี round-trip ที่ยาว
  • และนั่นก็นำเรามาถึงปัจจุบัน

Livin's on the edge

  • ความสวยงามของ Edge คือการนำข้อดีของ CDN (ใกล้ผู้ใช้) และข้อดีของ Serverless (รันฟังก์ชันได้) มารวมกัน
  • กล่าวคือ บน Edge คุณสามารถรันโค้ดแบบกำหนดเองได้จากจุดที่อยู่ใกล้ผู้ใช้ และสิ่งนี้มีข้อดีมากมาย

ประสิทธิภาพที่ดีกว่า

  • นี่คือสิ่งเดียวที่ผู้ใช้สนใจจริง ๆ
  • หากเว็บไซต์หรือแอปทำงานบน Edge server ที่อยู่ใกล้ผู้ใช้ ก็จะเร็วกว่าการทำงานบนเซิร์ฟเวอร์ศูนย์กลาง
  • แต่ข้อได้เปรียบด้านประสิทธิภาพไม่ได้หยุดอยู่แค่นั้น
  • Compute ถูกรันบน Edge แทนที่จะเป็นในเบราว์เซอร์ของผู้ใช้
    • แอปต้องใช้ทรัพยากรบนเครื่องผู้ใช้น้อยลง
    • ส่ง payload ไปให้ผู้ใช้น้อยลง จึงใช้แบนด์วิดท์น้อยลง
    • ฟังก์ชันทำงานในสภาพแวดล้อมที่ควบคุมได้ ทำให้ฟังก์ชันและ API ทำงานได้อย่างสม่ำเสมอ

ความปลอดภัยที่ดีกว่า

  • การย้าย computation จากไคลเอนต์/อุปกรณ์ไปยัง serverless Edge จะช่วยลดพื้นที่ผิวการโจมตีของแอป
  • การโจมตีแบบ DDoS ทำได้ยากขึ้น

ประสบการณ์นักพัฒนาที่ดีกว่า

  • ตอนนี้การเขียนโค้ดสำหรับ Edge ยังยุ่งยากเกินความจำเป็น
  • ปัญหาส่วนใหญ่เกิดจากธรรมชาติแบบไฮบริดของการพัฒนา Edge
  • เพราะเฟรมเวิร์กหลายตัวไม่ได้ถูกพัฒนาแบบ Edge-First นักพัฒนาจึงต้องเลือกว่าฟังก์ชันหรือหน้าแต่ละส่วนจะรันบน Edge หรือในเบราว์เซอร์
  • แต่เฟรมเวิร์กใหม่อย่าง Fresh ช่วยทำให้เรื่องนี้ง่ายขึ้นด้วยสถาปัตยกรรม SSR และ Islands
  • หากใช้ Fresh ร่วมกับ Deno Deploy ก็สามารถทำ Lighthouse Score ได้เต็มด้วยการปรับ latency ให้เหมาะสม
  • Edge คือ iteration ถัดไปของอินเทอร์เน็ต
    ขั้นตอนถัดไปในการทำให้เว็บเร็วขึ้น และเป็นที่ที่ปลอดภัยกว่าสำหรับผู้ใช้และนักพัฒนา

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

 
cometkim 2022-10-17

ในบล็อกของ Fastly เขาคาดการณ์กันว่าโครงสร้างพื้นฐานการประมวลผลของดาต้าเซ็นเตอร์แบบเดิมราว 70% จะย้ายไปอยู่ที่เอดจ์เลยล่ะ 555