ابرآراز | ArazCloud

استقرار APIهای بدون سرور (Serverless) بر روی سرورهای ابری

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های مقیاس‌پذیر و انعطاف‌پذیر ایجاد کنید و از مدیریت ساده‌تر زیرساخت‌های بدون سرور بهره‌مند شوید.