Ana içeriğe geç

Cold Start

Türkçe karşılığı
soğuk başlangıç, soğuk başlatma
Okunuşu
kold start

Günlük kullanımda iki ad da yaygın.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/cold-start

Kısaca

Cold start, serverless bir platform isteği işlemeden önce yeni bir fonksiyon örneği açıp çalışma zamanını ve kurulum kodunu başlatırken oluşan ek gecikmedir.

Cold start (soğuk başlangıç) nedir?

AWS Lambda, Azure Functions ve Google Cloud Run gibi serverless platformlar kodunuzu sürekli çalışır durumda tutmaz. Bir istek geldiğinde hazır bir örnek yoksa platformun bir tane oluşturması gerekir: hafif bir sanal makine ya da konteyner ayırır, kodu ya da imajı indirir, Node.js, Python ya da Java sanal makinesi gibi çalışma zamanını başlatır ve başlatma (initialization) kodunuzu çalıştırır. İsteği ancak bundan sonra işleyebilir. Bu ek bekleme cold start'tır.

Bir örnek oluştuktan sonra platform onu bir süre tutar ve yeniden kullanır; böylece sonraki istekler kurulumu atlayan warm start'lar (sıcak başlangıçlar) olur. Cold start, yeni bir örneğe her ihtiyaç duyulduğunda yaşanır: fonksiyon bir süre boşta kaldıktan sonra, yeni bir dağıtımdan sonra ve trafik artıp platform yatayda ölçeklendiğinde. AWS'ye göre Lambda çağrılarının genellikle %1'inden azını etkiler ve 100 milisaniyenin altından bir saniyenin üstüne kadar sürer; büyük paketler, ağır framework'ler ve Java ile .NET gibi çalışma zamanları en uzun sürenlerdir.

Ekipler cold start'ları kısaltmak için dağıtım paketlerini küçük tutar, kütüphaneleri yalnızca gerektiğinde yükler ve veritabanı bağlantıları gibi istemcileri istek işleyicisinin dışında bir kez oluşturur; böylece sıcak istekler onları yeniden kullanır. Platformlar da örnekleri hazır tutmanın ücretli yollarını sunar: AWS Lambda'da provisioned concurrency, Cloud Run'da minimum örnek sayısı, Azure Functions'ta ise her zaman hazır (always ready) örnekler. Java, Python ve .NET için sunulan Lambda SnapStart, yeni örnekleri zaten başlatılmış bir örneğin anlık görüntüsünden (snapshot) başlatır. Cloudflare Workers gibi V8 isolate'leri üzerine kurulu platformlar kodu birkaç milisaniyede başlatır; bu yüzden cold start'ları neredeyse fark edilmez.

Cold start sık sık genel yavaşlıkla karıştırılır. Yalnızca yeni bir örneğin işlediği ilk isteğe süre ekler; her istek yavaşsa neden başka yerdedir: kodda, veritabanında ya da ağda. Terim serverless dışında da, sıfırdan açılan bir uygulama ya da boş başlayan bir önbellek için kullanılır, ama fikir aynıdır: ilk kullanım, sonraki kullanımların atladığı kurulumun bedelini öder.

Önemli noktalar

  • Cold start, platformun yeni bir fonksiyon örneği başlatması gerektiğinde yaşanan kurulum gecikmesidir.
  • Warm start'lar mevcut bir örneği yeniden kullanır ve bu kurulumu atlar.
  • Cold start'lar boşta geçen sürelerin, yeni dağıtımların ve ölçeklenmenin ardından gelir.
  • Küçük paketler ve işleyicinin dışında yapılan başlatma onları kısaltır.
  • Provisioned concurrency ve minimum örnek sayısı örnekleri hazır tutar; SnapStart yenilerinin daha hızlı başlamasını sağlar.

Örnek

İşleyicinin dışındaki kurulum yalnızca cold start'ta çalışır (AWS Lambda, Python)python
import boto3

# Runs once per new instance, during the cold start
s3 = boto3.client("s3")

def handler(event, context):
    # Runs on every request; warm starts reuse the client created above
    obj = s3.get_object(Bucket="reports", Key=event["key"])
    return {"size": obj["ContentLength"]}

Sık sorulan sorular

Bir cold start ne kadar sürer?

Platforma, çalışma zamanına ve kodun boyutuna bağlıdır. AWS, Lambda cold start'larının 100 milisaniyenin altından bir saniyenin üstüne kadar sürdüğünü belirtir; küçük Node.js ya da Python fonksiyonları hızlı uçta, SnapStart kullanmayan büyük Java ya da .NET uygulamaları ise yavaş uçta yer alır.

Cold start'lardan nasıl kaçınabilirim?

Paketleri küçük ve başlatmayı hafif tutarak onları kısaltabilir, AWS Lambda'daki provisioned concurrency ya da Cloud Run'daki minimum örnek sayısı gibi her zaman hazır örnekler için ödeme yaparak çoğundan kaçınabilirsiniz. Düzenli ısındırma (warm-up) istekleri göndermek, trafik daha fazla örnek gerektirdiğinde işe yaramayan eski bir geçici çözümdür.

Her istekte cold start olur mu?

Hayır. Yalnızca yeni bir örneğin işlemesi gereken istekte olur. Bir örnek hâlâ ayaktayken gelen istekler warm start'tır ve kurulumu atlar.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar