APIهای بدون سرور (Serverless APIs) به توسعهدهندگان این امکان را میدهند تا برنامهها و سرویسهای خود را بدون نیاز به مدیریت زیرساختها، در مقیاس بزرگ و به صورت کارآمد پیادهسازی و اجرا کنند. در این مستندات، به نحوه استقرار APIهای بدون سرور بر روی سرورهای ابری پرداخته میشود. این راهنما شامل مراحل پیادهسازی، پیکربندی و اجرای Serverless APIs با استفاده از ابزارهای محبوب و متنباز است.
الزامات
- سرور ابری با دسترسی ریشه (Root Access)
- سیستمعامل اوبونتو ۲۰.۰۴ یا بالاتر
- نصب Docker برای مدیریت و اجرای کانتینرها
- آشنایی با زبان برنامهنویسی جاوا اسکریپت (Node.js) و فریمورکهای Serverless مانند OpenFaaS یا Fission
۱. مقدمهای بر APIهای بدون سرور
APIهای بدون سرور به معنای اجرای توابع و برنامهها بدون نیاز به مدیریت سرورها است. در این مدل، برنامهها و توابع به صورت توزیعشده اجرا میشوند و به طور خودکار براساس نیاز مقیاسدهی میشوند. به این ترتیب، توسعهدهندگان تنها بر روی کد و منطق برنامه تمرکز میکنند و مدیریت زیرساخت به عهده پلتفرم Serverless است.
مزایای APIهای بدون سرور
- مقیاسپذیری خودکار: APIهای بدون سرور میتوانند به صورت خودکار براساس بار کاری مقیاسدهی شوند.
- هزینه بر اساس استفاده: شما فقط برای زمان اجرای توابع هزینه پرداخت میکنید.
- مدیریت کمتر: نیازی به مدیریت سرورهای فیزیکی یا مجازی نیست.
۲. پیادهسازی API بدون سرور با OpenFaaS
OpenFaaS یکی از فریمورکهای محبوب برای ایجاد و مدیریت توابع بدون سرور است. در این بخش به نحوه استقرار APIهای بدون سرور با استفاده از OpenFaaS پرداخته میشود.
مرحله ۱: نصب Docker و Docker Compose
ابتدا Docker و Docker Compose را بر روی سرور نصب کنید:
sudo apt-get update
sudo apt-get install -y docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
مرحله ۲: نصب OpenFaaS
برای نصب OpenFaaS، ابتدا از GitHub نسخه مربوطه را دریافت کرده و فایلهای Docker Compose را اجرا کنید:
git clone https://github.com/openfaas/faas
cd faas
./deploy_stack.sh
این اسکریپت OpenFaaS را با استفاده از Docker Compose راهاندازی میکند. پس از اجرای اسکریپت، OpenFaaS بر روی سرور شما در حال اجرا خواهد بود.
مرحله ۳: دسترسی به OpenFaaS
برای دسترسی به OpenFaaS، به آدرس سرور خود در پورت ۸۰۸۰ متصل شوید:
http://<server-ip>:8080
مرحله ۴: ایجاد یک تابع بدون سرور
با استفاده از CLI OpenFaaS میتوانید توابع جدید ایجاد و اجرا کنید. ابتدا OpenFaaS CLI را نصب کنید:
curl -sL https://cli.openfaas.com | sudo sh
سپس با استفاده از دستور زیر یک تابع جدید به نام nodejs-api
ایجاد کنید:
faas-cli new --lang node12 nodejs-api
مرحله ۵: نوشتن کد تابع
به فایل handler.js
مراجعه کنید و کد تابع را برای API خود پیادهسازی کنید. به عنوان مثال، یک API ساده برای برگرداندن پیامی:
module.exports = async (event, context) => {
const result = {
status: "Success",
message: "Hello from your Serverless API!"
}
return context
.status(200)
.succeed(result)
}
مرحله ۶: ساخت و استقرار تابع
برای ساخت و استقرار تابع، از دستور زیر استفاده کنید:
faas-cli up -f nodejs-api.yml
این دستور تابع را ایجاد کرده و آن را در محیط OpenFaaS استقرار میدهد.
مرحله ۷: فراخوانی API
پس از استقرار تابع، میتوانید API را با استفاده از curl
فراخوانی کنید:
curl http://<server-ip>:8080/function/nodejs-api
این دستور نتیجه API شما را به صورت JSON باز میگرداند.
۳. پیادهسازی API بدون سرور با Fission
Fission یکی دیگر از فریمورکهای متنباز برای ایجاد و مدیریت توابع بدون سرور است که بر روی Kubernetes کار میکند. در این بخش به نحوه استقرار APIهای بدون سرور با استفاده از Fission پرداخته میشود.
مرحله ۱: نصب Kubernetes
ابتدا Kubernetes را بر روی سرور خود نصب کنید. برای نصب سریع Kubernetes از kubectl
استفاده کنید:
sudo apt-get update
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo kubeadm init
پس از نصب، Kubernetes را پیکربندی کنید:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
مرحله ۲: نصب Fission
برای نصب Fission، از helm
استفاده کنید:
helm repo add fission-charts https://fission.github.io/fission-charts/
helm install --namespace fission --create-namespace fission fission-charts/fission-all
مرحله ۳: ایجاد یک تابع Fission
برای ایجاد یک تابع در Fission، ابتدا کد تابع را به صورت محلی ایجاد کنید. به عنوان مثال، یک فایل به نام hello.js
با محتوای زیر ایجاد کنید:
module.exports = async function(context) {
return {
status: 200,
body: "Hello from Fission!"
};
}
مرحله ۴: استقرار تابع در Fission
تابع را با استفاده از Fission CLI به Kubernetes ارسال کنید:
fission fn create --name hello --env nodejs --code hello.js
مرحله ۵: ایجاد یک مسیر HTTP برای API
برای دسترسی به تابع از طریق HTTP، یک مسیر HTTP ایجاد کنید:
fission route create --method GET --url /hello --function hello
مرحله ۶: فراخوانی API
پس از ایجاد مسیر، میتوانید API را با استفاده از curl
فراخوانی کنید:
curl http://<server-ip>:<Fission_port>/hello
این دستور پیام “Hello from Fission!” را از API شما باز میگرداند.
۴. امنیت و بهینهسازی APIهای بدون سرور
مرحله ۱: استفاده از TLS برای ارتباط ایمن
برای امنیت بیشتر، از TLS برای رمزنگاری ارتباطات استفاده کنید. برای این منظور، میتوانید از Let’s Encrypt برای دریافت گواهینامههای رایگان TLS استفاده کنید:
sudo apt-get install certbot
sudo certbot certonly --standalone -d <your-domain>
مرحله ۲: مقیاسگذاری خودکار
فریمورکهای بدون سرور مانند OpenFaaS و Fission از مقیاسگذاری خودکار براساس بار کاری پشتیبانی میکنند. این قابلیت باعث میشود توابع شما براساس نیاز به صورت خودکار مقیاسگذاری شوند و منابع سرور بهینهتر مصرف شوند.
نتیجهگیری
در این مستندات، به بررسی نحوه استقرار APIهای بدون سرور بر روی سرورهای ابری با استفاده از فریمورکهای متنباز OpenFaaS و Fission پرداخته شد. با استفاده از این فریمورکها، میتوانید APIهای مقیاسپذیر و انعطافپذیر ایجاد کنید و از مدیریت سادهتر زیرساختهای بدون سرور بهرهمند شوید.