---
title: Skaliranje podsustava Data Platform
section: Operations
weight: 1
description: Strategije vertikalnog i horizontalnog skaliranja podsustava Data Platform – orkestracija kontejnera, optimizacija baze podataka, predmemoriranje i skaliranje klijentske strane.
related:
  - architecture/scalability
  - operations
  - operations/backup-and-restore
  - architecture
---

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

Kako raste broj korisnika, obujam podataka i broj uređaja, Data Platform se mora skalirati. Arhitektura na kojoj se platforma temelji i potencijal za skaliranje koji je u nju ugrađen opisani su na stranici [Skalabilnost sustava](/hr/platform/v3/architecture/scalability); ova se stranica bavi praktičnim strategijama skaliranja produkcijske implementacije.

<Alert type="info">
  U ovom se odjeljku razmatraju scenariji skaliranja koji osiguravaju da sustav pouzdano radi čak
  i pri ekstremnim opterećenjima.
</Alert>

## Strategije skaliranja platforme

```mermaid
flowchart LR
subgraph subGraph0["Strategije skaliranja podsustava Data Platform"]
F["Vertikalno skaliranje"]
A["Aplikacijski poslužitelji (Ruby on Rails)"]
G["Horizontalno skaliranje"]
B["Poslužitelji za prikupljanje podataka (GO)"]
C["Baza podataka PostgreSQL"]
H["Optimizacija baze podataka"]
D["Docker/Kubernetes"]
E["Skaliranje klijentske strane"]
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čunalne resurse postojećim poslužiteljima, dok horizontalno skaliranje povećava broj poslužitelja.

#### Vertikalno skaliranje

- **Nadogradnja računalnih resursa poslužitelja**:
  - Dodajte procesorske resurse (CPU), radnu memoriju (RAM) i SSD prostor za pohranu aplikacijskim poslužiteljima (Ruby on Rails) i poslužiteljima za prikupljanje podataka (Go).
  - Povećajte performanse baze podataka PostgreSQL pomoću snažnijih diskovnih polja i optimizacije indeksa.

- **Prednosti**: jednostavna provedba, uz minimalne izmjene arhitekture.
- **Ograničenja**: fizičke granice pojedinačnih poslužitelja i visoki troškovi.

#### Horizontalno skaliranje

- **Dodavanje novih poslužitelja**:
  - Ruby on Rails: pokrenite dodatne instance aplikacije iza sustava za uravnoteženje opterećenja (load balancer), na primjer Nginx ili HAProxy.
  - Go poslužitelji: lako se skaliraju zahvaljujući višedretvenom radu i ugrađenoj podršci za horizontalno skaliranje.
  - PostgreSQL: uvedite replikaciju i horizontalno particioniranje (sharding) podataka kako biste uravnotežili opterećenje.
- **Prednosti**: visoka otpornost na kvarove i praktički neograničena skalabilnost.
- **Ograničenja**: veća složenost upravljanja distribuiranim sustavom.

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

### Prijelaz na Kubernetes/Docker Compose

- **Kontejnerizacija aplikacija**:
  - Ruby on Rails i Go poslužitelji pakiraju se u Docker kontejnere.
  - Kubernetes/Docker Compose upravlja postavljanjem, skaliranjem i nadzorom tih kontejnera.
- **Automatsko skaliranje**:
  - Horizontal Pod Autoscaler (HPA) automatski povećava broj podova ovisno o opterećenju.
  - Cluster Autoscaler dodaje nove čvorove u klaster kada računalni resursi postanu nedostatni.
- **Prednosti**: visok stupanj fleksibilnosti, automatizacije i otpornosti na kvarove.

### Primjer arhitekture u okruženju Kubernetes

- **Ingress kontroler**: usmjerava zahtjeve prema Ruby on Rails i Go poslužiteljima.
- **StatefulSet**: upravlja replikama baze podataka PostgreSQL koje čuvaju stanje.
- **Mreža usluga (service mesh)**: koristi Istio ili Linkerd za upravljanje mrežnim prometom i povećanje sigurnosti.

### Optimizacija baze podataka

Sloj baze podataka skalira se kombiniranjem replikacije, horizontalnog particioniranja i predmemoriranja.

#### Replikacija i horizontalno particioniranje baze podataka PostgreSQL

- **Replikacija**:
  - Konfigurirajte replikaciju po modelu master-slave kako biste raspodijelili opterećenje pri čitanju.
  - Za automatsko upravljanje replikacijom koristite alate kao što je Patroni.
- **Horizontalno particioniranje**:
  - Podijelite podatke na više klastera PostgreSQL kako biste raspodijelili opterećenje pri upisu.
  - Za horizontalno skaliranje baze podataka PostgreSQL koristite Citus.

#### Predmemoriranje

- **Redis ili Memcached**:
  - Predmemorirajte često tražene podatke kako biste smanjili opterećenje baze podataka.
  - Integrirajte predmemoriju s radnim okvirom Ruby on Rails putem `ActiveSupport::Cache`.

## Skaliranje klijentske strane

- **Predmemoriranje na klijentskoj strani**:
  - Koristite Service Workers i Cache API za predmemoriranje statičkih resursa.

- **Mreža za isporuku sadržaja (CDN)**:
  - Distribuirajte statičke datoteke putem mreže CDN kako biste smanjili opterećenje poslužitelja.

## Prednosti predloženog rješenja

- **Visoka otpornost na kvarove**: zahvaljujući alatu Kubernetes/Docker Compose i replikaciji baze podataka PostgreSQL.
- **Fleksibilnost**: novi poslužitelji i mikrousluge lako se dodaju.
- **Automatizacija**: za skaliranje je potrebno minimalno sudjelovanje čovjeka.
- **Ekonomičnost**: automatsko skaliranje optimizira korištenje računalnih resursa.

Opisani scenarij skaliranja omogućuje telemetrijskom sustavu da učinkovito podnosi sve veća opterećenja i osigurava visoke performanse, otpornost na kvarove i fleksibilnost. Uvođenjem ovih suvremenih tehnologija platforma postaje spremna za buduće izazove.
