Cloud-native ontwikkeling
Wat is onveranderlijke infrastructuur?
Wat is een onveranderlijke infrastructuur in de cloud?
Er is sprake van een onveranderlijke (immutable) infrastructuur wanneer u een server maakt zonder deze rechtstreeks te wijzigen. In het Well-Architected Framework van AWS (REL08-BP04) schrijft dit model voor dat er geen updates, beveiligingspatches of configuratiewijzigingen ter plaatse worden uitgevoerd op productieworkloads. U moet de oude versie vervangen door een nieuwe als u aanpassingen moet doen, en dit moet "configuration drift" (d.w.z. inconsistenties die in de loop van de tijd in systemen sluipen) elimineren.
Na het implementeren van een onveranderlijke infrastructuur, zou uw cloudomgeving voorspelbaar en betrouwbaar moeten zijn.
Wat is het verschil tussen veranderlijke en onveranderlijke infrastructuur?
De verschillen tussen de twee concepten zijn als volgt:
- Veranderlijke infrastructuur: Werk uw bestaande servers bij en wijzig ze in plaats van nieuwe te maken. Dit is de traditionele benadering in SaaS.
- Onveranderlijke infrastructuur: Vervang servers door nieuwere wanneer je wijzigingen moet aanbrengen. Dit is cloud-native en een nieuwere aanpak bij SaaS-apps.
| Aspect | Veranderlijke infrastructuur | Onveranderlijke infrastructuur |
|---|---|---|
| Basiskenmerken | ||
| Aanpak | Bestaande servers direct wijzigen | Vervang volledige servers door nieuwe versies |
| Implementatiestijl | Traditionele SaaS-aanpak | Moderne cloud-native aanpak |
| Operationele aspecten | ||
| Configuratiebeheer | Handmatige updates en aanpassingen | Geautomatiseerde implementatie van nieuwe instanties |
| Versiebeheer | Moeilijk om wijzigingen te volgen | Complete versiegeschiedenis beschikbaar |
| schaalbaarheid | Complex schaalproces | Eenvoudig te schalen met identieke instanties |
| Risicobeheer | ||
| Configuratiedrift | Gevoelig voor inconsistenties | Vermindert configuration drift |
| Rollback-mogelijkheid | Complex en riskant | Eenvoudige terugkeer naar vorige versies |
| Implementatierisico | Hoger risico op implementatieproblemen | Minder implementatieproblemen |
Wat zijn de voordelen van het gebruik van onveranderlijke infrastructuur?
Bedrijven gebruiken onveranderlijke infrastructuren om de volgende redenen:
- Implementatie en configuratie: Deze moeten consistent zijn en afwijkingen moeten worden vermeden om stabiliteit te garanderen.
- Risicobeperking: Minimaliseer de impact van onvoorziene uitdagingen door de mogelijkheid te hebben om terug te keren naar eerdere versies en de kans op implementatieproblemen te verkleinen.
- Schaalbaarheidsaspecten: Verken het schalen van uw app door nieuwe en identieke serverinstanties toe te voegen.
- Gebruik automatisering: Identificeer frameworks die geautomatiseerd kunnen worden om implementatietijden te beperken.
Wat zijn de beste praktijken voor onveranderlijke infrastructuur?
Praktijken om te implementeren zijn onder meer:
- Automatisering: Gebruik infrastructuur-als-code (IaC) en soortgelijke tools om uw infrastructuurvoorziening/-beheer te automatiseren.
- Versiebeheer alles: Versie al uw aspecten voor rollbacks/traceerbaarheid, inclusief afhankelijkheden en configuraties.
- Robuust inschakelen Loggen en bewaken: U kunt potentiële problemen identificeren tijdens of na nieuwe implementaties.
- Begin klein, herhaal: Gebruik onveranderlijke infrastructuur op niet-essentiële elementen voordat u het op anderen gebruikt wanneer u weet wat u moet doen.
- Parallel uitrollen: Implementeer wijzigingen als nieuwe resources parallel aan de oude, en verplaats vervolgens eerst een klein deel van de gebruikers naar de nieuwe versie (canary) of schakel het verkeer over naar een volledige parallelle vloot (blue/green) (AWS REL08-BP04).
Hoe past onveranderlijke infrastructuur in het cloud-native landschap?
Onveranderlijke infrastructuur wordt gebruikt naast DevOps, Kubernetes en andere technologieën/teams.
- Kubernetes: Vereenvoudiging van implementatie en beheer van container-apps, wat de adoptie van onveranderlijke infrastructuur mogelijk maakt. Cloud-native containerisatie past binnen het model: permanente wijzigingen aan een container betekenen een nieuwe versie of een hercreatie op basis van de image (CNCF).
- DevOps: Afgestemd continue integratie en continue implementatie (CI/CD) met onveranderlijke infrastructuurpraktijken voor softwarelevering.
Onveranderlijke infrastructuur vereist verschuiving van tooling en mentaliteit, maar u kunt betrouwbaarheid/schaalbaarheid krijgen.
Gebruik onveranderlijke infrastructuur in uw cloudomgeving. Implementeer nieuwe en bijgewerkte servers in plaats van de bestaande te wijzigen als u aanpassingen moet maken.
Conclusie
U zou een onveranderlijke infrastructuur serieus moeten overwegen bij uw cloud-native ontwikkeling. Het adopteren ervan kan de betrouwbaarheid verbeteren en het schalen met identieke instanties eenvoudiger maken. Hoewel het tijd kan kosten om u aan te passen aan de nieuwe denkwijze/tools, kan het op de lange termijn tot positieve resultaten leiden – mits u bereid bent u aan te passen en langzaam te beginnen.