Een schaalbare architectuur wordt vaak gerealiseerd met behulp van containerisatie (bijvoorbeeld Docker) en orkestators (zoals Kubernetes). Deze benadering maakt het mogelijk om verschillende componenten van de applicatie te isoleren en vergemakkelijkt hun implementatie en schaalvergroting.
Finesses:
Codevoorbeeld (yaml-manifest voor Kubernetes ReplicaSet):
apiVersion: apps/v1 kind: Deployment metadata: name: my-service spec: replicas: 5 selector: matchLabels: app: my-service template: metadata: labels: app: my-service spec: containers: - name: my-service-container image: my-service:latest resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "1" memory: "1Gi"
Belangrijkste kenmerken:
Kan een container toegang hebben tot het bestandssysteem van een andere container?
Ja, containers kunnen volumes delen. In Kubernetes gebeurt dit via gedeelde PersistentVolume of EmptyDir.
Codevoorbeeld:
volumes: - name: shared-data emptyDir: {}
Wat gebeurt er als je in Kubernetes alleen pods schaalt zonder de database te schalen?
De services kunnen traag worden, de database wordt de bottleneck. Het is belangrijk om ervoor te zorgen dat alle "flessenhalzen" horizontaal of verticaal worden geschaald.
Kan een container blijven draaien bij een storing van de orkestratiecluster?
Een container kan actief blijven, maar beheer, herstart en autoscaling zullen niet mogelijk zijn zonder de bestuurlijke component (clustercontroller).