Konteynerli uygulama uygun işletim modeli ister. Yönetilebilir karmaşıklıktaki üretim hizmetine Docker Compose yetebilir. Uygulama birkaç makinede çalışacak ve dağıtımı koordineli denetlenecekse Kubernetes değerlendirilir. Karar uygulama gereksinimleriyle başlar.

Bir şirket web arayüzü, veritabanı ve arka plan işlemleri olan iç portal çalıştırır. Bakım penceresi, yönetilebilir yük ve belirlenmiş yöneticisi vardır. Diğeri birkaç hizmete haftada birkaç kez yeni sürüm çıkarır ve planlı bakımda erişilebilir kalmalıdır. İkisi de konteyner kullanır; uygun işletim modelleri farklı olabilir.

Docker, Compose ve Kubernetes farklı amaçlara hizmet eder

Konteyner çalışma zamanı konteynerleri yürütür. Docker Engine bunun yaygın platformudur. Docker Compose bir uygulamanın hizmetlerini YAML dosyasında tanımlar; imajları, ağları, kalıcı volume’leri ve yapılandırmayı birleştirir. Compose araçları bağlandıkları Docker host’unda uygulamayı oluşturup yönetir.

Kubernetes kümedeki iş yüklerinin istenen durumunu yönetir. Pod’ları uygun Node’lara yerleştirir, yönetilen örnekleri yenileyebilir veya aşamalı güncelleyebilir. Her Node yine uygun konteyner çalışma zamanı ister. Compose dosyası ve Kubernetes kaynakları dağıtımı farklı tanımlar; göç dosya adını değiştirmekten fazlasıdır.

Şirket büyüklüğü az şey söyler. Sık sürüm çıkaran küçük yazılım ekibi orkestrasyondan yararlanabilir. Çok daha büyük işletmede desteklenen tek iş uygulaması iyi bakılan bir host’ta yeterli olabilir.

Docker Compose üretim kullanımı için de tasarlanmıştır

Docker özellikle tek sunucuda Compose’un üretim kullanımını açıkça belgeler. Geliştirme ve üretim yapılandırmaları ayrı tutulabilir veya ihtiyaca göre genişletilebilir. Yeniden başlatma ilkeleri, açılan portlar, loglar ve güncelleme süreci üretim ortamına uymalıdır.

İç belge portalında bu sade bir düzen olabilir: yönetilebilir hizmetler, belgelenmiş sürümler, korunan veri ve test edilmiş kurtarma. Host arızası ayrı plan ister. Yeniden başlatma ilkesi uygulamayı başka makineye taşımaz. Alttaki sanallaştırmanın yedekliliği ve uygulama yedekleri de ayrı katmanlardır.

Yazılım üreticisinin desteklediği kurulum yolu da önemlidir. Resmen bakımı yapılan Compose kurulumu, güvenilir güncelleme yolu olmayan özel küme kurulumundan işletimde daha değerli olabilir.

İşletim için karar matrisi

Hangi gereksinim hangi yaklaşımı destekler?
Soru Tek host üzerinde Docker Compose Kubernetes
Ortam ne kadar büyük? Yönetilebilir hizmet kümesine sahip tekil uygulamalara uygundur. Birden çok iş yükü ve Node ortak platform ilkeleriyle yönetilebilir.
Host arızalanırsa ne olur? Kurtarma veya altyapı yedekliliği Compose dışında düzenlenir. Uygulama, kapasite, kontrol düzlemi ve veri erişimi hazırlanmışsa başka Node’larda yenileme mümkündür.
Yeni sürümler nasıl dağıtılır? İlgili hizmetler belgelenmiş, yararlıysa otomatikleştirilmiş süreçle değiştirilir. Dağıtım ilkeleri kontrollü rollout sağlar. Veri değişiklikleri ve işlev testleri ayrı plan ister.
İş verileri nerede saklanır? Kendi yedekleme ve geri yükleme süreci olan volume’lerde veya harici hizmetlerde. Dayanıklılığı ve yedekleri ayrıca değerlendirilen kalıcı storage veya harici hizmetlerde.
Platformun bakımını kim yapar? Sorumluluk host, çalışma zamanı, imajlar ve uygulamayı kapsar. Küme, ağ ve storage entegrasyonu ile bunların yaşam döngüleri de eklenir.
Hizmetin durumu nasıl değerlendirilir? Host, hizmetler ve iş süreçleri izlenir. Küme ve platform bileşenlerinin etkileşimi de izlenir; yalnız çalışan Pod yeterli değildir.
Üretici neyi destekler? Desteklenen kurulum yolu ve güncelleme süreci belirleyicidir. İşletilebilir Kubernetes kurulumu ve uygun üretici desteği bulunmalıdır.

