Go (Golang) Orta Seviye Mikroservis & Yaşam Döngüsü

Go Context Paketi: WithCancel, WithTimeout & Graceful Shutdown

Kullanıcı sayfayı kapattığında arkadaki tüm veritabanı sorgularını anında iptal etme emri.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Merkezden gelen "Geri çekilin!" telsiz anonsudur. Bir operasyon iptal edildiğinde (Cancel/Timeout) operasyona bağlı tüm askerler (alt goroutine'ler) derhal işi bırakır.

Teknik & Mimari Tanım

Context paketi API sınırları boyunca deadline, iptal sinyali (cancellation) ve istek kapsamlı değişkenleri (request-scoped values) taşır. context.WithTimeout ile süre dolduğunda context.Done() kanalı sinyal yayar ve tüm bağlı I/O operasyonları derhal sonlandırılır.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“Context, dağıtık sistemlerde kaynak israfını önleyen en kritik Go yapısıdır. Bir HTTP isteği kesildiğinde veya 2 saniye kuralı aşıldığında context.Done() kanalı kapanır; altındaki veritabanı ve HTTP istekleri erken sonlandırılarak sunucu kaynakları kurtarılır.”

Go (Golang) Örnek Uygulaması
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.external.com", nil)
resp, err := http.DefaultClient.Do(req)
if err != nil {
    // Context timeout yakalanır!
}
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

defer cancel() çağırmayı unutarak context kaynaklarının bellekten temizlenmesini engellemek.