kubernetes'in ne kadar karmaşık olduğunu teoriden değil ancak pratikten anlayabilirsiniz; teori size her business case'e uygunmuş gibi sunulur, sistemleri soyutlar, karmaşıklığı gizler.
işin teorisi container orchestrator, declarative infrastructure, scalable & resilient architecture gibi konseptlerle sınırlıdır. bu kavramlar da kulağa deterministik, her probleme uyan bir çözüm gibi gelir. fakat işler pratikte bambaşka, çünkü:
- her cluster kendine özgü.
network policy'ler, security policy'ler, storage class, ingress-egress, cni, security-application context, resource limit'leri... her biri birbiriyle etkileşimli, matematiğin korkunç taraflarından birisi de bu: bunların kombinasyonu exponential şekilde karmaşıklaşıyor.
- declarative model'in yan etkileri
bir dosyayla her şeyi tanımlamak kulağa ne kadar hoş gelse de gerçekte yaşanan schedule, senkronizasyon ve race condition sorunları yüzlerce farklı beklenmedik davranışa yol açıyor.
- operasyonel yük
işin teorisi "self-healing", böyle tanıtılır. gerçekte ise onlarca farklı elle müdahele isteyen durum var (failed mount, crash loop, pod eviction...).
- tool ekosistemi
yine teori bize kubernetes'i modüler şekilde tanıtıyor ama bu modülerlik onlarca farklı karara evriliyor, admin overhead.
özetle; teori bize kubernetes'i soyutlama katmanı olarak gösteriyor. pratikte bu soyutlamayı ayakta tutmak için bir sürü mühendis gerekiyor. kubernetes'in karmaşıklığı doğasında değil gerçek dünyada kullanmanın zorluğundan.
şöyle formülize edelim:
kubernetes_getirisi = scalability + resilience + portability + automation
kubernetes_götürüsü = operational_overhead + sistemi_yönetmek_için_bilişsel_yük + infra_cost + ecosystem_complexity
net_kazanç = kubernetes_getirisi - kubernetes_götürüsü
büyük bir ölçeğe kadar kubernetes_getirisi çok değersiz oluyor ve bu yüzden zarardasınız.
Kubernetes migration almost killed our startup.
Where we were:
- 8 EC2 instances
- Ansible for deploys
- Boring but working
- $1200/month AWS bill
Why we migrated:
- New investor wanted 'cloud-native'
- Engineers wanted K8s experience
- Competitors were using it
- Seemed like the future
6 months later:
- 3 engineers spending full-time on K8s
- AWS bill at $4500/month
- Deploys took longer than before
- More outages, not fewer
- Product development stalled
We rolled back:
- Moved to ECS Fargate
- 2 week migration
- Back to $1800/month
- Engineers back on features
K8s is amazing for scale. We weren't at scale. Technology should solve problems you actually have.