क्लोज़्ड बीटा

सर्वरलेस फ़ंक्शन

फ़ंक्शन भेजें। सर्वर की चिंता छोड़ें।

एक repository जोड़ें और हर push एक नया Node.js या Python version बनाता है। हर सक्रिय invocation अपनी Firecracker microVM सीमा के भीतर चलता है, snapshot-आधारित स्टार्ट के साथ और बिना किसी साझा application container के।

  • push से लाइव तक लगभग 25 सेकंड
  • फ़ेल होने पर पिछला version लाइव रहता है

दस्तावेज़ देखें

sarpius / hello-function
main · a7c42de
लाइव
v42 बनते समय v41 सेवा दे रहा है शून्य downtime
  • Push प्राप्त हुआ 0.3s
  • Node.js dependencies का build
  • v42 सक्रिय हुआ 24.8s
  • POST /hello 200 · 23ms
hello-function.sarpius.app 24.8 सेकंड में लाइव

यह कैसे काम करता है

तीन चरण, फिर हर push लाइव।

Functions बाकी Sarpius की तरह git-पहले वाले तरीके से चलते हैं, लेकिन अल्पकालिक कामों के लिए बने अलग-थलग microVMs में deploy होते हैं।

चरण 01

अपनी repository जोड़ें

GitHub, GitLab, Gitea, Bitbucket या कोई भी मानक git remote चुनें। फ़ंक्शन आपके मौजूदा Project का हिस्सा बन जाता है।

चरण 02

function.json जोड़ें

Node.js या Python, entry फ़ाइल, memory tier और timeout तय करें। runtime का अनुबंध उसी code के साथ रहता है जिसका वह वर्णन करता है।

चरण 03

Push करें और route करें

हर push एक नया अपरिवर्तनीय version बनाता है। तैयार होने पर Sarpius बिना downtime के traffic बदल देता है, और build फ़ेल होने पर पिछला version वहीं रहता है।

  • GitHub
  • GitLab
  • Gitea
  • Bitbucket
  • + सामान्य remote

इसे चलते देखें

एक handler, एक छोटा manifest, एक लाइव URL।

request ऑब्जेक्ट में HTTP method, path, query, headers और body होते हैं। एक status, टेक्स्ट headers और एक body लौटाएँ।

hello-function / main Node.js
index.mjs handler(request)
export async function handler(request) {
  const input = request.body
    ? JSON.parse(request.body)
    : {};

  return {
    status: 200,
    headers: {
      "content-type": "application/json"
    },
    body: JSON.stringify({
      message: `Hello, ${input.name ?? "world"}`,
      method: request.method,
      path: request.path
    })
  };
}
function.json repository का root
{
  "lang": "node",
  "tier": 128,
  "entry": "index.mjs",
  "timeout_s": 10
}
request 200 · application/json
$ curl -X POST \
  -H "content-type: application/json" \
  -d '{"name":"Ada"}' \
  https://hello-function.sarpius.app/hello

{"message":"Hello, Ada","method":"POST","path":"/hello"}

सुविधाएँ

आपके Project का एक पूर्ण हिस्सा।

Functions आपके components, databases और buckets के बगल में रहते हैं। console deploy, traffic और लागत को एक ही जगह रखता है।

git से लाइव तक

तय की गई branch पर हर push एक build शुरू करता है। production में मापे गए आँकड़ों के अनुसार सफल version लगभग 25 सेकंड में लाइव हो जाता है।

परमाणु version स्विच

सक्रिय version तभी बदलता है जब नया build सफल हो जाए। मौजूदा traffic सक्रिय होने तक पिछले version तक पहुँचता रहता है।

Project के साथ एकीकृत

Functions को Project साइडबार में अपना अलग सेक्शन मिलता है और वे routing और members ऐप के बाकी हिस्सों के साथ साझा करते हैं।

एक सादा request ऑब्जेक्ट

हर invocation को method, route किया हुआ path, कच्ची query, छाने हुए headers और UTF-8 body मिलती है, और वह एक status, टेक्स्ट headers और एक body लौटाता है।

Logs और latency

