---
title: Škálovanie Platformy IIoT
section: Operations
weight: 1
description: Stratégie vertikálneho a horizontálneho škálovania pre Platformu IIoT — orchestrácia kontajnerov, optimalizácia databázy, vyrovnávacia pamäť a škálovanie frontendu.
related:
  - architecture/scalability
  - operations
  - operations/backup-and-restore
  - architecture
---

import Alert from '@/components/docs/Alert.astro';

S rastom počtu používateľov, objemu dát a počtu zariadení sa Platforma IIoT musí škálovať. Architektúre, na ktorej je platforma postavená, a jej potenciálu škálovania sa venuje [Škálovateľnosť systému](/sk/platform/v3/architecture/scalability); táto stránka sa zameriava na praktické stratégie škálovania produkčného nasadenia.

<Alert type="info">
  Táto časť rozoberá scenáre škálovania, ktoré udržia systém spoľahlivo funkčný aj pri extrémnej
  záťaži.
</Alert>

## Stratégie škálovania platformy

```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
```

### Vertikálne a horizontálne škálovanie

Platforma podporuje dva navzájom sa dopĺňajúce prístupy ku škálovaniu: vertikálne škálovanie pridáva zdroje existujúcim serverom, kým horizontálne škálovanie pridáva ďalšie servery.

#### Vertikálne škálovanie

- **Navýšenie serverových zdrojov**:
  - Pridanie CPU, RAM a SSD úložiska aplikačným serverom (Ruby on Rails) a serverom na zber dát (Go).
  - Zvýšenie výkonu PostgreSQL pomocou výkonnejších diskových polí a optimalizácie indexov.

- **Prínosy**: Jednoduchá implementácia s minimálnymi zásahmi do architektúry.
- **Obmedzenia**: Fyzické limity jednotlivých serverov a vysoké náklady.

#### Horizontálne škálovanie

- **Pridávanie nových serverov**:
  - Ruby on Rails: nasadenie ďalších inštancií aplikácie za vyrovnávač záťaže (napríklad Nginx alebo HAProxy).
  - Servery Go: jednoduché škálovanie vďaka viacvláknovosti a vstavanej podpore horizontálneho škálovania.
  - PostgreSQL: replikácia a shardovanie dát na vyváženie záťaže.
- **Prínosy**: Vysoká odolnosť voči chybám a prakticky neobmedzená škálovateľnosť.
- **Obmedzenia**: Vyššia zložitosť správy distribuovaného systému.

## Použitie Kubernetes/Docker Compose na orchestráciu kontajnerov

### Migrácia na Kubernetes/Docker Compose

- **Kontajnerizácia aplikácie**:
  - Servery Ruby on Rails a Go sú zabalené do kontajnerov Docker.
  - Kubernetes/Docker Compose riadi nasadenie, škálovanie a monitorovanie týchto kontajnerov.
- **Automatické škálovanie**:
  - Horizontal Pod Autoscaler (HPA) automaticky zvyšuje počet podov na základe záťaže.
  - Cluster Autoscaler pridáva do klastra nové uzly, keď je zdrojov nedostatok.
- **Prínosy**: Vysoká flexibilita, automatizácia a odolnosť voči chybám.

### Príklad architektúry na Kubernetes

- **Ingress Controller**: smeruje požiadavky na servery Ruby on Rails a Go.
- **StatefulSets**: spravujú stavové repliky PostgreSQL.
- **Service Mesh**: využíva Istio alebo Linkerd na riadenie prevádzky a zvýšenie bezpečnosti.

### Optimalizácia databázy

Databázová vrstva sa škáluje kombináciou replikácie, shardovania a vyrovnávacej pamäte.

#### Replikácia a shardovanie PostgreSQL

- **Replikácia**:
  - Nastavenie replikácie typu master-slave na rozloženie záťaže pri čítaní.
  - Použitie nástrojov ako Patroni na automatickú správu replikácie.
- **Shardovanie**:
  - Rozdelenie dát medzi viaceré klastre PostgreSQL na rozloženie záťaže pri zápise.
  - Použitie Citus na horizontálne škálovanie PostgreSQL.

#### Vyrovnávacia pamäť

- **Redis alebo Memcached**:
  - Ukladanie často vyžadovaných dát do vyrovnávacej pamäte na zníženie záťaže databázy.
  - Integrácia s Ruby on Rails prostredníctvom `ActiveSupport::Cache`.

## Škálovanie frontendu

- **Vyrovnávacia pamäť na strane klienta**:
  - Použitie Service Workers a Cache API na ukladanie statických zdrojov do vyrovnávacej pamäte.

- **CDN (Content Delivery Network)**:
  - Distribúcia statických súborov cez CDN na zníženie záťaže serverov.

## Výhody navrhovaného riešenia

- **Vysoká odolnosť voči chybám**: vďaka Kubernetes/Docker Compose a replikácii PostgreSQL.
- **Flexibilita**: nové servery a mikroslužby sa dajú jednoducho pridať.
- **Automatizácia**: škálovanie si vyžaduje minimálny zásah človeka.
- **Hospodárnosť**: využitie zdrojov je optimalizované automatickým škálovaním.

Vyššie opísaný scenár škálovania umožňuje telemetrickému systému efektívne zvládať rastúcu záťaž a poskytuje vysoký výkon, odolnosť voči chybám a flexibilitu. Prijatím týchto moderných technológií je platforma pripravená na budúce výzvy.