Kubernetes ne zaman somut yarar sağlar?

Çok sayıda benzer dağıtımı tutarlı yönetmek veya kapasiteyi hizmetler arasında paylaşmak sağlam gerekçe olabilir. Açık rollout ilkeleriyle sık güncelleme ve uygulama alanlarına ayrı sorumluluklar da bunu destekler. Uygulama birden çok örnekte çalışabilmeli, insanlar ek platform işlerini yönetebilmelidir.

Hizmet seçmeden sağlayıcının kontrol düzlemini yönetip yönetmediğini, sizin bakımını yapacağınız bileşenleri ve olay müdahalesinde kalan görevleri belirleyin. Yönetilen küme bazı platform işlerini azaltır. Uygulama, erişim hakları, veri ve maliyet sorumluluğu kalır.

Ortak veri varsayımları sık engeldir. İş uygulaması birkaç aktif örnekle çalışabilir mi? Dosyaları nereye yazar? Oturumlar nerede? Arka plan işini tekrar çalıştırmak güvenli mi? Göçten önce yanıtlanmalıdır. Erişilebilir konteyner siparişlerin doğru işlendiğini kanıtlamaz.

Emek tüm yaşam döngüsünü kapsar

Karşılaştırmada sunucu veya bulut ücreti yetmez. Kurulum, dokümantasyon, güncellemeler, izleme, yedek ve olaylara harcanan süre de sayılır. Kubernetes platform uzmanlığı, küme, ağ ve storage koordinasyonu da ister. Standart işletim tekrarlanan işleri azaltabilir; standardın önce kurulup sürdürülmesi gerekir.

Üç senaryoyu karşılaştırın: mevcut uygulamayı düzgün işletmeye devam etmek, Compose ile standartlaştırmak veya Kubernetes platformu kurmak. Her birine aynı iş gereksinimlerini uygulayın. Aksi halde basit tek sunucu daha yüksek erişilebilirlik hedefiyle fark açıklanmadan karşılaştırılır.

Sağlam karara nasıl ulaşılır?

  1. İşletim gereksinimlerini tanımlayın: kabul edilen kesinti, bakım penceresi, veri kaybı ve beklenen değişiklikleri açıklayın.
  2. Uygulamayı değerlendirin: desteklenen kurulumları, çoklu örnekleri, dosyaları, oturumları ve harici arayüzleri kaydedin.
  3. Sorumluluk atayın: bakım, alarm, kurtarma ve yoklukta yedek kişileri belirleyin.
  4. Bir hizmeti test edin: önerilen ortamda güncelleme, arıza ve geri yükleme deneyip gereken emeği belgeleyin.
  5. Sonra genişletin: diğer uygulamaları aynı ölçütlerle değerlendirin.

DAXS, uygulama ve arayüzlerinin değerlendirmesini altyapı planlaması ve uygun işletim modeliyle birleştirir. İlk değerlendirme için somut hizmet, bağımlılıkları ve gerekli işletim sonuçları yeterlidir. Bir kişisel görüşme buradan başlar.

Kaynaklar: Docker: Compose uygulama modeli · Üretimde Docker Compose · Kubernetes: bileşenler ve sorumluluklar · Kubernetes: Deployment ve rollout · Üretim Kubernetes ortamını planlamak