build logs, हाल के invocations और प्रति घंटे के request व error counts पढ़ें। console invocation की p50 और p95 latency पर नज़र रखता है।

Wallet और कड़ी सीमाएँ

उपयोग उसी wallet से कटता है जिससे बाकी Sarpius। एक फ़ंक्शन या पूरे Project के लिए मासिक EUR सीमा तय करें।

Triggers

request का जवाब दें या शेड्यूल पर चलें।

दोनों trigger प्रकार एक ही सक्रिय version, budget जाँच, usage meter और microVM isolation का उपयोग करते हैं।

HTTP

आपके Project की अपनी URL

मुफ़्त *.sarpius.app subdomain का उपयोग करें या फ़ंक्शन को /api/hello जैसे Project route पर लगाएँ। method, path, query, headers और body handler तक पहुँचते हैं।

POSTapi.example.com/api/hello?lang=en
methodpathquerybody
Cron

बिना worker के शेड्यूल किए काम

पाँच-फ़ील्ड वाला मानक cron expression और एक IANA timezone उपयोग करें। रिपोर्ट, सफ़ाई और बार-बार चलने वाले integrations के लिए एक फ़ंक्शन में 10 तक schedules जोड़ें।

15 8 * * 1-5
Europe/Amsterdam
अधिकतम एक बार

claim किया गया slot crash के बाद कभी दोबारा नहीं चलाया जाता। छूटे हुए slots बाद में पूरे नहीं किए जाते, इसलिए scheduler की रिकवरी के कारण side effects दो बार नहीं चल सकते।

कीमतें

केवल चले हुए काम का भुगतान करें।

compute GiB-सेकंड में मापा जाता है, फिर invocations की संख्या जोड़ी जाती है। मासिक मुफ़्त सीमा पहले लगाई जाती है, wallet से चुकाए जाने वाले बिल पर।

Compute
€0.000016
प्रति GiB-सेकंड
Invocations
€0.20
प्रति दस लाख invocations

हर महीने, भुगतान वाले उपयोग से पहले

100,000 GiB-सेकंड और 1,000,000 invocations मुफ़्त हैं। बिलिंग पूरे cent में होती है, नीचे की ओर गोल करके, और बचा हुआ हिस्सा तब तक आपके उपयोग में रहता है जब तक वह मिलकर एक cent न हो जाए। कोई न्यूनतम शुल्क नहीं है।

मुफ़्त सीमा के भीतर

छोटी API

€0.00/ माह

128 MiB, औसतन 200 ms, 1,000,000 invocations

128/1024 × 0.2 × 1,000,000 = 25,000 GiB-s

25,000, मुफ़्त 100,000 से कम है; 1,000,000 calls मुफ़्त हैं → €0.00

व्यस्त webhook

पचास लाख calls

€4.20/ माह

128 MiB, औसतन 500 ms, 5,000,000 invocations

128/1024 × 0.5 × 5,000,000 = 312,500 GiB-s

(312,500 - 100,000) × €0.000016 = €3.40 compute

(5,000,000 - 1,000,000) / 1,000,000 × €0.20 = €0.80 calls → €4.20

लंबा workload

बीस लाख calls

€6.60/ माह

256 MiB, औसतन 1 सेकंड, 2,000,000 invocations

256/1024 × 1 × 2,000,000 = 500,000 GiB-s

(500,000 - 100,000) × €0.000016 = €6.40 compute

(2,000,000 - 1,000,000) / 1,000,000 × €0.20 = €0.20 calls → €6.60

शुल्क आपके मौजूदा Sarpius wallet से कटते हैं। बिलिंग पहले मासिक मुफ़्त सीमा लगाती है। प्रति फ़ंक्शन और प्रति Project मासिक सीमा तय की जा सकती है, और उसकी सुरक्षा जाँच मुफ़्त क्रेडिट से पहले का कुल उपयोग गिनती है, इसलिए वह अंतिम इनवॉइस से पहले रुक सकती है। जब सीमा पूरी हो जाए, या wallet खाली होने के कारण बिलिंग फ़ंक्शन को रोक दे, तो नए HTTP requests को 402 Payment Required मिलता है और कोई microVM शुरू नहीं की जाती।

