Clipper: Tembel Katman Çekme ile Docker Build 7 Kat Hızlanıyor
Clipper, CI'da kaybolan cache-mount'ları dışa aktarıp gereksiz runtime dosyalarını atlayarak Docker build sürelerini 7 kata kadar hızlandırıyor.
Docker/BuildKit'te yaygın bir sorun var: --mount=type=cache ile oluşturulan build cache'leri, GitHub Actions gibi geçici (ephemeral) çalıştırıcılarda her seferinde çöp olup gidiyor, çünkü BuildKit bu cache'leri dışa aktarmak için yerleşik bir yol sunmuyor. Ayrıca büyük imajların çoğu, sadece çalışma zamanında kullanılan ama build sırasında gerek olmayan dosyalar içeriyor; bunları yine de çekmek zaman kaybı. Clipper adlı özel bir BuildKit sürücüsü ve kayıt defteri (registry), her iki sorunu birden çözerek llama.cpp derlemesinde 7 kattan fazla hızlanma sağlıyor.
Clipper, klasik OCI tarball katmanları yerine dosya bazında ayrıştırılmış bir içerik listesi (TOC) ve ayrı blob'lar kullanıyor. Bu sayede metadata değişikliklerinde tüm katmanı yeniden oluşturmak gerekmiyor, dosyalar arası paylaşım artıyor ve büyük dosyaların indirilmesiyle diğerlerinin açılması paralel yürütülebiliyor. Ayrıca referanslar sıkıştırılmamış özet (digest) üzerinden tutulduğu için farklı makinelerde veya sıkıştırma kütüphanesi güncellemelerinde hash tutarsızlığı yaşanmıyor.
GitHub Actions üzerinde yapılan testlerde, tembel katman çekme özelliği açıkken llama.cpp build süresi 427 saniyeden 56 saniyeye düşerek 7,6 kat hızlanma gösterdi. uv ile paket kurulumu testinde ise Clipper, vanilla BuildKit'e göre 2,3 ile 3 kat arası hızlanma sağladı; özellikle export aşaması dakikalarca kısaldı. Bu sonuçlar, CI/CD hatlarında Docker build sürelerini düşürmek isteyen mühendisler için pratik ve ölçülebilir bir kazanç sunuyor.