- Fly.io เปิดตัว ‘Sprites’ ใหม่ในฐานะแนวคิดของ คอมพิวเตอร์คลาวด์แบบคงอยู่ ที่มาแทนแซนด์บ็อกซ์แบบใช้ครั้งเดียวเดิม
- สร้างได้ภายใน 1~2 วินาที, รองรับ การเข้าสู่โหมดว่างอัตโนมัติ, การกู้คืนจากเช็กพอยต์, และ สตอเรจถาวร 100GB
- ชี้ให้เห็นว่า โมเดลคอนเทนเนอร์แบบไร้สถานะ เดิมไม่มีประสิทธิภาพสำหรับ AI agent (เช่น Claude) และย้ำถึงความจำเป็นของ สภาพแวดล้อมแบบคงอยู่
- ยกกรณีใช้งานจริงที่ Claude สร้างและรัน แอป Go บน SQLite (MDM) บน Sprite เป็นเวลานาน
- บทสรุปของบทความ: “ยุคของแซนด์บ็อกซ์จบลงแล้ว และยุคของคอมพิวเตอร์ใช้แล้วทิ้งได้มาถึงแล้ว”
- Fly.io ระบุว่า โมเดลแซนด์บ็อกซ์แบบอ่านอย่างเดียวล้าสมัย แล้ว และเปิดตัว ‘Sprite’ เพื่อมาแทน
- คำสั่ง
sprite create สามารถสร้าง Linux root shell ได้ภายใน 1 วินาที
- Sprite มี สตอเรจถาวร 100GB และเมื่อว่างงานจะพักเครื่องอัตโนมัติแล้วกลับมาทำงานต่อได้
- ใช้
sprite-env checkpoints create เพื่อสร้าง เช็กพอยต์ของทั้งระบบ ได้ทันที
- ใช้
sprite checkpoint restore v1 เพื่อกู้คืนได้ภายใน 1 วินาที และทำ การจัดการเวอร์ชันระดับระบบแบบเดียวกับ Git ได้
- คุณสมบัติหลัก
- สร้าง อินสแตนซ์หลายร้อยตัว ได้อย่างง่ายดาย
- ลดต้นทุนด้วย การหยุดคิดค่าบริการอัตโนมัติเมื่อ idle (Idle metering)
- ให้ URL แบบ HTTPS ผ่าน การเชื่อมต่อเครือข่าย Anycast
- คงทนถาวรอย่างสมบูรณ์ และจะคงอยู่จนกว่าจะลบอย่างชัดเจน
Claude และข้อจำกัดของคอนเทนเนอร์แบบไร้สถานะ
- ปัจจุบันสภาพแวดล้อมคลาวด์ส่วนใหญ่ยังยึดโครงสร้างแบบ คอนเทนเนอร์ไร้สถานะ (stateless)
- ข้อมูลถูกเก็บไว้เฉพาะในฐานข้อมูลภายนอก เพื่อความเรียบง่ายและการขยายระบบ
- แต่ AI agent อย่าง Claude ไม่เหมาะกับโครงสร้างนี้
- มักพยายามเลี่ยงหรือหลุดออกจากคอนเทนเนอร์ เพราะต้องการเข้าถึง “คอมพิวเตอร์” ทั้งเครื่อง
- ผู้เขียนนิยาม “คอมพิวเตอร์” ว่าต้องมี ความคงทนถาวร (durability) และ สภาพแวดล้อมที่ไม่หายไปหลังจบงาน
- แซนด์บ็อกซ์ในปัจจุบันขาดทั้งสองอย่างนี้
ความเรียบง่ายชนะเสมอ (Simple Wins)
- ในสภาพแวดล้อมแบบคงอยู่ ไม่จำเป็นต้อง สร้างสภาพแวดล้อมพัฒนาใหม่ (เช่น node_modules) ซ้ำแล้วซ้ำอีก
- อุตสาหกรรมกำลังทุ่มเงินหลายสิบล้านดอลลาร์กับเทคโนโลยีสแนปช็อตเพื่อแก้ปัญหานี้
- มีกรณีที่ต้องจัดโครงสร้างอินฟราจริงเพื่อให้ agent เข้าถึงทรัพยากรภายนอก เช่น S3, Redis, RDS
- สิ่งนี้เป็นเพียงวิธีชั่วคราวเพื่อเลี่ยงปัญหาความไม่คงอยู่ของแซนด์บ็อกซ์
- Sprites ตัดความซับซ้อนเหล่านี้ออกไป และให้ สภาพแวดล้อมที่เมื่อเขียนไฟล์แล้ว ไฟล์จะคงอยู่ตามเดิม
- ตัวอย่างเช่น ในโปรเจกต์ Phoenix.new agent บน Fly Machine สามารถ สังเกต log ของแอปได้โดยตรง แล้วแก้ข้อผิดพลาด
Galaxy Brain Win: การหลอมรวมระหว่างการพัฒนาและการปฏิบัติการ
- ผู้เขียนร่วมกับ Claude สร้าง แอป Go บน SQLite (MDM) บน Sprite
- ใช้ URL แบบ Anycast เป็น URL สำหรับลงทะเบียน MDM
- Claude จัดการแม้กระทั่ง การตั้งค่าใบรับรอง APNS ให้อัตโนมัติ
- แอปนี้ทำงานได้อย่างเสถียรบน Sprite มานานกว่าหนึ่งเดือน
- เป็นการทำให้แนวคิด “สภาพแวดล้อมพัฒนาคือระบบ production และ production ก็คือสภาพแวดล้อมพัฒนา (dev is prod, prod is dev)” เกิดขึ้นจริง
- ผู้เขียนมองว่าแอปส่วนใหญ่ไม่จำเป็นต้องรองรับทราฟฟิกขนาดมหาศาล และ แอปแบบคงอยู่ที่ปรับให้เหมาะกับผู้ใช้แต่ละคน มีความสำคัญมากกว่า
- เป็นโครงสร้างที่ผู้ใช้สามารถขอฟีเจอร์ได้โดยตรงและสะท้อนผลได้ทันที
จุดจบของแซนด์บ็อกซ์และยุคของคอมพิวเตอร์ใช้แล้วทิ้ง
- Fly.io พัฒนาแพลตฟอร์ม micro-VM แบบขยายแนวนอนมานาน แต่โมเดลแซนด์บ็อกซ์ได้มาถึงขีดจำกัดแล้ว
- Sprites คล้ายกับ Fly Machines แต่ใช้ สแตกสตอเรจใหม่และโครงสร้าง orchestration ใหม่ และ ไม่ต้องใช้ Dockerfile
- คำถามหลักที่ถูกโยนออกมาคือ:
> “ถ้าคุณสามารถรัน agent ได้อยู่แล้ว ทำไมจะไม่เลือก EC2 instance ที่เรียกใช้งานได้ทันที แทนแซนด์บ็อกซ์แบบอ่านอย่างเดียว?”
- บทสรุป: “ยุคของแซนด์บ็อกซ์จบลงแล้ว และยุคของคอมพิวเตอร์ใช้แล้วทิ้งได้มาถึงแล้ว”
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ตอนแรกชอบมากจริงๆ แต่เหมือนกับประสบการณ์อื่นๆ ที่เคยเจอกับ Fly API คราวนี้ก็รู้สึกว่ายังพังๆ อยู่
ถ้ารันคำสั่งตัวอย่างจากเอกสาร https://sprites.dev/api ตรงๆ จะได้คำตอบเป็น
{"error":"name is required"}แต่ถ้าใช้ request body แบบเต็มจาก เอกสาร Create Sprite ก็จะทำงานได้ปกติ
ถ้าเป็น workflow ส่วนตัวก็คงพอยอมรับ รอยคมๆ ของระบบ แบบนี้ได้ แต่ถ้าเป็น CI/CD ที่กระทบทั้งทีมก็ทำให้ลังเล
อยากขอทีม Fly ว่า — ตัวอย่างในเอกสารควรมีการตรวจด้วย ระบบทดสอบอัตโนมัติ ให้แน่ใจว่าใช้ได้จริง
https://sprites.dev/ น่าสนใจมาก
มันแก้สองปัญหาที่ผมชอบได้พร้อมกัน
ยังมีฟีเจอร์ snapshot ด้วย ทำให้ย้อนกลับไปสถานะก่อนรันได้ง่าย
ผมเขียนรายละเอียดไว้ในบล็อกแล้ว → บทความบน simonwillison.net
และก็ดีใจที่ได้ยินว่า Simon กำลังพยายาม สร้างรายได้ จากงานของตัวเองมากขึ้น ยิ่งเขาได้ผลตอบแทนมาก โลกก็น่าจะยิ่งดีขึ้น
ในเชิงปรัชญา ผมชอบ Fly และเป็นลูกค้ามาตั้งแต่แรกๆ
แต่พองานเกี่ยวกับ CLI ก็ยังรู้สึก กลัวๆ อยู่ดี ถึงจะใช้แค่ไม่กี่สัปดาห์ครั้ง การอัปเดตอัตโนมัติก็เด้งมาบ่อยจนเสียจังหวะ
เลยกังวลว่า Sprite CLI จะซ้ำรอยเดิม
อันนี้น่าสนใจมาก!
ที่บริษัทเราใช้ persistent development server ที่เชื่อม Claude ผ่าน SSH แต่พอ git repo หรือ environment หายไปก็ลำบาก
Sprite ดูเหมือนจะใช้เก็บข้อมูลด้วยอะไรอย่าง SQLite และทำแอปง่ายๆ ที่เข้าผ่าน URL ได้
ถ้ามันเป็นโครงสร้างที่หายไปเองอัตโนมัติหลังเวลาสั้นๆ ก็น่าจะเหมาะกับ ซอฟต์แวร์ส่วนตัวแบบง่ายๆ มาก
ถ้ามีฟีเจอร์ให้ดู URL ได้หลังผ่านการยืนยันตัวตนด้วยบัญชี Fly แบบ Vercel preview environment ก็น่าจะยิ่งดี
ดูเท่มาก แต่ผลิตภัณฑ์อื่นๆ ของ Fly ไม่ได้เป็นตัวอย่างที่ดีนักในแง่ ความเสถียร หรือ ความสมบูรณ์ของงาน
API ล่มและ error ชั่วคราวเกิดบ่อย แถม ปัญหาเรื่องบิล ก็แก้ช้า
เช่น instance ที่ลบไปแล้วก็ยังแสดงว่าใช้งานอยู่ และค่าบริการรายชั่วโมงถูกคิดเป็นสองเท่าของที่ควรจะเป็น
แม้จะออกผลิตภัณฑ์ AI ใหม่อย่าง Phoenix.new และ Sprites มา แต่ก็ดูเหมือนจะโฟกัสของใหม่มากกว่าปรับปรุงคุณภาพของของเดิม
ผมอยากได้ sandbox สำหรับงานพัฒนา แบบนี้มานานแล้ว — ต่อให้ลืมปิดก็ไม่เสียเงินเยอะ
แต่ก็เจอปัญหาอยู่บ้าง
manpath: can't set the locale— น่าจะเพราะค่า locale จากเครื่อง local ถูกส่งต่อมาด้วย$SHELLถูกตั้งเป็น/opt/homebrew/bin/fishดูเหมือนตัวแปรสภาพแวดล้อมจากเครื่อง local ถูก ส่งไปยังเครื่อง remote โดยไม่ได้ตั้งใจ เลยรู้สึกไม่ค่อยสบายใจนิดหน่อยอันนี้เจ๋งมาก เป็นสภาพแวดล้อมรัน sandbox แบบ DX และ API ที่ผมรออยู่
ผมอยาก custom image หรือ VM ตั้งต้น เพื่อให้มีเฉพาะ binary ที่ต้องใช้โดยไม่มีเครื่องมือเกินจำเป็น
หรือถ้ามีฟีเจอร์ clone sprite จาก checkpoint ได้ก็น่าจะดี ตอนนี้ยังไม่เห็นตัวเลือกแบบนั้น
ช่วงไม่กี่เดือนที่ผ่านมา การทำงานกับ Sprites สนุกมากจริงๆ
เร็วๆ นี้จะปล่อยบางส่วนฝั่ง Elixir ออกมาเป็น โอเพนซอร์ส
มีวิดีโอเดโม 5 นาทีด้วย → YouTube เดโม
sprite ที่ไม่ได้ใช้งานแทบไม่มีค่าใช้จ่าย ดังนั้นทุกครั้งที่จะเริ่มงานใหม่ก็แค่สร้างใหม่ได้เลย
มันให้ความรู้สึกแปลกๆ ดีที่มีสภาพแวดล้อมพร้อมรันได้ทุกเมื่อโดยไม่ต้องตัดสินใจอะไร
เพราะโดเมนเป็น fly.io ตอนแรกผมนึกว่าจะเป็น โซลูชันแบบ local
ต่อให้ไม่ใช่ self-hosted ก็ยังคาดหวังว่าจะเป็น wrapper ของ local VM ที่ครอบ Docker หรือ bubblewrap อะไรทำนองนั้น
ถ้ารัน IncusOS ที่ใช้ ZFS บนฮาร์ดแวร์ local ก็จะได้สภาพแวดล้อม sandbox ที่ทรงพลังมาก
อาจเป็นเพราะผมดูเอกสารพลาดไป แต่สงสัยว่าสามารถ fork/clone sprite หรือ restore checkpoint ไปเป็น sprite ใหม่ได้ไหม
เช่น ใช้ sprite หนึ่งตัวเป็นเทมเพลตสำหรับสร้างหลายตัว หรือให้ Claude code ลองหลายวิธีแล้วเก็บไว้แค่วิธีที่ดีสุด ที่เหลือค่อยลบทิ้ง
เดิมทีตั้งใจจะใส่มาตอนเปิดตัว แต่ตัดสินใจว่าควรเก็บข้อมูลการใช้งานจริงเพิ่มอีกหน่อย