Improving Performance

πŸ“š Hoofdstuk 2.5: Verbeteren van de Prestaties

──────────────────────────────
πŸ’‘ Inleiding:
──────────────────────────────
Om de prestaties van applicaties en systemen te optimaliseren, maakt Linux gebruik van technieken zoals **clustering**, **load balancing** en **containers**.
Deze technologieΓ«n helpen bij het verdelen van workloads, verhogen van de beschikbaarheid en het verbeteren van de efficiΓ«ntie.

──────────────────────────────
🀝 Clustering:
──────────────────────────────
πŸ”Ž Definitie:
Clustering verbetert de prestaties van applicaties door applicatiefuncties te verdelen over meerdere servers (nodes).

βš™οΈ Werking:
β€’ Elke server in de cluster is gelijk geconfigureerd en kan dezelfde taken uitvoeren.
β€’ Clusterbeheer-software bepaalt hoe de taken worden verdeeld over de servers.

βœ… Voordelen:
β€’ **Hogere beschikbaarheid:** Als één server uitvalt, nemen andere servers het over.
β€’ **Betere schaalbaarheid:** Eenvoudig extra servers toevoegen om de capaciteit te vergroten.

πŸ“¦ Voorbeelden van clusteringsoftware:
- **Beowulf:** Oudere clusteringtechnologie, veel gebruikt in wetenschappelijke toepassingen.
- **Apache Hadoop:** Moderne oplossing voor big data-verwerking en gedistribueerde opslag.
- **Linux Virtual Server (LVS):** Biedt een efficiΓ«nte en schaalbare netwerkloadbalancer.

──────────────────────────────
βš–οΈ Load Balancing:
──────────────────────────────
πŸ”Ž Definitie:
Load balancing is een vorm van clustering waarbij volledige clientverzoeken worden doorgestuurd naar één server binnen een cluster.

βš™οΈ Werking:
β€’ De load balancer verdeelt het netwerkverkeer over meerdere servers om overbelasting van één enkele server te voorkomen.
β€’ Clientverzoeken worden volledig verwerkt door één server, maar de werkdruk wordt verdeeld over het hele cluster.

βœ… Voordelen:
β€’ **Betere prestaties:** Door de belasting gelijkmatig te verdelen, blijven servers responsief.
β€’ **Hogere betrouwbaarheid:** Bij serveruitval kunnen verzoeken automatisch worden doorgestuurd naar andere servers.

πŸ“¦ Populaire load-balancing software:
- **HAProxy:** High-availability proxy, krachtig en flexibel voor grote netwerken.
- **Linux Virtual Server (LVS):** Ondersteunt geavanceerde routing- en load-balancingmethoden.
- **nginx:** Naast webserverfunctionaliteit biedt het ook sterke load-balancingmogelijkheden.

──────────────────────────────
πŸ“¦ Containers:
──────────────────────────────
πŸ”Ž Definitie:
Containers creΓ«ren een zelfstandige, geΓ―soleerde omgeving waarin applicaties draaien.

βš™οΈ Werking:
Een container bevat alle benodigde onderdelen, waaronder:
- Applicatiebestanden
- Bibliotheken
- Besturingssysteembibliotheken
Containers draaien bovenop het besturingssysteem, waardoor ze lichtgewicht en snel zijn.

βœ… Voordelen:
β€’ **Consistentie:** Applicaties draaien overal hetzelfde, ongeacht de onderliggende infrastructuur.
β€’ **EfficiΓ«ntie:** Sneller opstarten dan traditionele virtuele machines.
β€’ **Schaalbaarheid:** Eenvoudig nieuwe containers uitrollen en beheren.

πŸ“¦ Populaire containerplatformen:
- **Docker:** Meest gebruikte containerplatform, ideaal voor het ontwikkelen en distribueren van applicaties.
- **Kubernetes:** Orchestration tool om meerdere containers te beheren, schalen en automatiseren.
──────────────────────────────