---
title: مقیاس‌بندی پلتفرم IIoT
section: Operations
weight: 1
description: راهبردهای مقیاس‌بندی عمودی و افقی برای پلتفرم IIoT — هماهنگ‌سازی کانتینرها، بهینه‌سازی پایگاه داده، کش‌گذاری و مقیاس‌بندی فرانت‌اند.
related:
  - architecture/scalability
  - operations
  - operations/backup-and-restore
  - architecture
---

import Alert from '@/components/docs/Alert.astro';

با افزایش تعداد کاربران، حجم داده‌ها و شمار دستگاه‌ها، پلتفرم IIoT باید مقیاس‌پذیر شود. معماری‌ای که پلتفرم بر پایه آن ساخته شده و ظرفیت مقیاس‌پذیری بنیادین آن در [مقیاس‌پذیری سامانه](/fa/platform/v3/architecture/scalability) شرح داده شده است؛ این صفحه بر راهبردهای عملی برای مقیاس‌بندی یک استقرار تولیدی تمرکز دارد.

<Alert type="info">
  این بخش سناریوهای مقیاس‌بندی‌ای را بررسی می‌کند که عملکرد قابل‌اتکای سامانه را حتی در شرایط بارهای
  بسیار سنگین حفظ می‌کنند.
</Alert>

## راهبردهای مقیاس‌بندی پلتفرم

```mermaid
flowchart LR
subgraph subGraph0["IIoT Platform Scaling Strategies"]
F["Vertical Scaling"]
A["Application Servers (Ruby on Rails)"]
G["Horizontal Scaling"]
B["Data Collection Servers (GO)"]
C["PostgreSQL Database"]
H["Database Optimization"]
D["Docker/Kubernetes"]
E["Frontend Scaling"]
end
A --> F & G
B --> F & G
C --> F & G & H
D --> B & A
E -- Efficient_Distribution --> D
```

### مقیاس‌بندی عمودی و افقی

پلتفرم از دو رویکرد مقیاس‌بندی مکمل پشتیبانی می‌کند: مقیاس‌بندی عمودی منابع را به سرورهای موجود می‌افزاید، در حالی که مقیاس‌بندی افقی سرورهای بیشتری اضافه می‌کند.

#### مقیاس‌بندی عمودی

- **ارتقای منابع سرور**:
  - افزودن CPU، RAM و حافظه SSD به سرورهای برنامه (Ruby on Rails) و سرورهای جمع‌آوری داده (Go).
  - افزایش کارایی PostgreSQL از طریق آرایه‌های دیسک قدرتمندتر و بهینه‌سازی نمایه‌ها.

- **مزایا**: پیاده‌سازی ساده، با کمترین تغییرات در معماری.
- **محدودیت‌ها**: محدودیت‌های فیزیکی هر سرور و هزینه بالا.

#### مقیاس‌بندی افقی

- **افزودن سرورهای جدید**:
  - Ruby on Rails: استقرار نمونه‌های اضافی برنامه پشت یک متعادل‌کننده بار (برای مثال، Nginx یا HAProxy).
  - سرورهای Go: به‌لطف چندنخی و پشتیبانی توکار از مقیاس‌بندی افقی، به‌آسانی مقیاس‌پذیر می‌شوند.
  - PostgreSQL: تکثیر و قطعه‌قطعه‌سازی داده‌ها برای متعادل کردن بار.
- **مزایا**: تحمل خطای بالا و مقیاس‌پذیری عملاً نامحدود.
- **محدودیت‌ها**: پیچیدگی افزوده ناشی از مدیریت یک سامانه توزیع‌شده.

## استفاده از Kubernetes/Docker Compose برای هماهنگ‌سازی کانتینرها

### مهاجرت به Kubernetes/Docker Compose

- **کانتینری‌سازی برنامه**:
  - سرورهای Ruby on Rails و Go در کانتینرهای Docker بسته‌بندی می‌شوند.
  - Kubernetes/Docker Compose استقرار، مقیاس‌بندی و پایش این کانتینرها را مدیریت می‌کند.
- **مقیاس‌بندی خودکار**:
  - Horizontal Pod Autoscaler (HPA) تعداد podها را بر اساس بار به‌صورت خودکار افزایش می‌دهد.
  - Cluster Autoscaler هنگام کمبود منابع، گره‌های جدیدی به خوشه می‌افزاید.
- **مزایا**: انعطاف‌پذیری بالا، خودکارسازی و تحمل خطا.

### نمونه معماری بر روی Kubernetes

- **Ingress Controller**: درخواست‌ها را به سرورهای Ruby on Rails و Go مسیریابی می‌کند.
- **StatefulSets**: نمونه‌های تکثیر حالت‌دار PostgreSQL را مدیریت می‌کند.
- **Service Mesh**: از Istio یا Linkerd برای مدیریت ترافیک و بهبود امنیت استفاده می‌کند.

### بهینه‌سازی پایگاه داده

لایه پایگاه داده از طریق ترکیبی از تکثیر، قطعه‌قطعه‌سازی و کش‌گذاری مقیاس‌پذیر می‌شود.

#### تکثیر و قطعه‌قطعه‌سازی PostgreSQL

- **تکثیر**:
  - پیکربندی تکثیر اصلی-فرعی (master-slave) برای توزیع بار خواندن.
  - استفاده از ابزارهایی مانند Patroni برای مدیریت خودکار تکثیر.
- **قطعه‌قطعه‌سازی**:
  - تقسیم داده‌ها میان چندین خوشه PostgreSQL برای توزیع بار نوشتن.
  - استفاده از Citus برای مقیاس‌بندی افقی PostgreSQL.

#### کش‌گذاری

- **Redis یا Memcached**:
  - کش کردن داده‌های پرتقاضا برای کاهش بار پایگاه داده.
  - یکپارچه‌سازی با Ruby on Rails از طریق `ActiveSupport::Cache`.

## مقیاس‌بندی فرانت‌اند

- **کش‌گذاری سمت کلاینت**:
  - استفاده از Service Workerها و Cache API برای کش کردن منابع ایستا.

- **CDN (شبکه تحویل محتوا)**:
  - توزیع فایل‌های ایستا از طریق یک CDN برای کاهش بار روی سرورها.

## مزایای راهکار پیشنهادی

- **تحمل خطای بالا**: به‌لطف Kubernetes/Docker Compose و تکثیر PostgreSQL.
- **انعطاف‌پذیری**: افزودن سرورها و میکروسرویس‌های جدید آسان است.
- **خودکارسازی**: مقیاس‌بندی به کمترین دخالت انسانی نیاز دارد.
- **مقرون‌به‌صرفه بودن**: مصرف منابع از طریق مقیاس‌بندی خودکار بهینه می‌شود.

سناریوی مقیاس‌بندی شرح‌داده‌شده در بالا به سامانه تله‌متری اجازه می‌دهد بارهای روبه‌رشد را به‌طور مؤثر مدیریت کند و کارایی بالا، تحمل خطا و انعطاف‌پذیری را فراهم آورد. با به‌کارگیری این فناوری‌های نوین، پلتفرم برای چالش‌های آینده آماده است.
