- 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 สาธารณะทำให้ทุกคนเข้าถึงได้ จึง ไม่ควรใช้กับงานที่มีข้อมูลอ่อนไหว และควรลบอินสแตนซ์หลังใช้งาน
ยังไม่มีความคิดเห็น