به هر زبانی بنویسید. ما اجرا میکنیم.
یک برنامهٔ Django، FastAPI، Go یا Laravel را همانطور که هست بفرستید. فایل بیلدی نمینویسید و SDKی اضافه نمیکنید. ما زبان را از فایلهای پروژه تشخیص میدهیم، بیلد میکنیم و روی رپلیکاها اجرا میکنیم.
زبانی که دارید
پروژهای که package.json ندارد از روی فایلهایش شناخته میشود: requirements.txt یا pyproject.toml، go.mod، composer.json، pom.xml، Gemfile، Cargo.toml.
Python
Django، FastAPI و Flask. بایتکد در بیلد ساخته میشود تا برنامه سریع بالا بیاید.
Go
باینری را ما میسازیم. کمتر از 0.2 ثانیه تا اولین پاسخ.
PHP
Laravel و Symfony، با وابستگیهایی که composer.json میگوید.
Java
Spring Boot و هر پروژهٔ Maven یا Gradle.
Ruby
Rails و هر برنامهای با Gemfile.
Rust
پروژهٔ Cargo، بیلدشده روی سرورهای ما.
.NET
برنامههای وب ASP.NET Core.
JavaScript و TypeScript
فانکشنها و برنامههای Next.js و Astro، مثل همیشه.
از کد تا رپلیکا
همان مسیر هر برنامه و فانکشن: main پروداکشن است و هر شاخهٔ دیگر پیشنمایش خودش را میگیرد.
بفرستید
با git push، با CLI یا از یک ریپازیتوری متصل.
git push cloudhost mainتشخیص و بیلد
زبان، نسخه، دستور نصب و دستور اجرا از روی فایلها پیدا میشوند و لاگ بیلد آنها را نشان میدهد.
detected python; start: uvicorn main:appرپلیکاها بالا میآیند
اولین رپلیکای نسخهٔ جدید فوراً روشن میشود و نسخهٔ قبلی تا آماده شدنش پاسخ میدهد.
cloudhost instances my-apiمقیاسپذیری خودکار
با بار بیشتر رپلیکا اضافه میشود و در بیکاری تا حداقل، حتی صفر، کم میشود.
cloudhost instances set my-api --min 0 --max 5
آنچه میگیرید
بدون فایل بیلد
نه Dockerfile، نه فایل تنظیمات. دستور اجرا از چارچوب پروژه پیدا میشود؛ اگر لازم شد، یک خط web: در Procfile آن را تعیین میکند.
رپلیکا با اندازهٔ خودش
هر رپلیکا یک نسخه از برنامهٔ شماست با vCPU و حافظهٔ خودش. اندازهٔ کوچک، متوسط یا بزرگ را برای پروداکشن و پیشنمایش جدا انتخاب کنید.
مقیاسپذیری خودکار تا صفر
حداقل و حداکثر رپلیکا را تعیین کنید. با ۰، پس از ۵ دقیقه بیکاری چیزی روشن نمیماند و درخواست بعدی منتظر یک استارت سرد کوتاه است.
دیتابیس SQL و کش بدون رمز
DATABASE_URL و CACHE_URL آمادهاند و هیچ رمزی در آنها نیست. پلتفرم در هر اتصال بررسی میکند که رپلیکا متعلق به همان برنامه است. هر درایوری کار میکند.
درخواست HTTPS به بیرون
برنامه هر API عمومی را روی HTTPS صدا میزند. کتابخانههای رایج تنظیمات را خودشان برمیدارند. آدرسهای شبکهٔ داخلی بستهاند.
لاگها و فهرست رپلیکاها
هر خط stdout و stderr یک لاگ است، با شناسهٔ رپلیکا. رپلیکاهای در حال اجرا و دلیل توقف هر کدام را در داشبورد، CLI و MCP ببینید.
استقرار بدون انتظار
هیچ درخواستی منتظر استارت سرد نسخهٔ جدید نمیماند. ترافیک وقتی جابهجا میشود که اولین رپلیکای جدید آماده باشد.
پیشنمایش و بازگشت
مثل هر برنامه و فانکشن: پیشنمایش برای هر شاخه، بازگشت به نسخهٔ قبلی بدون بیلد دوباره، دامنهٔ اختصاصی، سکرتها و هشدارها.
جدا و بررسیشده
پوشهٔ برنامه فقطخواندنی است و فقط /tmp نوشتنی است. هر رپلیکا سقف منابع خودش را دارد و ایمیج هر بیلد پیش از انتشار برای آسیبپذیری بررسی میشود.
روی PORT پاسخ بدهید. بقیه با ما.
برنامه درخواستها را روی پورتی که در PORT است میپذیرد و لاگ را در خروجی استاندارد مینویسد. داده را در دیتابیس، کش یا باکت پروژه نگه دارید.
import os
import psycopg
from fastapi import FastAPI
app = FastAPI()
@app.get("/orders")
def orders():
# DATABASE_URL holds no password: the platform checks who is calling
with psycopg.connect(os.environ["DATABASE_URL"]) as db:
return db.execute("select id, total from orders limit 10").fetchall()اندازههای رپلیکا
| vCPU | حافظه | |
|---|---|---|
| کوچک | 0.25 | ۵۱۲ مگابایت |
| متوسط | 1 | ۲ گیگابایت |
| بزرگ | 4 | ۸ گیگابایت |
فقط وقتی روشن است
هر رپلیکا به اندازهٔ vCPU و حافظهاش، ثانیه به ثانیه، از لحظهٔ آماده شدن تا توقف حساب میشود. رپلیکای خاموش هزینهای ندارد و استارتی که شکست بخورد حساب نمیشود. اول از اعتبار همان ماه و سپس از کیف پول کم میشود.
پرسشهای رایج
Python، Go، PHP، Java، Ruby، Rust و .NET، کنار JavaScript و TypeScript. نسخه را از فایلهای خود پروژه میخوانیم (مثل .python-version یا go.mod). اگر نسخهای را نداشته باشیم، بیلد با پیامی روشن میگوید کدام نسخهها هست.
نه. ایمیج را ما از روی کد شما میسازیم و روی سرورهای خودمان نگه میداریم. شما فقط کد پروژه را میفرستید.
دیتابیس SQL و کش را به برنامه متصل کنید؛ DATABASE_URL و CACHE_URL آمادهاند و رمزی ندارند. پلتفرم در هر اتصال بررسی میکند که رپلیکا متعلق به برنامهای با همان اتصال است، پس هیچ برنامهٔ دیگری به آن نمیرسد. پیشنمایش هر شاخه به شاخهٔ دیتابیس خودش وصل است.
یک برنامهٔ Go کمتر از ۰٫۲ ثانیه. یک برنامهٔ FastAPI روی رپلیکای کوچک کمتر از ۵ ثانیه، چون بایتکد در بیلد ساخته شده است. اگر اولین درخواست نباید منتظر بماند، حداقل رپلیکای پروداکشن را ۱ بگذارید.
بله. درخواستها با HTTP/1.1 و وبسوکت میرسند. اتصالی که ۵ دقیقه هیچ دادهای جابهجا نکند بیکار حساب میشود؛ برای نگه داشتنش ping بفرستید.
فانکشن JavaScript با هر درخواست در چند میلیثانیه اجرا میشود و به ازای درخواست و CPU حساب میشود. برنامهای به زبان دیگر یک فرایند کامل است که روی رپلیکا اجرا میشود و به ازای مدت روشن بودن حساب میشود. نسخه، پیشنمایش، بازگشت، سکرتها و لاگ برای هر دو یکسان است.
پروژهتان را همانطور که هست بفرستید
یک دستور، به هر زبانی.
فعلاً ثبتنام با کد دعوت است. اگر کد دارید، همین حالا حساب ایجاد کنید.
ثبتنام باکد ایمیلکد پیامکی