توابع بدون سرور

توابع بدون سرور با جاوااسکریپت

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

زبان
جاوااسکریپت
فراخوانی
HTTP، Cron، صف
حافظه
۱۲۸ تا ۴۰۹۶ مگابایت (پیش‌فرض ۲۵۶)
Timeout
تا ۹۰۰ ثانیه (پیش‌فرض ۳۰)
index.js
import { AutoRouter } from "itty-router";

const router = AutoRouter();

router.get("/hello/:name", ({ name }) =>
  Response.json({ message: `سلام ${name}`, at: new Date().toISOString() }),
);

addEventListener("fetch", (event) => {
  event.respondWith(router.fetch(event.request));
});

توابع بدون سرور سکو کلود (FaaS)

برای یک وب‌هوک، یک تبدیل کوچک یا یک کار شبانه، لازم نیست اپ کامل همیشه‌روشن داشته باشید. تابع بدون سرور فقط وقتی اجرا می‌شود که فراخوانی شود. کد بر پایه‌ی استانداردهای وب نوشته می‌شود: رویداد fetch را می‌گیرید و یک Response برمی‌گردانید.

مناسب برای

  • وب‌هوک درگاه پرداخت و سرویس‌ها
  • API سبک و پروکسی
  • کار زمان‌بندی‌شده‌ی شبانه
  • پردازش پیام صف

از کد تا آدرس

  1. نوشتن

    هندلر به رویداد fetch گوش می‌دهد و Response برمی‌گرداند.

    addEventListener("fetch", …)
  2. ساخت

    فایل را با CLI بفرستید یا در کنسول بنویسید.

    sakoocloud fn create --name hello --file ./index.js
  3. فراخوانی

    تابع یک آدرس عمومی می‌گیرد؛ cron یا صف هم می‌توانند اجرایش کنند.

    invokeUrl
  4. به‌روزرسانی

    نسخه‌ی جدید با یک دستور جایگزین می‌شود.

    sakoocloud fn deploy <id> --file ./index.js

ساخت و مدیریت با CLI

حافظه و timeout را هنگام ساخت تعیین کنید؛ اگر فایل ورودی index.js نیست، --entry بدهید.

terminal
sakoocloud fn create --name hello --file ./index.js --memory 256 --timeout 30
sakoocloud fn list
sakoocloud fn info <function-id>
sakoocloud fn deploy <function-id> --file ./index.js

چه چیزهایی همراهش می‌آید

  • فقط کد

    نه Dockerfile، نه ایمیج، نه مخزن. کد را در ویرایشگر کنسول بنویسید یا فایل هندلر را با CLI بفرستید.

    • ویرایشگر کد در کنسول
    • استقرار با sakoocloud fn create
    • الگوهای آماده
    • به‌روزرسانی با fn deploy
  • مقیاس تا صفر

    در بیکاری هیچ نمونه‌ای اجرا نمی‌شود و هزینه‌ای ندارد؛ زیر بار، تعداد نمونه‌ها خودکار بالا می‌رود.

    • بدون هزینه در بیکاری
    • مقیاس‌گیری خودکار زیر بار
    • حافظه‌ی ۱۲۸ تا ۴۰۹۶ مگابایت
    • timeout تا ۹۰۰ ثانیه
  • سه راه فراخوانی

    هر تابع یک آدرس عمومی دارد. می‌توانید آن را با زمان‌بند cron یا با رسیدن پیام به صف هم اجرا کنید.

    • HTTP با invokeUrl
    • Cron برای کار زمان‌بندی‌شده
    • Queue برای پیام‌ها
    • پاسخ استاندارد Response
  • استاندارد وب

    هندلر به رویداد fetch گوش می‌دهد و Response برمی‌گرداند؛ همان مدلی که در Service Worker و رانتایم‌های edge می‌بینید.

    • Request و Response استاندارد
    • Response.json برای API
    • متغیرهای محیطی
    • لاگ اجرای هر درخواست

جزئیات فنی

مقادیر پیش‌فرض

تنظیمپیش‌فرضبازه
حافظه۲۵۶ مگابایت۱۲۸ تا ۴۰۹۶
timeout۳۰ ثانیه۱ تا ۹۰۰
مقیاس تا صفرفعال—

راه‌های فراخوانی

Triggerکاربرد
HTTPدرخواست مستقیم به invokeUrl
Cronاجرا در زمان مشخص، مثلاً 0 3 * * *
Queueاجرا با رسیدن پیام به صف

پرسش‌های متداول

تابع بدون سرور با اپ معمولی چه فرقی دارد؟

اپ همیشه روشن است و هزینه‌ی ثابت دارد؛ تابع فقط هنگام فراخوانی اجرا می‌شود و در بیکاری به صفر می‌رسد.

چه زبان‌هایی پشتیبانی می‌شود؟

فعلاً جاوااسکریپت. برای زبان‌های دیگر، یا برای استقرار از گیت و ایمیج، از میزبانی برنامه (PaaS) استفاده کنید.

cold start چقدر است؟

اولین درخواست بعد از بیکاری کمی کندتر است، چون نمونه‌ای باید بالا بیاید؛ درخواست‌های بعدی بدون این تأخیر اجرا می‌شوند.

حداکثر زمان اجرا چقدر است؟

پیش‌فرض ۳۰ ثانیه و قابل افزایش تا ۹۰۰ ثانیه با --timeout.

برای جزئیات بیشتر مستندات را ببینید یا پلن‌ها را مقایسه کنید.

سریع‌ترین مسیر از کد تا انتشار.

ابتدا ابزار خط فرمان را نصب کنید، سپس همین‌جا امتحان کنید. (بنویسید، یا یکی از پیشنهادهای پایین ترمینال را بزنید)

~/projects/my-app
امتحان کنید