---
title: Skaliranje podsistema Data Platform
section: Operations
weight: 1
description: Strategije vertikalnog i horizontalnog skaliranja podsistema Data Platform – orkestracija kontejnera, optimizacija baze podataka, keširanje i skaliranje klijentskog dela.
related:
  - architecture/scalability
  - operations
  - operations/backup-and-restore
  - architecture
---

import Alert from '@/components/docs/Alert.astro';

Kako raste broj korisnika, obim podataka i broj uređaja, Data Platform mora da se skalira. Arhitektura na kojoj se platforma zasniva i potencijal za skaliranje koji je u nju ugrađen opisani su na stranici [Skalabilnost sistema](/sr/platform/v3/architecture/scalability); ova stranica se bavi praktičnim strategijama skaliranja produkcione implementacije.

<Alert type="info">
  U ovom odeljku razmatraju se scenariji skaliranja koji obezbeđuju da sistem pouzdano radi čak
  i pri ekstremnim opterećenjima.
</Alert>

## Strategije skaliranja platforme

```mermaid
flowchart LR
subgraph subGraph0["Strategije skaliranja podsistema Data Platform"]
F["Vertikalno skaliranje"]
A["Aplikacioni serveri (Ruby on Rails)"]
G["Horizontalno skaliranje"]
B["Serveri za prikupljanje podataka (GO)"]
C["Baza podataka PostgreSQL"]
H["Optimizacija baze podataka"]
D["Docker/Kubernetes"]
E["Skaliranje klijentskog dela"]
end
A --> F & G
B --> F & G
C --> F & G & H
D --> B & A
E -- Efficient_Distribution --> D
```

### Vertikalno i horizontalno skaliranje

Platforma podržava dva pristupa skaliranju koji se međusobno dopunjuju: vertikalno skaliranje dodaje računarske resurse postojećim serverima, dok horizontalno skaliranje povećava broj servera.

#### Vertikalno skaliranje

- **Nadogradnja računarskih resursa servera**:
  - Dodajte procesorske resurse (CPU), radnu memoriju (RAM) i SSD skladišni prostor aplikacionim serverima (Ruby on Rails) i serverima za prikupljanje podataka (Go).
  - Povećajte performanse baze podataka PostgreSQL pomoću snažnijih diskovnih nizova i optimizacije indeksa.

- **Prednosti**: jednostavna realizacija, uz minimalne izmene arhitekture.
- **Ograničenja**: fizičke granice pojedinačnih servera i visoki troškovi.

#### Horizontalno skaliranje

- **Dodavanje novih servera**:
  - Ruby on Rails: pokrenite dodatne instance aplikacije iza sistema za uravnoteženje opterećenja (load balancer), na primer Nginx ili HAProxy.
  - Go serveri: lako se skaliraju zahvaljujući višenitnom radu i ugrađenoj podršci za horizontalno skaliranje.
  - PostgreSQL: uvedite replikaciju i šardovanje (sharding) podataka da biste uravnotežili opterećenje.
- **Prednosti**: visoka otpornost na otkaze i praktično neograničena skalabilnost.
- **Ograničenja**: veća složenost upravljanja distribuiranim sistemom.

## Orkestracija kontejnera pomoću alata Kubernetes/Docker Compose

### Prelazak na Kubernetes/Docker Compose

- **Kontejnerizacija aplikacija**:
  - Ruby on Rails i Go serveri pakuju se u Docker kontejnere.
  - Kubernetes/Docker Compose upravlja raspoređivanjem, skaliranjem i praćenjem tih kontejnera.
- **Automatsko skaliranje**:
  - Horizontal Pod Autoscaler (HPA) automatski povećava broj podova u zavisnosti od opterećenja.
  - Cluster Autoscaler dodaje nove čvorove u klaster kada računarski resursi postanu nedovoljni.
- **Prednosti**: visok stepen fleksibilnosti, automatizacije i otpornosti na otkaze.

### Primer arhitekture u okruženju Kubernetes

- **Ingress kontroler**: usmerava zahteve ka Ruby on Rails i Go serverima.
- **StatefulSet**: upravlja replikama baze podataka PostgreSQL koje čuvaju stanje.
- **Mreža servisa (service mesh)**: koristi Istio ili Linkerd za upravljanje mrežnim saobraćajem i povećanje bezbednosti.

### Optimizacija baze podataka

Sloj baze podataka skalira se kombinovanjem replikacije, šardovanja i keširanja.

#### Replikacija i šardovanje baze podataka PostgreSQL

- **Replikacija**:
  - Podesite replikaciju po modelu master-slave da biste raspodelili opterećenje pri čitanju.
  - Za automatsko upravljanje replikacijom koristite alate kao što je Patroni.
- **Šardovanje**:
  - Podelite podatke na više klastera PostgreSQL da biste raspodelili opterećenje pri upisu.
  - Za horizontalno skaliranje baze podataka PostgreSQL koristite Citus.

#### Keširanje

- **Redis ili Memcached**:
  - Keširajte često tražene podatke da biste smanjili opterećenje baze podataka.
  - Integrišite keš sa radnim okvirom Ruby on Rails preko `ActiveSupport::Cache`.

## Skaliranje klijentskog dela

- **Keširanje na klijentskoj strani**:
  - Koristite Service Workers i Cache API za keširanje statičkih resursa.

- **Mreža za isporuku sadržaja (CDN)**:
  - Distribuirajte statičke fajlove preko mreže CDN da biste smanjili opterećenje servera.

## Prednosti predloženog rešenja

- **Visoka otpornost na otkaze**: zahvaljujući alatu Kubernetes/Docker Compose i replikaciji baze podataka PostgreSQL.
- **Fleksibilnost**: novi serveri i mikroservisi lako se dodaju.
- **Automatizacija**: za skaliranje je potrebno minimalno učešće čoveka.
- **Ekonomičnost**: automatsko skaliranje optimizuje korišćenje računarskih resursa.

Opisani scenario skaliranja omogućava telemetrijskom sistemu da efikasno podnosi sve veća opterećenja i obezbeđuje visoke performanse, otpornost na otkaze i fleksibilnost. Uvođenjem ovih savremenih tehnologija platforma postaje spremna za buduće izazove.
