ที่พักและที่รันสำหรับโค้ด Perry
Coop เปลี่ยนไดเรกทอรี TypeScript ที่เข้ากับ Perry ให้เป็นไลบรารีแอปแบบเนทีฟและให้บริการผ่าน HTTP โดยมีรันไทม์และไลบรารีมาตรฐานของ Perry เพียงชุดเดียวต่อเครื่อง
โครงสร้างพื้นฐานทดลองสำหรับโค้ดที่คุณเป็นเจ้าของ
Perry คอมไพล์ ส่วน Coop ดูแลให้รันต่อไป
ความแตกต่างอยู่ที่ตำแหน่งของรันไทม์ภาษา Coop ทำให้อิมเมจแอปมีขนาดเล็กและจัดหารันไทม์ Perry ที่เข้ากันได้พร้อมไลบรารีมาตรฐานในระดับโฮสต์
ไฟล์รัน Perry แบบปกติ
แอป รันไทม์ ตัวเก็บขยะ และส่วนที่เลือกของไลบรารีมาตรฐานจะถูกลิงก์เป็นไฟล์รันเฉพาะเป้าหมายเดียว
การดีพลอย Coop
แอปถูกคอมไพล์เป็นไลบรารีร่วมที่มีเฉพาะตัวแอป ผู้ให้บริการที่เข้ากันได้ถูกสร้างหนึ่งครั้งต่อเครื่องและตรวจสอบตัวตนก่อนแมปแอป
แยกตามขอบเขตความล้มเหลว
เครื่อง การดีพลอยแต่ละชุด และคำขอแต่ละรายการมีหน้าที่แยกกัน โค้ดแอปจะไม่รันในดีมอนของเครื่อง
ดีมอน · หนึ่งต่อเครื่อง
ยุติ TLS จัดเส้นทางตามโฮสต์และพาธ และดูแลการดีพลอย อาร์ติแฟกต์ API ผู้ดูแล และเมตริก
เวิร์กเกอร์ · หนึ่งต่อการดีพลอย
โหลดไลบรารีแอป ดูแลสถานะรันไทม์ Perry และรันงาน cron กับคิวแบบทนทาน
การเรียก · หนึ่งต่อคำขอ
รันเป็นงานภายในเวิร์กเกอร์และใช้พื้นที่แอดเดรสร่วมกันโดยไม่สร้างโปรเซสใหม่ต่อคำขอ
สิ่งที่ใช้งานได้วันนี้
Coop เป็นโครงสร้างพื้นฐานที่ผ่านการทดสอบ แต่ยังไม่ใช่ผลิตภัณฑ์โฮสติ้งที่เสร็จสมบูรณ์ การทำงานปัจจุบันประกอบด้วย:
- ✓คอมไพล์ TypeScript จัดเส้นทาง HTTP และเมานต์ไฟล์สแตติก
- ✓ตรวจสอบตัวตนของรันไทม์ร่วม
- ✓ดีพลอยแบบอ้างอิงเนื้อหาและย้อนกลับ
- ✓cron และคิวแบบทนทาน
- ✓KV และที่เก็บอ็อบเจกต์สำหรับเวิร์กเกอร์เฉพาะ
- ✓CLI เมตริก Prometheus การแจ้งเตือน และแดชบอร์ด Grafana
พื้นผิวการดีพลอยที่เล็ก
การดีพลอยคือไดเรกทอรีที่มี coop.toml และแฮนด์เลอร์อย่างน้อยหนึ่งตัว Coop จะคอมไพล์ แคชผลลัพธ์ และเริ่มเวิร์กเกอร์ในเครื่อง
name = "hello"
version = "0.1.0"
[hosts]
domains = ["hello.test"]
[[handlers]]
file = "handlers/hello.ts"
path = "/hello"
method = "GET"import { CoopRequest, respond } from "@coop/runtime";
export function handle(reqJson: string): string {
const req = new CoopRequest(reqJson);
return respond(200, {}, `hello from ${req.path}`);
}$ coop-cli dev ./helloขอบเขตแคบโดยตั้งใจ
เหมาะกับงานวันนี้
- ✓บริการและแอปขนาดเล็กที่คุณเป็นเจ้าของโค้ด
- ✓ผู้ดูแลหนึ่งรายที่รันหลายบริการบนเครื่องเดียว
- ✓งานที่คอมไพล์ได้ในชุดย่อย TypeScript ของ Perry
- ✓ทีมที่ให้ความสำคัญกับความหนาแน่น อาร์ติแฟกต์ชัดเจน และการย้อนกลับเร็ว
สิ่งที่ Coop ยังไม่รับประกัน
- ·ความเข้ากันได้กับ npm หรือ Node.js ทุกแพ็กเกจ
- ·แซนด์บ็อกซ์สำหรับโค้ดบุคคลที่สามที่ไม่น่าเชื่อถือ
- ·การแทน Kubernetes หรือแพลตฟอร์มหลายภูมิภาค
- ·ประสิทธิภาพเหนือ Node.js ในทุกงาน
ความหนาแน่นคือสมมติฐาน ส่วนเบนช์มาร์กยังอยู่ระหว่างการทำงาน
ผลวัดปัจจุบันต่างกันตามลักษณะงาน Coop แสดงความหนาแน่นที่ดีในแอป Linux ขนาดเล็ก แต่อีกการทดสอบหนึ่งพบว่าเส้นทาง Next.js เต็มรูปแบบใช้ CPU มากกว่า Node.js โปรดอ่านวิธีการก่อนอ้างผล
สร้างด้วย Perry แล้วให้ Coop ดูแล
สำรวจซอร์ส รันตัวอย่างการดีพลอย และช่วยพัฒนาโมเดลรันไทม์ร่วมให้เป็นโครงสร้างพื้นฐานที่เชื่อถือได้