Introducció
L'escalabilitat és un aspecte crític en el disseny d'arquitectures de sistemes, ja que determina la capacitat d'un sistema per gestionar un augment de càrrega de treball. Hi ha dues formes principals d'escalabilitat: horitzontal i vertical. Aquest tema explorarà amb detall aquests dos tipus d'escalabilitat, els seus avantatges i desavantatges, i com implementar-los en sistemes reals.
Escalabilitat Horitzontal
Definició
L'escalabilitat horitzontal, també coneguda com a "scale-out", implica afegir més unitats de recursos (com ara servidors) per distribuir la càrrega de treball. En lloc de millorar la capacitat d'un sol servidor, es distribueix la càrrega entre diversos servidors.
Avantatges
- Redundància i Alta Disponibilitat: Afegir més servidors pot proporcionar redundància, millorant la disponibilitat del sistema.
- Flexibilitat: És més fàcil afegir o eliminar servidors segons les necessitats de càrrega.
- Costos: Pot ser més econòmic afegir múltiples servidors petits en lloc d'un servidor gran i potent.
Desavantatges
- Complexitat: Requereix mecanismes de balanceig de càrrega i coordinació entre servidors.
- Latència: Pot augmentar la latència de comunicació entre servidors.
- Consistència: Mantenir la consistència de dades pot ser més complicat en un sistema distribuït.
Implementació
Exemple de Codi: Balanceig de Càrrega amb Nginx
http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; } } }
Explicació:
- upstream backend: Defineix un grup de servidors backend.
- server: Defineix cada servidor backend.
- proxy_pass: Redirigeix les sol·licituds al grup de servidors backend.
Escalabilitat Vertical
Definició
L'escalabilitat vertical, també coneguda com a "scale-up", implica augmentar la capacitat d'un sol servidor afegint més recursos (com ara CPU, memòria o emmagatzematge).
Avantatges
- Simplicitat: És més fàcil d'implementar, ja que no requereix canvis en l'arquitectura del sistema.
- Latència: Pot reduir la latència, ja que totes les operacions es realitzen en un sol servidor.
- Consistència: Mantenir la consistència de dades és més senzill en un sistema centralitzat.
Desavantatges
- Límits Físics: Hi ha un límit en la quantitat de recursos que es poden afegir a un sol servidor.
- Costos: Pot ser més costós augmentar la capacitat d'un sol servidor potent en comparació amb afegir múltiples servidors petits.
- Punt Únic de Fallada: Si el servidor falla, tot el sistema pot quedar inoperatiu.
Implementació
Exemple de Codi: Configuració de Memòria en un Servidor MySQL
Explicació:
- innodb_buffer_pool_size: Augmenta la mida del buffer pool per millorar el rendiment de les operacions de lectura/escriptura.
- max_connections: Augmenta el nombre màxim de connexions simultànies que el servidor pot gestionar.
Comparació entre Escalabilitat Horitzontal i Vertical
Característica | Escalabilitat Horitzontal | Escalabilitat Vertical |
---|---|---|
Complexitat | Alta | Baixa |
Costos | Variable | Alt |
Latència | Pot augmentar | Pot disminuir |
Redundància | Alta | Baixa |
Límits Físics | No | Sí |
Consistència de Dades | Més difícil | Més fàcil |
Exercicis Pràctics
Exercici 1: Configuració de Balanceig de Càrrega
Descripció: Configura un balancejador de càrrega utilitzant Nginx per distribuir les sol·licituds entre tres servidors backend.
Solució:
http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; location / { proxy_pass http://backend; } } }
Exercici 2: Augment de la Capacitat d'un Servidor MySQL
Descripció: Augmenta la capacitat d'un servidor MySQL ajustant els paràmetres de configuració per millorar el rendiment.
Solució:
Resum
En aquesta secció, hem explorat els conceptes d'escalabilitat horitzontal i vertical, els seus avantatges i desavantatges, i com implementar-los en sistemes reals. Hem vist exemples pràctics de configuració de balanceig de càrrega amb Nginx i ajustament de paràmetres en un servidor MySQL. Amb aquests coneixements, estàs preparat per dissenyar sistemes escalables que puguin gestionar increments de càrrega de manera eficient.
Arquitectures de Sistemes: Principis i Pràctiques per Dissenyar Arquitectures Tecnològiques Robustes i Escalables
Mòdul 1: Introducció a les Arquitectures de Sistemes
- Conceptes Bàsics d'Arquitectura de Sistemes
- Importància d'una Bona Arquitectura
- Tipus d'Arquitectures de Sistemes
Mòdul 2: Principis de Disseny d'Arquitectures
Mòdul 3: Components d'una Arquitectura de Sistemes
Mòdul 4: Escalabilitat i Rendiment
Mòdul 5: Seguretat en Arquitectures de Sistemes
Mòdul 6: Eines i Tecnologies
Mòdul 7: Casos d'Estudi i Exemples Pràctics
- Cas d'Estudi: Arquitectura d'un Sistema de Comerç Electrònic
- Cas d'Estudi: Arquitectura d'una Aplicació de Xarxes Socials
- Exercicis Pràctics