• Kernel คือ แพลตฟอร์มเซิร์ฟเวอร์เลส ที่ช่วยให้นักพัฒนาสามารถดีพลอยโค้ด เบราว์เซอร์อัตโนมัติ ได้ทันทีโดยไม่ต้องกังวลเรื่องโครงสร้างพื้นฐานแยกต่างหาก และขยายระบบได้ในระดับใหญ่
  • สามารถดีพลอยและรันโค้ดได้ด้วย ความเร็วแทบไม่ต่างจากการพัฒนาในเครื่องโลคัล โดยไม่ต้องตั้งค่าหรือสร้างไปป์ไลน์
  • มี เบราว์เซอร์ Chrome สำหรับใช้งานในสภาพแวดล้อมแบบแซนด์บ็อกซ์ และ แปลงเอเจนต์ที่เขียนไว้ให้เป็น API โดยอัตโนมัติ เพื่อให้เรียกใช้งานได้จากทุกที่
  • รองรับการเชื่อมต่อกับ เฟรมเวิร์กที่ใช้ Chrome DevTools Protocol เช่น Playwright และ Puppeteer และสามารถมอนิเตอร์และควบคุมแบบเรียลไทม์ผ่าน GUI ระยะไกล (ไลฟ์วิว)
  • รองรับสภาพแวดล้อม Unikraft unikernel พร้อมความสามารถประสิทธิภาพสูง เช่น รีสตาร์ตความเร็วสูงมาก, กู้คืนสแนปช็อต, ใช้ทรัพยากรน้อยที่สุด
  • รองรับการดีพลอย 2 แบบคือ Docker image และ Unikraft unikernel ทำให้นำไปใช้ได้ในสภาพแวดล้อมคลาวด์/คอนเทนเนอร์ที่หลากหลาย
  • โค้ดทั้งหมดจะรันอย่างปลอดภัยใน เครื่องเสมือนที่แยกจากกัน พร้อมเครื่องมือสำหรับสังเกตการณ์และดีบักแบบเรียลไทม์

What's Kernel?

  • Kernel มอบ สภาพแวดล้อม Chrome แบบแซนด์บ็อกซ์ที่พร้อมใช้งานทันที และรีโพซิทอรีนี้คือโค้ดพื้นฐานสำหรับ บริการโฮสต์ของ Kernel
  • เชื่อมต่อได้ง่ายจาก เฟรมเวิร์กเบราว์เซอร์ที่อิงกับ Chrome DevTools เช่น Playwright และ Puppeteer

Why use Kernel?

  • ดีพลอยจากโลคัลสู่โปรดักชันได้ภายในไม่กี่วินาที
    • ดีพลอยและรันโค้ดได้ในเวลาแทบเท่ากับ bun run dev โดยไม่ต้องมีการตั้งค่าเพิ่มเติมหรือไปป์ไลน์สำหรับโปรดักชัน
  • เปลี่ยนเอเจนต์ทั้งหมดให้เป็น API
    • เอเจนต์ทุกตัวที่อัปขึ้นแพลตฟอร์มจะถูกเปิดเป็น API โดยอัตโนมัติ เพื่อให้ภายนอกเรียกใช้งานได้
  • ขยายแบบขนานได้
    • สามารถรันและขยายอินสแตนซ์เบราว์เซอร์หลายพันตัวได้ทันทีเมื่อจำเป็น
  • เสริมการแยกตัวและการสังเกตการณ์
    • โค้ดรันอยู่ใน VM ที่แยกออกจากกันเพื่อเพิ่มความปลอดภัย พร้อมเครื่องมือมอนิเตอร์และดีบัก
  • แผนราคาเรียบง่ายและคาดการณ์ได้
    • ไม่มีความจำเป็นต้องกำหนดโครงสร้างพื้นฐานล่วงหน้า และมีค่าใช้จ่ายเฉพาะตามทรัพยากรที่ใช้งานจริง

