Middle
Wat is ongewijzigde infrastructuur (Immutable Infrastructure)?
sobes.tech AI
Antwoord van AI
Deze aanpak houdt in dat infrastructuurcomponenten (servers, containers) niet worden gewijzigd na deployment. Elke wijziging vereist het creëren van een nieuwe instantie van het component met de benodigde configuraties en het vervangen van de oude.
Belangrijkste ideeën:
- Eenvoudige rollback: Als een nieuwe versie problemen veroorzaakt, is het gemakkelijk terug te keren naar de vorige door het verkeer simpelweg naar de oude, ongewijzigde instanties te leiden.
- Betrouwbaarheid: Vermijdt het risico van "configuratie drift" (configuration drift), waarbij handmatige wijzigingen op werkende servers leiden tot inconsistente toestanden.
- Eenvoudig testen: Elke uitgerolde instantie wordt op dezelfde manier gebouwd, waardoor ontwikkel-, test- en productieomgevingen meer op elkaar lijken.
- Schaalbaarheid: De aanpak werkt goed met horizontale schaalvergroting en automatische clusterbeheer.
Implementatievoorbeelden:
- Gebruik van virtuele machine images (AMI in AWS) of containers (Docker images), die één keer worden gebouwd en niet worden gewijzigd na het starten.
- Gebruik van tools zoals Packer om images te maken.
- Orkestratoren zoals Kubernetes, die de levenscyclus van containers beheren en het eenvoudig vervangen van oude pods door nieuwe mogelijk maken.
Vergelijking met mutable infrastructuur:
| Kenmerk | Mutable infrastructuur | Onveranderlijke infrastructuur |
|---|---|---|
| Wijzigingen | Worden direct aangebracht op werkende instanties | Wordt een nieuwe instantie gemaakt, de oude wordt vervangen |
| Rollback | Moeilijk, vereist handmatige acties | Eenvoudig, overschakelen naar oude instanties |
| Betrouwbaarheid | Risico op configuratie drift | Hoge consistentie |
| Beheer | Vaak handmatig beheer, configuratie | Gebruik van images, automatisering |
Deze aanpak vereist meer automatisering bij het maken en uitrollen van componenten, maar verhoogt de voorspelbaarheid en betrouwbaarheid van de infrastructuur aanzienlijk.