
Docker & Containerization
Dockerfile, multi-stage build, image optimizasyonu, docker-compose, container orkestrasyonu
1Bir Go uygulaması için multi-stage build kullanmanın temel nedeni nedir?
Bir Go uygulaması için multi-stage build kullanmanın temel nedeni nedir?
Cevap
Multi-stage build, derleme ortamını son image'dan ayırır. Build aşaması tam Go SDK'sını (birkaç yüz MB) içerirken, son image yalnızca derlenmiş binary'yi içerir. Bu, image boyutunu önemli ölçüde azaltır (~800MB'den birkaç MB'ye) ve üretimde gereksiz build araçlarını ortadan kaldırarak saldırı yüzeyini en aza indirir.
2Üretimdeki bir Go uygulaması için boyutu ve saldırı yüzeyini en aza indirmek için hangi base image önerilir?
Üretimdeki bir Go uygulaması için boyutu ve saldırı yüzeyini en aza indirmek için hangi base image önerilir?
Cevap
scratch image, işletim sistemi içermeyen boş bir image'dır. Go, libc veya diğer sistem bağımlılıklarına ihtiyaç duymayan statik binary'lere derlendiği için scratch kullanılabilir. Bu, mümkün olan en küçük image'ları (birkaç MB) üretir ve istismar edilebilir herhangi bir araç veya shell olmadığı için en iyi güvenliği sağlar. Distroless ve alpine geçerli ancak daha az optimal alternatiflerdir.
3scratch image ile uyumlu bir binary oluşturmak için hangi Go derleme flag'leri gereklidir?
scratch image ile uyumlu bir binary oluşturmak için hangi Go derleme flag'leri gereklidir?
Cevap
CGO_ENABLED=0, cgo'yu devre dışı bırakarak Go'yu net ve os/user gibi paketler için saf Go uygulamalarını kullanmaya zorlar. Bu olmadan binary, libc'ye dinamik bağımlılıklara sahip olurdu. GOOS ve GOARCH hedef platformu belirtir. Bu flag'lerin birleşimi, harici bağımlılığı olmayan tamamen statik bir binary üretir ve scratch için idealdir.
Bir Go uygulaması build edilirken Docker layer önbelleğe alma nasıl optimize edilir?
scratch ile karşılaştırıldığında Go için Google Distroless image'larını kullanmanın avantajı nedir?
+17 mülakat soruları
Diğer Go mülakat konuları
Go Temelleri
Go Veri Yapıları
Go Arayüzleri
Hata Yönetimi
Goroutine Temelleri
Channels
Go Modules
HTTP Sunucusu
HTTP İstemcisi
JSON Kodlama
Database/SQL
context Paketi
Testing
Eşzamanlılık Desenleri
Senkronizasyon İlkelleri
Go Web Framework'leri
REST API Tasarımı
gRPC
Reflection
Bellek Yönetimi
Performans Optimizasyonu
Generics
Go Design Patterns
Microservices
Güvenlik ve Kimlik Doğrulama
Kubernetes Basics
İleri Düzey Go
CLI Geliştirme
Bir sonraki mülakatın için Go'de uzmanlaş
Tüm sorulara, flashcards'a, teknik testlere, code review alıştırmalarına ve mülakat simülatörlerine eriş.
Ücretsiz başla