ฟีเจอร์หลัก

  • สภาพแวดล้อมเบราว์เซอร์แบบรวมศูนย์ : สร้างและควบคุมเบราว์เซอร์บนคลาวด์ได้ทันที เหมาะกับงานอัตโนมัติของเวิร์กโหลด
  • สามารถเชื่อมต่อใช้งาน เบราว์เซอร์ Chrome แบบแซนด์บ็อกซ์ จากเฟรมเวิร์กอัตโนมัติที่อิงกับ DevTools
    • เชื่อมต่อกับ Playwright, Puppeteer ฯลฯ ผ่าน พอร์ต 9222
    • รับ CDP WebSocket endpoint แล้วเชื่อมต่อจากไคลเอนต์ระยะไกล
    • รองรับการตัดการเชื่อมต่อ/เชื่อมต่อใหม่
  • คงสถานะเซสชันไว้ได้ : ดูแลให้เซสชันเบราว์เซอร์ เช่น คุกกี้ โทเคนยืนยันตัวตน และประวัติ ถูกเก็บไว้ต่อเนื่องข้ามแต่ละการเรียกใช้งาน
  • รีสตาร์ตความเร็วสูงมาก (standby mode) : รีสตาร์ตอินสแตนซ์เบราว์เซอร์ได้ทันทีในเวลาไม่เกิน 20ms
  • สามารถดูและควบคุมหน้าจอเบราว์เซอร์แบบเรียลไทม์ผ่าน GUI ระยะไกล (สตรีมไลฟ์วิว)
    • noVNC: อิง VNC รองรับอ่าน/เขียน ต้องปิดใช้งาน WebRTC
    • WebRTC: แบบเรียลไทม์ รองรับอ่าน/เขียน ปรับขนาดหน้าต่าง คัดลอก/วาง ประสิทธิภาพสูง ต้องตั้งค่า ENABLE_WEBRTC=true
    • ยังไม่รองรับสตรีมเสียง และสามารถตั้งค่าโหมดอ่านอย่างเดียวได้ผ่านตัวแปรสภาพแวดล้อม
  • วิดีโอรีเพลย์ของเซสชันเบราว์เซอร์ : สามารถย้อนดูเซสชันก่อนหน้าเพื่อดีบักและวิเคราะห์ได้ (รองรับในอนาคต)

การติดตั้งใช้งานและการดีพลอย

  • ใช้ Docker container

    • สามารถรัน Chromium แบบ headful ใน Docker container ได้
    • หลังจาก cd images/chromium-headful มีสคริปต์สำหรับ build และ run ให้
    • สามารถเปิดใช้งาน WebRTC และตั้งค่าอื่น ๆ ได้ผ่านตัวแปรสภาพแวดล้อม
  • ใช้ Unikraft Unikernel

    • เมื่่อรันบนพื้นฐานของ Unikraft unikernel จะให้ การเริ่มต้นและโหมดประหยัดพลังงานที่เร็วกว่ามาก เมื่อเทียบกับแบบ Docker
    • หากไม่มีทราฟฟิกเครือข่าย ระบบจะเข้าสู่โหมด standby โดยอัตโนมัติ และรองรับสแนปช็อต/กู้คืนสถานะ
    • Cold start ต่ำกว่า 20ms และสามารถเก็บรักษา/กู้คืนสถานะเซสชัน (คุกกี้ ไฟล์ การตั้งค่าเบราว์เซอร์ ฯลฯ) ได้
    • ต้องใช้หน่วยความจำอย่างน้อย 8GB
  • ข้อควรทราบตอนดีพลอย

    • หากเปิดใช้งานสตรีมมิงบน WebRTC จะต้องมี TURN server
    • ในการดีพลอยแบบ unikernel จะมีการออก URL สาธารณะทำให้ทุกคนเข้าถึงได้ จึง ไม่ควรใช้กับงานที่มีข้อมูลอ่อนไหว และควรลบอินสแตนซ์หลังใช้งาน

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น