Container Orchestratie op AWS: ECS vs EKS Vergelijking
De juiste keuze maken tussen ECS en EKS voor je containerized applicaties
Introductie
Bij het deployen van containerized applicaties op AWS sta je voor een cruciale beslissing: Amazon Elastic Container Service (ECS) of Amazon Elastic Kubernetes Service (EKS)? Beide zijn krachtige container orchestratie platforms, maar ze bedienen verschillende behoeften en komen met onderscheidende trade-offs.
Deze uitgebreide gids vergelijkt ECS en EKS over meerdere dimensies en biedt praktische inzichten om je te helpen een geïnformeerde beslissing te nemen. Spoiler alert: voor de meeste organisaties, vooral degenen zonder bestaande Kubernetes investeringen, is ECS vaak de eenvoudigere, meer kosteneffectieve keuze.
Snelle Vergelijking
| Kenmerk | ECS | EKS |
|---|---|---|
| Leercurve | Laag - AWS-native, eenvoudigere concepten | Hoog - Kubernetes complexiteit |
| Kosten | Geen control plane kosten | €0,09/uur per cluster (~€65/maand) |
| AWS Integratie | Native, naadloos | Goed, maar vereist extra configuratie |
| Portabiliteit | Alleen AWS | Multi-cloud mogelijk |
| Community | AWS-gericht | Grote Kubernetes ecosysteem |
| Het Beste Voor | AWS-first organisaties | Kubernetes expertise/vereisten |
Amazon ECS: AWS-Native Container Orchestratie
Wat is ECS?
ECS is Amazon’s volledig beheerde container orchestratie service, diep geïntegreerd met het AWS ecosysteem. Het biedt een eenvoudige manier om Docker containers te draaien zonder de complexiteit van het beheren van orchestratie infrastructuur.
ECS Architectuur
┌─────────────────────────────────────────┐
│ ECS Cluster │
│ ┌────────────────────────────────────┐ │
│ │ ECS Service │ │
│ │ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Task │ │ Task │ │ │
│ │ │┌────────┐│ │┌────────┐│ │ │
│ │ ││Container││ ││Container││ │ │
│ │ │└────────┘│ │└────────┘│ │ │
│ │ └──────────┘ └──────────┘ │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────┘
↓ ↓
Fargate EC2 Instances
ECS Voorbeeld: Deployen van een Web Applicatie
import * as cdk from 'aws-cdk-lib';
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
export class ECSWebAppStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Creëer VPC
const vpc = new ec2.Vpc(this, 'VPC', {
maxAzs: 2,
});
// Creëer ECS Cluster
const cluster = new ecs.Cluster(this, 'Cluster', {
vpc,
containerInsights: true,
});
// Creëer Fargate Task Definition
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {
cpu: 512,
memoryLimitMiB: 1024,
});
// Voeg container toe aan task
const container = taskDefinition.addContainer('web', {
image: ecs.ContainerImage.fromRegistry('nginx:latest'),
logging: ecs.LogDrivers.awsLogs({ streamPrefix: 'web-app' }),
environment: {
ENVIRONMENT: 'productie',
},
});
container.addPortMappings({
containerPort: 80,
});
// Creëer Fargate Service
const service = new ecs.FargateService(this, 'Service', {
cluster,
taskDefinition,
desiredCount: 2,
circuitBreaker: { rollback: true },
});
// Creëer Application Load Balancer
const alb = new elbv2.ApplicationLoadBalancer(this, 'ALB', {
vpc,
internetFacing: true,
});
const listener = alb.addListener('Listener', {
port: 80,
});
listener.addTargets('ECS', {
port: 80,
targets: [service],
healthCheck: {
path: '/',
interval: cdk.Duration.seconds(30),
},
});
}
}
Regels code: ~60
ECS Voordelen
1. Eenvoud
- Geen cluster management overhead
- Eenvoudige task en service definities
- Native AWS concepten (geen nieuw orchestratie paradigma)
2. Kostenefficiëntie
- Geen control plane kosten
- Fargate Spot voor tot 70% besparing
- Efficiënt resource gebruik
3. AWS Integratie
- Naadloze IAM integratie (task roles)
- Native CloudWatch logging en metrics
- Directe integratie met ALB/NLB
- AWS Secrets Manager en Parameter Store ondersteuning
- Native VPC networking
4. Operationele Eenvoud
- Automatische cluster scaling
- Ingebouwde service discovery
- Blue/green en rolling deployments
- Circuit breaker voor automatische rollback
ECS Nadelen
1. AWS Lock-in
- Kan niet makkelijk migreren naar andere cloud providers
- ECS-specifieke task definities
2. Beperkt Ecosysteem
- Kleinere community vergeleken met Kubernetes
- Minder third-party tools en integraties
3. Feature Beperkingen
- Minder flexibel dan Kubernetes voor complexe scenario’s
- Beperkte custom scheduling mogelijkheden
Amazon EKS: Managed Kubernetes op AWS
Wat is EKS?
EKS is Amazon’s managed Kubernetes service, die een volledig compatibel Kubernetes control plane biedt met AWS integratie. Het is ideaal voor organisaties met Kubernetes expertise of multi-cloud vereisten.
EKS Architectuur
┌─────────────────────────────────────────┐
│ EKS Control Plane │
│ (Beheerd door AWS - €0,09/uur) │
│ ┌────────────────────────────────────┐ │
│ │ API Server │ etcd │ Scheduler │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ Worker Nodes │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Pod │ │ Pod │ │ Pod │ │
│ │┌──────┐│ │┌──────┐│ │┌──────┐│ │
│ ││ Cont ││ ││ Cont ││ ││ Cont ││ │
│ │└──────┘│ │└──────┘│ │└──────┘│ │
│ └────────┘ └────────┘ └────────┘ │
└─────────────────────────────────────────┘
↓ ↓
Fargate EC2 Instances
EKS Voorbeeld: Dezelfde Web Applicatie
import * as cdk from 'aws-cdk-lib';
import * as eks from 'aws-cdk-lib/aws-eks';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as iam from 'aws-cdk-lib/aws-iam';
export class EKSWebAppStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Creëer VPC
const vpc = new ec2.Vpc(this, 'VPC', {
maxAzs: 2,
});
// Creëer EKS Cluster
const cluster = new eks.Cluster(this, 'Cluster', {
vpc,
version: eks.KubernetesVersion.V1_28,
defaultCapacity: 2,
defaultCapacityInstance: ec2.InstanceType.of(
ec2.InstanceClass.T3,
ec2.InstanceSize.MEDIUM
),
});
// Installeer AWS Load Balancer Controller
const awsLoadBalancerController = cluster.addHelmChart('AWSLoadBalancerController', {
chart: 'aws-load-balancer-controller',
repository: 'https://aws.github.io/eks-charts',
namespace: 'kube-system',
values: {
clusterName: cluster.clusterName,
},
});
// Creëer deployment manifest
const deployment = {
apiVersion: 'apps/v1',
kind: 'Deployment',
metadata: { name: 'web-app' },
spec: {
replicas: 2,
selector: { matchLabels: { app: 'web' } },
template: {
metadata: { labels: { app: 'web' } },
spec: {
containers: [
{
name: 'web',
image: 'nginx:latest',
ports: [{ containerPort: 80 }],
env: [
{ name: 'ENVIRONMENT', value: 'productie' },
],
},
],
},
},
},
};
// Creëer service manifest
const service = {
apiVersion: 'v1',
kind: 'Service',
metadata: { name: 'web-service' },
spec: {
type: 'LoadBalancer',
selector: { app: 'web' },
ports: [{ port: 80, targetPort: 80 }],
},
};
// Pas manifests toe
cluster.addManifest('web-deployment', deployment);
cluster.addManifest('web-service', service);
}
}
Regels code: ~80 (plus extra Helm chart configuratie)
EKS Voordelen
1. Kubernetes Standaard
- Industriestandaard orchestratie
- Portabel over cloud providers
- Enorm ecosysteem en community
2. Geavanceerde Features
- Custom Resource Definitions (CRDs)
- Operators voor complexe applicaties
- Geavanceerde scheduling (node affinity, taints, tolerations)
- StatefulSets voor stateful applicaties
3. Flexibiliteit
- Zeer aanpasbaar
- Uitgebreide third-party tool ondersteuning
- Multi-tenancy mogelijkheden
4. Multi-Cloud Strategie
- Skills overdraagbaar over clouds
- Potentieel voor hybrid/multi-cloud deployments
- Vendor onafhankelijkheid
EKS Nadelen
1. Complexiteit
- Steile leercurve
- Meer bewegende delen om te beheren
- Vereist Kubernetes expertise
2. Kosten
- €0,09/uur per cluster (~€65/maand control plane kosten)
- Hogere operationele overhead
- Meer resources nodig voor control plane
3. AWS Integratie Wrijving
- Vereist extra controllers (ALB controller, EBS CSI driver)
- IAM integratie vereist IRSA (IAM Roles for Service Accounts)
- Complexere networking setup
4. Operationele Overhead
- Complexere troubleshooting
- Extra componenten om te monitoren
- Cluster upgrades vereisen zorgvuldige planning
Gedetailleerde Feature Vergelijking
1. Kosten Analyse
ECS Maandelijkse Kosten (2 container instances):
Control Plane: €0
2x Fargate (0.5 vCPU, 1GB): ~€27/maand
Totaal: ~€27/maand
EKS Maandelijkse Kosten (2 container instances):
Control Plane: €65/maand
2x EC2 t3.medium nodes: ~€54/maand
OF 2x Fargate (0.5 vCPU, 1GB): ~€27/maand
Totaal: ~€92-119/maand
ECS wint op kosten - Geen control plane kosten maakt ECS significant goedkoper, vooral voor kleinere deployments.
2. Leercurve
ECS Leerpad:
Week 1: Docker basics
Week 2: ECS concepten (Tasks, Services, Clusters)
Week 3: Productie deployment
Week 4: Geavanceerde features (auto-scaling, monitoring)
EKS Leerpad:
Week 1-2: Docker basics
Week 3-4: Kubernetes fundamentals
Week 5-6: Kubernetes geavanceerde concepten
Week 7-8: EKS specifics en AWS integratie
Week 9-12: Productie best practices
ECS wint op eenvoud - Significant kortere tijd tot productiviteit.
3. Deployment Complexiteit
Deploy een Service met Auto-scaling:
ECS (CDK):
const service = new ecs.FargateService(this, 'Service', {
cluster,
taskDefinition,
desiredCount: 2,
});
// Voeg auto-scaling toe
const scaling = service.autoScaleTaskCount({
minCapacity: 2,
maxCapacity: 10,
});
scaling.scaleOnCpuUtilization('CpuScaling', {
targetUtilizationPercent: 70,
});
EKS (Kubernetes YAML):
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 2
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: nginx:latest
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: web-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: web-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
ECS wint op eenvoud - Minder YAML, meer intuïtieve configuratie.
4. AWS Service Integratie
ECS IAM Integratie (Native):
// Creëer task role met permissies
const taskRole = new iam.Role(this, 'TaskRole', {
assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'),
});
taskRole.addToPolicy(new iam.PolicyStatement({
actions: ['s3:GetObject'],
resources: ['arn:aws:s3:::mijn-bucket/*'],
}));
// Wijs toe aan task definition
const taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDef', {
taskRole, // Directe toewijzing
});
EKS IAM Integratie (Vereist IRSA):
// Creëer service account met IAM role
const serviceAccount = cluster.addServiceAccount('S3ServiceAccount', {
name: 's3-toegang',
namespace: 'default',
});
// Voeg permissies toe
serviceAccount.addToPrincipalPolicy(new iam.PolicyStatement({
actions: ['s3:GetObject'],
resources: ['arn:aws:s3:::mijn-bucket/*'],
}));
// Referentie in pod spec
const deployment = {
// ... deployment config
spec: {
template: {
spec: {
serviceAccountName: 's3-toegang', // Moet pod configureren om SA te gebruiken
containers: [/* ... */],
},
},
},
};
ECS wint op AWS integratie - Eenvoudiger, minder configuratie nodig.
5. Multi-Regio en High Availability
ECS Multi-Regio:
// Deploy naar meerdere regio's eenvoudig
const euCluster = new ecs.Cluster(this, 'EUCluster', {
vpc: euVpc,
});
const usCluster = new ecs.Cluster(this, 'USCluster', {
vpc: usVpc,
});
// Zelfde service definitie, verschillende clusters
new ecs.FargateService(this, 'EUService', {
cluster: euCluster,
taskDefinition,
});
new ecs.FargateService(this, 'USService', {
cluster: usCluster,
taskDefinition,
});
EKS Multi-Regio: Vereist aparte EKS clusters per regio, complexere federation of multi-cluster management tools.
ECS wint op eenvoud voor multi-regio deployments.
6. Ecosysteem en Tooling
ECS Ecosysteem:
- AWS Console (uitstekende UX)
- AWS CLI
- AWS CDK/CloudFormation
- Copilot CLI (AWS’s opinionated tool)
- Beperkte third-party tools
EKS Ecosysteem:
- kubectl en Kubernetes tooling
- Helm charts (duizenden beschikbaar)
- Operators (database operators, monitoring, etc.)
- GitOps tools (ArgoCD, Flux)
- Service meshes (Istio, Linkerd)
- Uitgebreid third-party ecosysteem
EKS wint op ecosysteem - Significant meer tools en integraties beschikbaar.
Wanneer ECS Kiezen
✅ Kies ECS als:
- Je bent AWS-gericht - Geen multi-cloud vereisten
- Je wilt eenvoud - Snellere time to production
- Je bent kostenbewust - Geen control plane kosten
- Je hebt een klein team - Minder Kubernetes expertise vereist
- Je geeft prioriteit aan AWS integratie - Native IAM, CloudWatch, etc.
- Je bouwt nieuwe applicaties - Geen bestaande Kubernetes investering
ECS Use Cases
1. Web Applicaties en APIs:
// Eenvoudige, kosteneffectieve web app deployment
const webService = new ecs.FargateService(this, 'WebApp', {
cluster,
taskDefinition: webTaskDef,
desiredCount: 3,
circuitBreaker: { rollback: true },
});
2. Microservices:
// Meerdere services met service discovery
const serviceDiscovery = cluster.addDefaultCloudMapNamespace({
name: 'local',
});
const bestellingService = new ecs.FargateService(this, 'BestellingService', {
cluster,
taskDefinition: bestellingTaskDef,
cloudMapOptions: {
name: 'bestellingen',
},
});
const betalingService = new ecs.FargateService(this, 'BetalingService', {
cluster,
taskDefinition: betalingTaskDef,
cloudMapOptions: {
name: 'betalingen',
},
});
3. Batch Verwerking:
// Geplande batch jobs
const batchTask = new ecs.FargateTaskDefinition(this, 'BatchTask', {
cpu: 2048,
memoryLimitMiB: 4096,
});
// Trigger met EventBridge
const rule = new events.Rule(this, 'PlanningRegel', {
schedule: events.Schedule.cron({ hour: '2', minute: '0' }),
});
rule.addTarget(new targets.EcsTask({
cluster,
taskDefinition: batchTask,
}));
Wanneer EKS Kiezen
✅ Kies EKS als:
- Je hebt multi-cloud portabiliteit nodig - Kubernetes draait overal
- Je hebt Kubernetes expertise - Team kent K8s al
- Je hebt geavanceerde features nodig - Operators, CRDs, complexe scheduling
- Je hebt complexe vereisten - StatefulSets, custom controllers
- Je wilt vendor onafhankelijkheid - Niet vastzitten aan AWS
- Je migreert van on-prem Kubernetes - Behoud tooling en workflows
EKS Use Cases
1. Complexe Stateful Applicaties:
# StatefulSet voor database cluster
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: postgres-cluster
spec:
serviceName: postgres
replicas: 3
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:15
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100Gi
2. Multi-Tenancy:
# Namespace-gebaseerde isolatie
apiVersion: v1
kind: Namespace
metadata:
name: team-a
---
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-a-quota
namespace: team-a
spec:
hard:
requests.cpu: "10"
requests.memory: 20Gi
persistentvolumeclaims: "5"
3. Service Mesh Deployments:
# Installeer Istio op EKS
istioctl install --set profile=production
# Automatische sidecar injection
kubectl label namespace default istio-injection=enabled
Hybride Aanpak: Beide Gebruiken
Sommige organisaties profiteren van het gebruiken van beide services:
// Gebruik ECS voor eenvoudige services
const apiService = new ecs.FargateService(this, 'API', {
cluster: ecsCluster,
taskDefinition: apiTaskDef,
});
// Gebruik EKS voor complexe applicaties
const mlPlatform = new eks.Cluster(this, 'MLCluster', {
vpc,
version: eks.KubernetesVersion.V1_28,
});
// Deploy Kubeflow op EKS voor ML workflows
mlPlatform.addHelmChart('Kubeflow', {
chart: 'kubeflow',
repository: 'https://kubeflow.github.io/manifests/charts',
});
Migratie Paden
Van ECS naar EKS
Als je begint met ECS en later Kubernetes nodig hebt:
# Converteer ECS task definition naar Kubernetes deployment
import json
import yaml
def ecs_naar_k8s(task_definition):
"""Converteer ECS task definition naar K8s deployment"""
container_def = task_definition['containerDefinitions'][0]
k8s_deployment = {
'apiVersion': 'apps/v1',
'kind': 'Deployment',
'metadata': {'name': container_def['name']},
'spec': {
'replicas': 2,
'selector': {'matchLabels': {'app': container_def['name']}},
'template': {
'metadata': {'labels': {'app': container_def['name']}},
'spec': {
'containers': [{
'name': container_def['name'],
'image': container_def['image'],
'ports': [{'containerPort': pm['containerPort']}
for pm in container_def.get('portMappings', [])],
'env': [{'name': k, 'value': v}
for k, v in container_def.get('environment', {}).items()],
}]
}
}
}
}
return yaml.dump(k8s_deployment)
Van EKS naar ECS
Migreren van EKS naar ECS (vereenvoudiging):
// Converteer K8s deployment naar ECS task definition
const converteerNaarECS = (k8sDeployment: any): ecs.TaskDefinition => {
const container = k8sDeployment.spec.template.spec.containers[0];
const taskDef = new ecs.FargateTaskDefinition(this, 'TaskDef', {
cpu: parseerCPU(container.resources.requests.cpu),
memoryLimitMiB: parseerGeheugen(container.resources.requests.memory),
});
taskDef.addContainer('main', {
image: ecs.ContainerImage.fromRegistry(container.image),
portMappings: container.ports.map((p: any) => ({
containerPort: p.containerPort,
})),
environment: Object.fromEntries(
container.env.map((e: any) => [e.name, e.value])
),
});
return taskDef;
};
Kosten Optimalisatie Strategieën
ECS Kosten Optimalisatie
// Gebruik Fargate Spot voor kostenbesparingen
const service = new ecs.FargateService(this, 'Service', {
cluster,
taskDefinition,
capacityProviderStrategies: [
{
capacityProvider: 'FARGATE_SPOT',
weight: 2,
},
{
capacityProvider: 'FARGATE',
weight: 1,
base: 1, // Zorg voor minimaal één op reguliere Fargate
},
],
});
// Gebruik Graviton2 voor betere prijs-prestatieverhouding
const gravitonTaskDef = new ecs.FargateTaskDefinition(this, 'GravitonTask', {
cpu: 1024,
memoryLimitMiB: 2048,
runtimePlatform: {
cpuArchitecture: ecs.CpuArchitecture.ARM64,
},
});
EKS Kosten Optimalisatie
// Gebruik Karpenter voor efficiënte node provisioning
const karpenter = cluster.addHelmChart('Karpenter', {
chart: 'karpenter',
repository: 'https://charts.karpenter.sh',
namespace: 'karpenter',
});
// Gebruik Spot instances voor worker nodes
cluster.addAutoScalingGroupCapacity('spot-capacity', {
instanceType: ec2.InstanceType.of(
ec2.InstanceClass.T3,
ec2.InstanceSize.MEDIUM
),
spotPrice: '0.05',
maxCapacity: 10,
});
Het Verdict: Waarom ECS Vaak Wint
Voor de meeste organisaties, vooral degenen die:
- Bouwen op AWS zonder multi-cloud vereisten
- Prioriteit geven aan eenvoud en operationele efficiëntie
- Werken met beperkte Kubernetes expertise
- Kostenbewust zijn over infrastructuur uitgaven
Is ECS de betere keuze omdat het biedt:
- 70% snellere time to production
- ~50% lagere kosten (geen control plane kosten)
- Eenvoudigere operaties (minder te leren, beheren, troubleshooten)
- Betere AWS integratie (native IAM, logging, networking)
- Lagere operationele overhead (beheerd door AWS)
Echter, als je:
- Multi-cloud portabiliteit nodig hebt
- Bestaande Kubernetes investeringen hebt
- Geavanceerde Kubernetes features vereist
- Een team hebt met sterke Kubernetes expertise
Dan is EKS de juiste keuze.
Nederlandse Markt Overwegingen
Voor Nederlandse bedrijven zijn er specifieke overwegingen:
ECS Voordelen voor NL:
- Eenvoudigere compliance - Minder componenten om te auditen
- Lagere kosten - Belangrijk voor MKB budgetten
- Snellere implementatie - Minder tijd investeren in training
- EU Regio Support - Volledig ondersteund in eu-west-1, eu-central-1
EKS Voordelen voor NL:
- Multi-cloud strategie - Flexibiliteit voor EU digitale soevereiniteit
- Kennisbank - Grote Kubernetes community in Nederland
- On-premises integratie - Hybrid deployments met bestaande datacenters
- Compliance tools - Uitgebreide tooling voor AVG/NIS2
Conclusie
Zowel ECS als EKS zijn uitstekende container orchestratie platforms, maar ze bedienen verschillende behoeften:
Kies ECS voor:
- Eenvoud en AWS integratie
- Kostenefficiëntie
- Snellere time to market
- AWS-centrische architectuur
Kies EKS voor:
- Kubernetes standaardisatie
- Multi-cloud portabiliteit
- Geavanceerde orchestratie features
- Bestaande Kubernetes expertise
De pragmatische aanpak: Begin met ECS voor eenvoud en lagere kosten. Als je echt Kubernetes features of portabiliteit nodig hebt, migreer dan later naar EKS. Kies niet voor Kubernetes “zomaar” - de operationele complexiteit en kosten moeten gerechtvaardigd worden door echte vereisten.
Klaar om containers te deployen op AWS? Neem contact op met Forrict voor expert begeleiding bij het kiezen en implementeren van het juiste orchestratie platform voor jouw behoeften.
Resources
- AWS ECS Documentatie
- AWS EKS Documentatie
- AWS Copilot CLI
- Kubernetes Documentatie
- AWS Container Blog
- CNCF (Cloud Native Computing Foundation)
Fons Biemans
AWS expert en consultant bij Forrict, gespecialiseerd in cloud architectuur en AWS best practices voor Nederlandse bedrijven.

