Benim Kubernetes’e ihtiyacım yoktu; muhtemelen sizin de yok
(benhouston3d.com)Kubernetes’ten ayrılıp Google Cloud Run’ı seçmemin nedeni
Kubernetes’i benimseme arka planı
- 2013’te kullanıma sunulan çevrimiçi 3D düzenleme platformu Clara.io’da altyapıyı optimize etmek için bare metal sunucular kullanıldı; ancak donanım yönetimi ve izleme için aşırı emek gerekiyordu.
- 2018’deki Threekit.com projesinde Kubernetes seçildi. O dönemde Azure, AWS, Docker Kubernetes’i standart olarak benimsiyor ve ana akım haline getiriyordu.
Kubernetes’in sınırlamaları
-
Maliyet sorunu:
- Yönetim düğümleri, küme yedekliliği gibi nedenlerle temel bir cluster kurulum maliyeti yüksektir.
- Yavaş auto-scaling nedeniyle hizmetleri fazla provision etmek gerekir ve kullanılmayan kaynaklar için maliyet oluşur.
-
İş yükü yönetiminin zorluğu:
- İş planlaması karmaşıktır; yerleşik scheduler ve Argo bile büyük hacimli işler için verimsizdir.
-
Aşırı karmaşıklık:
- Zengin özellik seti, basit işleri bile karmaşık hale getirir.
- Kubernetes yönetimi için özel DevOps personeli gerekir; bu da maliyeti artırır.
Google Cloud Run’a geçiş
Cloud Run, Kubernetes’in karmaşıklığının yerine daha sade ve maliyet açısından verimli bir ortam sunar.
Yeni kurulum
- Docker container tabanlı altyapı:
- Otomatik ölçeklenen servisler ve uzun süre çalışan işler için container’lar içerir.
- Cloud Run; container dağıtımını, ölçeklendirmeyi, kesinti yönetimini ve iş çalıştırmayı otomatikleştirir.
Cloud Run’ın avantajları
-
Maliyet verimliliği:
- CPU ve bellek kullanım süresine göre ücretlendirilir.
- Boştaki servisler için ücret alınmaz.
- Örnek: Web3D Survey sitesi, ayda 500.000 istek işlerken aylık 4 $ maliyetle çalışabilir.
-
Hızlı ve istikrarlı auto-scaling:
- Kubernetes’ten daha hızlı, birkaç saniye içinde ölçeklenir.
- Talep artışlarını hızla karşılayabilir.
-
Kubernetes yönetim yükü yok:
- Cloud Run, Google’ın Borg altyapısı üzerinde çalıştığından Kubernetes cluster yönetimi gerekmez.
-
Basit asenkron işler:
- Cloud Run Tasks ile otomatik yeniden deneme ve büyük hacimli iş çalıştırma kolaydır.
Kubernetes’in olası sorunu: cluster lock-in
- Kubernetes özelliklerine bağımlı hale gelince, cluster dışı kaynaklarla entegrasyon veya genişleme zorlaşır.
- Belirli bir altyapıya bağımlılık, ölçekleme ve migrasyonu daha karmaşık ve maliyetli hale getirir.
Cloud Run kullanımıyla ilgili yaygın sorular
“GCP bağımlılığı endişe yaratmıyor mu?”
- Docker tabanlı kurulum sayesinde AWS gibi başka bir buluta migrasyon yaklaşık 1 haftada yapılabilir.
- Gerçekte, siyasi etkenler dışında bulut sağlayıcısı değiştirmek nadirdir.
“Cloud Run da sonuçta Managed Kubernetes değil mi?”
- Cloud Run, Knative arayüzünü kullanır; ancak Kubernetes değil, Google’ın Borg sistemi üzerinde çalışır.
- Kubernetes’in karmaşıklığını ortadan kaldırır ve sadeleştirilmiş bir arayüz sunar.
Mevcut iş akışının dezavantajları
-
Servis adı yönetiminin zahmeti:
- Yerelde ve sunucuda tutarlı yapılandırma yönetimi için bir soyutlama katmanı gerekir.
- Kubernetes’teki isim yönetimi özellikleri yoktur.
-
Cloud Run Task emülasyonu eksikliği:
- İşleri yerelde geliştirirken log çıktısı yakalama ve izlemeyi içeren basit bir emülasyon ortamı yoktur.
Sonuç
- Cloud Run, maliyet, hız, ölçeklenebilirlik ve sadelik açısından en iyi çözümdür.
- Büyük şirketler veya karmaşık gereksinimleri olan durumlarda Kubernetes faydalı olabilir; ancak
- Sadelik ve verimliliğin önemli olduğu projelerde Cloud Run çok daha pratiktir.
- PS: Belki Kubernetes’e özel bazı eklentiler eklenerek bu sorunlar çözülebilir; ancak bu yalnızca karmaşıklığı artırır ve basit ihtiyaçların ötesine geçen bir Kubernetes ortamına bağımlı olmak istemiyorum.
12 yorum
Orada bir sihirli değnek yok sonuçta. Duruma göre iyi kullanmak gerekiyor tabii :)
Sırf trend diye Kubernetes’i eleştirel düşünmeden devreye almak işleri zorlaştırabilir, ama yine de biraz daha büyük ölçekli ortamlarda iyi bir araç olduğunu düşünüyorum.
Devreye alsanız bile sadece kurup bırakılırsa gerektiği gibi kullanılamaz.
Ayrıca her araçta olduğu gibi, hiçbir şey geliştiricilerin ya da kullanıcıların ihtiyaçlarını %100 karşılayamaz; bu yüzden uygun düzeyde otomasyonun şart olduğunu düşünüyorum.
Kubernetes kurulduktan sonra geriye sadece keyif sürmek kalıyor ama ... TT
Kubernetes benim ekmek teknem ve bir zamanlar bunun doğru cevap olduğuna inandığım bir dönem vardı.
Ama zaman geçtikçe birçok sorun yaşayıp zamanımı boşa harcadığımı fark ediyorum.
Başkalarına k8s öneriyorum ama kendi servislerimde kullanacağımı sanmıyorum. k8s bir yana, artık konteynerlerden bile yoruldum.
AWS kullanıyorsanız, ECS ile benzer olduğunu düşünebilir miyiz?
Evet, tam olarak o diyebilirsiniz. :)
Kubernetes kullanamıyor olmanız sizin hatanız; buna bakıp Kubernetes pek iyi değil demek biraz yanlış olur.
Ben de yazarın düşüncesine benzer düşünüyorum.
Şirketimiz henüz
kubekullanacak ölçekte değil.Tüm geliştiricilerin Kube kullanarak yönetim yapabileceğini düşünmek sadece benim varsayımımmış.
Şirketteki ortalama geliştirici seviyesinin altında kalsa bile altyapıyı kurup sorunları çözebilmeleri için rehberlik etmek daha iyi oldu...
???: Benim yapay zekaya ihtiyacım yoktu ve muhtemelen sizin de olmayacak.
Her ürünün bazı trade-off'ları vardır.
managed servisleri kullanınca açıkçası yönetim tarafında pek zorlanmadım,,
her araç da kararında kullanılırsa faydalı ama konu Kubernetes olunca özellikle "karmaşık yapılandırmalara izin vermesi"nin başlıca eleştiri noktası hâline geldiğini düşünüyorum.
Neredeyse her şeyi istediğim gibi yapabildiğim bir teknoloji olduğu için... :) Sanırım çoğu zaman bu yüzden gereğinden karmaşık kullanılıyor hahaha...
Hacker News görüşü
"Bulut teknolojisi"ne dair memnuniyetsizliğini dile getiriyor; Kubernetes kullanırken YAML dosyalarını düzenlemek ve hataları gidermek için çok zaman harcandığını belirtiyor. Bulut entegrasyonundan kaçınıp sunucuları doğrudan kendisi kurmak istediğini söylüyor
Kubernetes, DevOps ve yönetim zamanı dışında ciddi altyapı maliyetleri de doğuruyor. Bulut sağlayıcısının yönetilen Kubernetes hizmetini kullanmanın daha verimli olduğunu öne sürüyor
Kubernetes'in bir konteyner orkestrasyon aracı değil, bir bilgisayar kümesi oluşturma aracı olduğunu; kümeye ihtiyacınız yoksa Kubernetes kullanmak zorunda olmadığınızı açıklıyor
DevOps'a yapılan aşırı yatırımın azaldığını ve Kubernetes'e eleştirel baktığını paylaşıyor. Küçük startup'larda tek bir sunucunun da yeterli olabileceğini vurguluyor
Cloud Run kullanırken dikkat edilmesi gereken noktalar olarak TCP bağlantı sınırları, çalıştırma ortamı seçimi ve otomatik ölçeklendirme ayarlarını anıyor
Cloud Run'ın küçük startup'lar için uygun olduğunu, ancak güvenlik mimarisinin temel unsurlarından biri olan güvenlik duvarı kontrolünden yoksun olduğunu belirtiyor. Sonunda VPC'ye ihtiyaç duyulacağını açıklıyor
Google Cloud Run ile Kubernetes karşılaştırmasının adil olmadığını savunuyor ve her birinin artılarını ve eksilerini açıklıyor. Kubernetes'in karmaşık işler için uygun olduğunu vurguluyor
Kubernetes'in öğrenme eğrisinin dik olduğunu, ancak doğru kullanıldığında güçlü bir araç olduğunu açıklıyor
Kubernetes'e yönelik eleştirilere katılmadığını ve karmaşık uygulamaları dağıtırken Kubernetes API'sine ihtiyaç duyulabileceğini vurguluyor
Kubernetes'in karmaşıklığının esas olarak sistem yönetimi işlerinden kaynaklandığını, Kubernetes'in kendisinin ise istikrarlı olduğunu açıklıyor
IaC ve CM'nin yapılandırmayı azaltıp yönetimi kolaylaştırması gerektiğini, ancak gerçekte daha fazla çaba gerektirdiğini belirtiyor. Çoğu durumda Kubernetes'e ihtiyaç olmadığını ve iyi bir sistem yöneticisinin daha önemli olduğunu vurguluyor