---
title: Škálování Platformy IIoT
section: Operations
weight: 1
description: Strategie vertikálního a horizontálního škálování Platformy IIoT — orchestrace kontejnerů, optimalizace databáze, ukládání do mezipaměti a škálování frontendu.
related:
  - architecture/scalability
  - operations
  - operations/backup-and-restore
  - architecture
---

import Alert from '@/components/docs/Alert.astro';

S rostoucím počtem uživatelů, objemem dat a počtem zařízení je nutné Platformu IIoT škálovat. Architektura, na níž je postavena, a její základní potenciál škálovatelnosti jsou popsány v kapitole [Škálovatelnost systému](/cs/platform/v3/architecture/scalability); tato stránka se zaměřuje na praktické strategie škálování produkčního nasazení.

<Alert type="info">
  Tato kapitola se zabývá scénáři škálování, které udržují spolehlivý výkon systému i při extrémním
  zatížení.
</Alert>

## Strategie škálování 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ální a horizontální škálování

Platforma podporuje dva vzájemně se doplňující přístupy ke škálování: vertikální škálování přidává prostředky stávajícím serverům, zatímco horizontální škálování přidává další servery.

#### Vertikální škálování

- **Navýšení serverových prostředků**:
  - Přidání CPU, RAM a SSD úložiště aplikačním serverům (Ruby on Rails) a serverům pro sběr dat (Go).
  - Zvýšení výkonu PostgreSQL prostřednictvím výkonnějších diskových polí a optimalizace indexů.

- **Výhody**: Snadná realizace s minimálními zásahy do architektury.
- **Omezení**: Fyzické limity jednotlivých serverů a vysoké náklady.

#### Horizontální škálování

- **Přidávání nových serverů**:
  - Ruby on Rails: nasazení dalších instancí aplikace za nástroj pro vyvažování zátěže (například Nginx nebo HAProxy).
  - Servery Go: snadné škálování díky vícevláknovému zpracování a vestavěné podpoře horizontálního škálování.
  - PostgreSQL: replikace a šardování dat pro vyvážení zátěže.
- **Výhody**: Vysoká odolnost proti chybám a prakticky neomezená škálovatelnost.
- **Omezení**: Vyšší složitost správy distribuovaného systému.

## Využití Kubernetes/Docker Compose pro orchestraci kontejnerů

### Přechod na Kubernetes/Docker Compose

- **Kontejnerizace aplikací**:
  - Servery Ruby on Rails a Go jsou zabaleny do kontejnerů Docker.
  - Kubernetes/Docker Compose řídí nasazení, škálování a monitorování těchto kontejnerů.
- **Automatické škálování**:
  - Horizontal Pod Autoscaler (HPA) automaticky zvyšuje počet podů podle zatížení.
  - Cluster Autoscaler přidává do clusteru nové uzly, jakmile začínají docházet prostředky.
- **Výhody**: Vysoká flexibilita, automatizace a odolnost proti chybám.

### Příklad architektury na Kubernetes

- **Ingress Controller**: směruje požadavky na servery Ruby on Rails a Go.
- **StatefulSets**: spravují stavové repliky PostgreSQL.
- **Service Mesh**: využívá Istio nebo Linkerd ke správě provozu a zvýšení bezpečnosti.

### Optimalizace databáze

Databázová vrstva se škáluje kombinací replikace, šardování a ukládání do mezipaměti.

#### Replikace a šardování PostgreSQL

- **Replikace**:
  - Konfigurace replikace master-slave pro rozložení zátěže čtení.
  - Použití nástrojů jako Patroni pro automatickou správu replikace.
- **Šardování**:
  - Rozdělení dat mezi více clusterů PostgreSQL pro rozložení zátěže zápisu.
  - Použití Citus pro horizontální škálování PostgreSQL.

#### Ukládání do mezipaměti

- **Redis nebo Memcached**:
  - Ukládání často požadovaných dat do mezipaměti pro snížení zátěže databáze.
  - Integrace s Ruby on Rails prostřednictvím `ActiveSupport::Cache`.

## Škálování frontendu

- **Ukládání do mezipaměti na straně klienta**:
  - Použití Service Workers a Cache API pro ukládání statických prostředků do mezipaměti.

- **CDN (Content Delivery Network)**:
  - Distribuce statických souborů prostřednictvím CDN pro snížení zátěže serverů.

## Přednosti navrhovaného řešení

- **Vysoká odolnost proti chybám**: díky Kubernetes/Docker Compose a replikaci PostgreSQL.
- **Flexibilita**: snadné přidávání nových serverů a mikroslužeb.
- **Automatizace**: škálování vyžaduje minimální lidský zásah.
- **Hospodárnost**: využití prostředků je optimalizováno automatickým škálováním.

Výše popsaný scénář škálování umožňuje telemetrickému systému efektivně zvládat rostoucí zátěž a zajišťuje vysoký výkon, odolnost proti chybám a flexibilitu. Díky nasazení těchto moderních technologií je platforma připravena na budoucí výzvy.
