19 คะแนน โดย xguru 2022-05-10 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Docker ทำให้ลินุกซ์คอนเทนเนอร์เป็นที่แพร่หลาย: ช่วยให้การดีพลอยซอฟต์แวร์ง่ายขึ้นด้วยการทำ virtualization ระดับ OS
  • Cloudflare Workers และ Deno Deploy คือการทำแนวคิด JS Container ให้เป็นจริง (ในสภาพแวดล้อมที่แตกต่างกัน)
  • JS Container จะพัฒนาไปอย่างไรในอีกไม่กี่ปีข้างหน้า?

Universal Scripting Language

  • มีสิ่งต่าง ๆ มากขึ้นเรื่อย ๆ ที่เชื่อมโยงกันบนพื้นฐานของเว็บ: The web is eating the world
  • เว็บคือสื่อพื้นฐานของข้อมูลมนุษยชาติ และ JS เชื่อมโยงอย่างลึกซึ้งกับโครงสร้างพื้นฐานของเว็บ จึงแตกต่างจากภาษาอื่น
  • ภาษาสคริปต์ช่วยแก้ปัญหาฝั่งเซิร์ฟเวอร์ได้มากมาย และทำให้เขียน business logic ได้เร็วกว่าและถูกกว่า
  • ภาษาสคริปต์มีประโยชน์และหลายภาษาก็คล้ายกันมาก โดย JavaScript ถูกใช้อย่างกว้างขวางที่สุดและน่าจะยังใช้ได้ต่อไปในอนาคต
  • กล่าวได้ว่า JavaScript คือภาษาสคริปต์แบบสากล

Shell : Executables :: JavaScript : WebAssembly

  • JavaScript Sandbox ซึ่งเป็นคอนเทนเนอร์ระดับสูงรูปแบบใหม่สำหรับเซิร์ฟเวอร์กำลังเกิดขึ้น

  • มันไม่ได้ถูกสร้างมาเพื่อแก้ปัญหาแบบเดียวกับที่ลินุกซ์คอนเทนเนอร์มุ่งเป้าไว้

  • มันเกิดขึ้นจากผลของการทำให้เรียบง่าย
    → ลด Boilerplate ของ business logic สำหรับเว็บเซอร์วิสให้เหลือน้อยที่สุด
    → ใช้แนวคิดร่วมกับเบราว์เซอร์ และลดจำนวนแนวคิดที่โปรแกรมเมอร์ต้องรู้ให้เหลือน้อยที่สุด

  • วิศวกรเว็บทุกคนรู้จัก JavaScript Browser API อยู่แล้ว
    → abstraction ของ JS Container ถูกสร้างบนพื้นฐานของ Browser API เดียวกัน จึงมีเรื่องที่ต้องรู้น้อยลง
    → ความเป็นสากลของ JS ช่วยลดความซับซ้อน

  • Shell คือภาษาสคริปต์แบบ interpreter สำหรับรันโปรแกรม Unix
    → แม้จะมีเงื่อนไข ลูป และตัวแปร แต่ก็มีข้อจำกัด จึงเขียนโปรแกรมได้ยาก และความสามารถจริงมาจากไฟล์ executable ที่ถูกเรียกใช้

  • ใน abstraction layer ฝั่งเซิร์ฟเวอร์แบบใหม่นี้ JS เข้ามาแทนบทบาทของ Shell
    → มันเหมาะกับการเขียนสคริปต์มากกว่า Bash/Zsh แต่เช่นเดียวกับที่ Shell เรียก executable, JS Sandbox ก็เรียก WASM
    → หากต้องการงานซับซ้อนอย่างการปรับขนาดภาพ การใช้ WASM จะดีกว่าเขียนใน JS
    → เหมือนกับที่เราไม่ทำ image resizing ใน bash แต่เรียกใช้ Imagemagick แทน

The North Star

  • อนาคตของสคริปต์คือ JavaScript ในเบราว์เซอร์
  • ความผิดพลาดพื้นฐานที่สุดของ Node.js คือในช่วงที่ API ใหม่ ๆ กำลังถูกทำให้เป็นมาตรฐาน มันกลับสร้างสิ่งต่าง ๆ มากเกินไปที่ออกนอกแนวทางของเบราว์เซอร์
    → ในปี 2010 เรายังไม่มี ES modules แต่เมื่อมันถูกทำให้เป็นมาตรฐานแล้ว ก็ต้องนำกลับเข้ามาใน Node
    → Promise, Async/Await, Fetch, Streams และอีกหลายอย่างก็เป็นแบบนั้น
    → สิ่งที่ไม่ใช่มาตรฐานอย่าง CommonJS require, package.json, node_modules, npm, global process object ในท้ายที่สุดก็จะถูกทำให้เป็นมาตรฐานแล้วเพิ่มเข้าไปในเบราว์เซอร์ หรือถูกแทนที่ด้วยสิ่งอื่นที่อิงเว็บ
  • คอนเทนเนอร์ระดับสูงยังไม่ได้ถูกทำให้เป็นมาตรฐาน และยังไม่ชัดเจนว่าสิ่งทั้งหมดนี้จะพัฒนาไปอย่างไร
  • ตอนนี้ Cloudflare Workers และ Deno Deploy ใช้ FetchEvent API แต่ก็อาจมีการค้นพบ interface ที่ดีกว่าได้

บทสรุป

  • JavaScript คือภาษาสคริปต์อเนกประสงค์
  • ด้วยความเป็นสากลของ JavaScript จึงกำลังเกิด abstraction แบบใหม่ที่คล้ายคอนเทนเนอร์ ซึ่งช่วยทำให้ฝั่งเซิร์ฟเวอร์เรียบง่ายขึ้น
  • นี่ไม่ได้หมายความว่าลินุกซ์คอนเทนเนอร์จะหายไป abstraction ระดับนั้นยังคงมีประโยชน์ต่อไป
    → แต่สำหรับ "business logic" จำนวนมากที่ผู้คนเขียน มันอาจเป็น abstraction ที่ค่อนข้าง low-level
    → เมื่อต้องสร้างเว็บไซต์ สิ่งอย่างการตั้งค่า systemd คือ boilerplate
  • "เว็บเซอร์วิส" จำนวนมากอาจถูกทำให้ง่ายขึ้นได้ หากมองจากมุมของ JavaScript Container แทนที่จะเป็นลินุกซ์คอนเทนเนอร์
  • เรากำลังสำรวจแนวคิดนี้อยู่ที่ Deno
    → โดยพยายามทำให้ abstraction ของเซิร์ฟเวอร์เรียบง่ายลงอย่างถึงราก

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

 
xguru 2022-05-20

มีบทความแปลออกมาแล้วนะ

https://medium.com/@yujso66/…

 
xguru 2022-05-10

ถ้าจะให้ผมสรุปในแบบของผมเอง

  1. ช่วงนี้มีเทคโนโลยี sandbox ที่ใช้ WASM ออกมามากขึ้น
  2. JavaScript ถูกใช้เหมือนเป็นสคริปต์สำหรับขับเคลื่อน WASM
  3. บน WASM sandbox สามารถรันได้ตั้งแต่ OS ไปจนถึงคอนเทนเนอร์และเฟรมเวิร์ก
  4. ถ้าอย่างนั้น ก็อาจจะมีมาตรฐานคอนเทนเนอร์ระดับสูงแบบใหม่ในรูปแบบ JS Container ที่ให้โฟกัสแค่ business logic ได้
    น่าจะสรุปได้ประมาณนี้ครับ

ลิงก์อื่น ๆ เพื่อช่วยให้เข้าใจมากขึ้น