सुरक्षा सीमाएँ

काम की बात यह है कि runtime क्या मना करता है।

ये सीमाएँ सेवा द्वारा लागू की जाती हैं। ये किसी dashboard में लिखी हल्की सलाह नहीं हैं।

एक microVM सीमा

हर सक्रिय invocation को साझा application container की जगह एक Firecracker microVM सीमा मिलती है। गर्म VMs को एक ही फ़ंक्शन version के लिए क्रम से दोबारा इस्तेमाल किया जा सकता है, ग्राहकों के बीच कभी एक साथ नहीं।

तय memory tiers

function.json में 128, 256 या 512 MiB चुनें। tier microVM पर लागू होता है और GiB-सेकंड मीटरिंग का आधार भी है।

अधिकतम 60 सेकंड

manifest 1 से 60 सेकंड तक का timeout तय कर सकता है। timeout पर 504 लौटता है और VM नष्ट कर दी जाती है, किसी अनिश्चित instance को गर्म pool में वापस नहीं रखा जाता।

Infrastructure बंद होकर फ़ेल होता है

यदि platform database, usage writer या host egress guard यह साबित नहीं कर सकता कि वह तैयार है, तो सेवा 503 लौटाती है और ग्राहक का code मुफ़्त में या नीति के बाहर नहीं चलाती।

Budget एक कड़ा स्टॉप है

फ़ंक्शन सीमा, Project सीमा या बिलिंग रोक पूरी होने पर VM मिलने से पहले HTTP 402 लौटता है। request आगे नहीं बढ़ती और अतिरिक्त खर्च नहीं बनाती।

Cron अधिकतम एक बार चलता है

scheduler भेजने से पहले एक slot दर्ज करता है। crash से एक run छूट सकता है, लेकिन जब side effects हो चुके हो सकते हैं तब वह slot कभी दोबारा नहीं चलाया जाता।

FAQ

पहले push से पहले के सवाल।

नया version कितनी जल्दी लाइव होता है?

production में मापे गए आँकड़ों के अनुसार push से सक्रिय version तक लगभग 25 सेकंड लगते हैं। build का समय अब भी repository और dependencies पर निर्भर करता है। नया version सक्रिय होने तक पिछला version जवाब देता रहता है।

build फ़ेल होने पर क्या होता है?

activation केवल सफल build के बाद होता है। फ़ेल हुआ build Project में उसके log के साथ दिखता है, जबकि आख़िरी सक्रिय version लाइव रहता है।

क्या दो ग्राहक कभी एक function container साझा करते हैं?

ग्राहकों के फ़ंक्शन कोई साझा application container नहीं चलाता। हर सक्रिय invocation को एक Firecracker microVM सीमा मिलती है। एक गर्म VM को रोककर बाद में उसी फ़ंक्शन version के लिए दोबारा इस्तेमाल किया जा सकता है, अगली call से पहले उसकी घड़ी ताज़ा कर दी जाती है।

कौन-से runtimes उपलब्ध हैं?

क्लोज़्ड बीटा में Node.js और Python उपलब्ध हैं। manifest में lang: "node" या lang: "python" लिखा जाता है, और export किया हुआ या परिभाषित handler(request) होता है।

HTTP trigger से फ़ंक्शन को क्या मिलता है?

handler को method, route किया हुआ path, कच्ची query, छाने हुए headers और UTF-8 body मिलती है। वह HTTP status, टेक्स्ट header मान और response body लौटाता है।

खर्च की सीमा पर क्या होता है?

सेवा microVM लेने से पहले HTTP 402 लौटाती है। यही जवाब तब भी आता है जब wallet आगे का उपयोग नहीं उठा सकता और बिलिंग ने फ़ंक्शन को रोक दिया हो।

विवरण चाहिए? Sarpius Functions का दस्तावेज़ देखें।

क्लोज़्ड बीटा

फ़ंक्शन push करें। Project अपने पास रखें।

सर्वरलेस काम को उस code, data, routes और लोगों के पास deploy करें जिनसे वह जुड़ा है। असली execution का भुगतान करें, और अपनी तय सीमा पर अपने आप रुक जाएँ।