- เว็บเริ่มต้นจากคอมพิวเตอร์เพียงเครื่องเดียว
- ผ่านมา 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 ความคิดเห็น
ในบล็อกของ Fastly เขาคาดการณ์กันว่าโครงสร้างพื้นฐานการประมวลผลของดาต้าเซ็นเตอร์แบบเดิมราว 70% จะย้ายไปอยู่ที่เอดจ์เลยล่ะ 555
https://www.youtube.com/watch?v=yOP5-3_WFus
Deno Deploy Beta 1
Deno Deploy Beta 2
Fresh - เว็บเฟรมเวิร์กรุ่นถัดไป