Serverless چیست؟
Serverless یک مدل اجرایی از محاسبات ابری است که در آن سرویسدهنده ابری به صورت پویا سرویسهای تخصیص داده شده به یک پروژه را مدیریت میکند. در چنین حالتی تمام هزینهها براساس میزان مصرفی خواهد بود که شما از سیستم میکنید. بنابراین دیگر خبری از مدلهای پرداختی قدیمی که در آن شما قبل از استفاده از سیستم هزینهای پرداخت میکردید نیست. به نظر میرسد که خیلی ایدهآل است!
بسیاری از سرویسدهندگان ابری در دنیا روی این تکنولوژی سرمایهگذاری کردهاند. به نظر نیز میرسد که استفاده از این ساختار روز به روز در حال افزایش بوده و همین موضوع بالا رفتن تعداد سرویسدهندگان را نیز توجیه میکند.
یکی از شرکت های ارائه دهنده خدمات FaaS شرکت Cloudflare می باشد که این امکان را در قالب Cloudflare Workers فراهم آورده است. Workers ها توابع از پیش آماده ای هستند که توسط کلود فلیر ارائه می شوند. به منظور ایجاد چنین سناریویی هم در کلودفلیر یک Worker وجود دارد. شما کافی ست تنها با پرداخت هزینه اندک یا استفاده از سرویس رایگان استفاده از این ورکر این سناریو را پیاده سازی نمایید!
برای شروع داشتن اکانت کلاد فلیر کافی هست، اگر ندارید ثبت نام کنید. بعد از ورود وارد قسمت workers بشید، در مرحله ی اول یک ساب دامین برای خود انتخاب کنید، در مرحله ی بعد پلن رایگان را انتخاب کنید، اگر ایمیل خود را وریفای نکرده باشید، از شما میخواد تا این کار را انجام دهید.
در ادامه باید یک ورکر ایجاد کنید، بعد از ایجاد ورکر دو راه برای دیپلوی کردن کد دارید، اولین حالت از طریق پنل وب و ide که خود سایت در اختیار شما میگذاره و بیشتر برای تست و آشنایی هست، و دومی از طریق Command Line که برای اینکار باید از اپلیکیشن wrangler استفاده کنید، طبق راهنما ی نصب جلو برید، (بعد از نصب به صورت اتوماتیک از شما میخواد تا به اکانت کلاد فلیرتون لاگین کنید، اگه یه هر دلیلی نتونستین لاگین کنید از دستور wrangler login استفاده کنید.) پیشنهاد میکنم حتما از داکیومنت خود کلاد فلیر استفاده کنین. این روش خیلی اصولی تر هست.
محدودیت های پلن فری رو میتونید اینجا ببینید.
برای نمونه این آموزش رو که مربوط به تولید کد QR هست رو با هم جلو میریم.
1-استارت پروژه ی نمونه: wrangler generate qr-code-generator $ cd qr-code-generator $
در ادامه پکیج مربوط به generate qr code رو نصب میکنیم.
$ npm install --save qr-image
برای دیپلود کردن Wrangler را مجبور به استفاده از webpack میکنیم، و account_id را از پنل کلاد فلیر بر میداریم. فایل wrangler.toml باید به این صورت باشد.
wrangler.toml name = "qr-code-generator" account_id = "" yourAccountId"type = "webpack"
فایل index.js را آپدیت میکنیم.
index.js const qr = require("qr-image")async function generate(request) {const { text } = await request.json()const headers = { "Content-Type": "image/png" }const qr_png = qr.imageSync(text || "https://workers.dev")return new Response(qr_png, { headers })}const landing = `<h1>QR Generator</h1><p>Click the below button to generate a new QR code. This will make a request to your serverless function.</p><input type="text" id="text" value="https://workers.dev"></input><button ="generate()">Generate QR Code</button><p>Check the "Network" tab in your browser’s developer tools to see the generated QR code.</p>function generate() {fetch.pathname, {method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({ text: document.querySelector("#text").value })})}`function handleRequest(request) {if (request.method === "POST") {return generate(request)}return new Response(landing, {headers: {"Content-Type": "text/html"}})}addEventListener("fetch", event => {event.respondWith(handleRequest(event.request))})
در این مرحله میتوانیم کد را دیپلوی بکنیم.
$ wrangler publish
بعد از اتمام دیپلوی در آخر به شما یک لینک میده که با اون میتونین به اپ دسترسی داشته باشین.