رفتن به محتوا
cloudhost
زبان‌ها

به هر زبانی بنویسید. ما اجرا می‌کنیم.

یک برنامهٔ 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 پروداکشن است و هر شاخهٔ دیگر پیش‌نمایش خودش را می‌گیرد.

  1. بفرستید

    با git push، با CLI یا از یک ریپازیتوری متصل.

    git push cloudhost main
  2. تشخیص و بیلد

    زبان، نسخه، دستور نصب و دستور اجرا از روی فایل‌ها پیدا می‌شوند و لاگ بیلد آن‌ها را نشان می‌دهد.

    detected python; start: uvicorn main:app
  3. رپلیکاها بالا می‌آیند

    اولین رپلیکای نسخهٔ جدید فوراً روشن می‌شود و نسخهٔ قبلی تا آماده شدنش پاسخ می‌دهد.

    cloudhost instances my-api
  4. مقیاس‌پذیری خودکار

    با بار بیشتر رپلیکا اضافه می‌شود و در بیکاری تا حداقل، حتی صفر، کم می‌شود.

    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 و حافظه‌اش، ثانیه به ثانیه، از لحظهٔ آماده شدن تا توقف حساب می‌شود. رپلیکای خاموش هزینه‌ای ندارد و استارتی که شکست بخورد حساب نمی‌شود. اول از اعتبار همان ماه و سپس از کیف پول کم می‌شود.

پرسش‌های رایج

پروژه‌تان را همان‌طور که هست بفرستید

یک دستور، به هر زبانی.

فعلاً ثبت‌نام با کد دعوت است. اگر کد دارید، همین حالا حساب ایجاد کنید.

ثبت‌نام باکد ایمیلکد پیامکی