Nơi mã Perry có thể nghỉ và chạy.
Coop biến một thư mục TypeScript tương thích với Perry thành thư viện ứng dụng native và phục vụ qua HTTP, trong khi runtime và thư viện chuẩn Perry chỉ được cung cấp một lần trên mỗi máy.
Hạ tầng thử nghiệm cho mã bạn sở hữu
Perry biên dịch. Coop giữ cho nó hoạt động.
Khác biệt nằm ở nơi runtime ngôn ngữ tồn tại. Coop giữ image ứng dụng nhỏ và cung cấp runtime Perry tương thích cùng thư viện chuẩn ở cấp host.
Một tệp thực thi Perry thông thường
Ứng dụng, runtime, bộ thu gom rác và các tính năng thư viện chuẩn được chọn được liên kết vào một tệp thực thi riêng cho đích.
Một triển khai Coop
Ứng dụng được biên dịch thành thư viện dùng chung chỉ chứa app. Runtime tương thích được xây dựng một lần trên mỗi máy và danh tính được kiểm tra trước khi ánh xạ ứng dụng.
Tách theo ranh giới lỗi
Máy, từng triển khai và từng yêu cầu có trách nhiệm riêng. Mã ứng dụng không bao giờ chạy trong daemon của máy.
Daemon · một trên mỗi máy
Kết thúc TLS, định tuyến theo host và đường dẫn, quản lý triển khai, artifact, API quản trị và metric.
Worker · một trên mỗi triển khai
Tải thư viện ứng dụng, sở hữu trạng thái runtime Perry và chạy cron cùng hàng đợi bền vững.
Lần gọi · một trên mỗi yêu cầu
Chạy như một tác vụ trong worker và chia sẻ không gian địa chỉ mà không tạo tiến trình cho từng yêu cầu.
Những gì hoạt động hôm nay
Coop là hạ tầng đã được kiểm thử nhưng chưa phải sản phẩm lưu trữ hoàn thiện. Bản triển khai hiện tại gồm:
- ✓Biên dịch TypeScript, định tuyến HTTP và mount tĩnh
- ✓Kiểm tra danh tính runtime dùng chung
- ✓Triển khai định địa chỉ theo nội dung và rollback
- ✓Cron và hàng đợi bền vững
- ✓KV và lưu trữ đối tượng cho worker riêng
- ✓CLI, metric Prometheus, cảnh báo và dashboard Grafana
Bề mặt triển khai nhỏ
Một triển khai là thư mục có coop.toml và một hoặc nhiều handler. Coop biên dịch, lưu cache kết quả và khởi động worker cục bộ.
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 ./helloPhạm vi hẹp có chủ đích
Phù hợp hôm nay
- ✓Dịch vụ và ứng dụng nhỏ có mã do bạn sở hữu
- ✓Một người vận hành danh mục trên một máy
- ✓Khối lượng công việc biên dịch được trong tập con TypeScript của Perry
- ✓Nhóm coi trọng mật độ, artifact rõ ràng và rollback nhanh
Những điều Coop chưa hứa hẹn
- ·Tương thích tùy ý với npm hoặc Node.js
- ·Sandbox cho mã bên thứ ba không đáng tin cậy
- ·Thay thế Kubernetes hoặc nền tảng đa vùng
- ·Luôn nhanh hơn Node.js
Mật độ là luận điểm. Benchmark vẫn đang được hoàn thiện.
Các phép đo hiện tại cho kết quả khác nhau theo khối lượng công việc. Coop cho thấy mật độ hứa hẹn với ứng dụng Linux nhỏ, trong khi một route Next.js đầy đủ dùng nhiều CPU hơn Node.js ở thử nghiệm khác. Hãy đọc phương pháp trước khi trích dẫn.
Xây bằng Perry. Chạy trong Coop.
Khám phá mã nguồn, chạy triển khai mẫu và góp phần biến mô hình runtime dùng chung thành hạ tầng đáng tin cậy.