GitHub Actions'ta cache ile build'i %80 hızlandırmak

Pipeline her push'ta ~12 dakika sürüyordu. Feedback loop çok yavaş olduğu için ekip CI/CD'den uzaklaşıyordu. Çoğu zaman npm install ve sıfırdan docker build'e gidiyordu — her seferinde.
Önce dependency cache'i ayırdık. actions/cache ve package-lock.json hash'ine dayalı key ile npm ci ~3 dakikadan ~20 saniyeye indi. Kağıt üstünde basit, pratikte en büyük etki.
Sonra Docker. docker/build-push-action ile cache-from/cache-to ve registry'yi cache backend olarak kullandık. Base image ve dependency layer'ları artık her seferinde rebuild olmuyor.
Sonuç: ~12 dakikadan ~2.5 dakikaya — yaklaşık %80 hızlanma. Ekip tekrar her commit'i push etmeye başladı çünkü beklemiyordu.
Geç öğrendiğim: cache key lockfile'a dayanmalı, branch'e değil. Bir kez eski feature branch main cache'ini hit etti ve yanlış dependency versiyonu deploy oluyordu.
Cache'i sadece hız için tutma — invalidation stratejisi de önemli. Şüphelenince "purge cache" workflow'umuz var. Ucuz sigorta; bir kez kurtardı.
Yaygın hata: restore-keys olmadan node_modules cache'lemek. Exact key miss olunca sıfırdan başlarsın ama step yeşil görünür.
Artık her pipeline cache hit rate özeti yazdırıyor. %70 altı key stratejisi veya layer yapısında sorun demek. Motto: ölç, tahmin etme.