
Docker & Containerization
Dockerfile, multi-stage build, optimasi image, docker-compose, orkestrasi container
1Apa alasan utama menggunakan multi-stage build untuk aplikasi Go?
Apa alasan utama menggunakan multi-stage build untuk aplikasi Go?
Jawaban
Multi-stage build memisahkan lingkungan kompilasi dari image akhir. Stage build berisi SDK Go lengkap (beberapa ratus MB), sedangkan image akhir hanya berisi binary yang telah dikompilasi. Ini secara drastis mengurangi ukuran image (dari ~800MB menjadi beberapa MB) dan meminimalkan permukaan serangan dengan menghilangkan build tools yang tidak diperlukan di produksi.
2Base image mana yang direkomendasikan untuk aplikasi Go di produksi untuk meminimalkan ukuran dan permukaan serangan?
Base image mana yang direkomendasikan untuk aplikasi Go di produksi untuk meminimalkan ukuran dan permukaan serangan?
Jawaban
Image scratch adalah image kosong tanpa sistem operasi. Go dikompilasi menjadi binary statis yang tidak memerlukan libc atau dependensi sistem lainnya, sehingga scratch dapat digunakan. Ini menghasilkan image sekecil mungkin (beberapa MB) dan memberikan keamanan terbaik karena tidak ada tools atau shell yang dapat dieksploitasi. Distroless dan alpine adalah alternatif yang valid tetapi kurang optimal.
3Flag kompilasi Go mana yang diperlukan untuk membuat binary yang kompatibel dengan image scratch?
Flag kompilasi Go mana yang diperlukan untuk membuat binary yang kompatibel dengan image scratch?
Jawaban
CGO_ENABLED=0 menonaktifkan cgo, memaksa Go menggunakan implementasi pure Go untuk paket seperti net dan os/user. Tanpa ini, binary akan memiliki dependensi dinamis ke libc. GOOS dan GOARCH menentukan platform target. Kombinasi flag ini menghasilkan binary yang sepenuhnya statis tanpa dependensi eksternal, ideal untuk scratch.
Bagaimana cara mengoptimalkan caching layer Docker saat membangun aplikasi Go?
Apa keuntungan menggunakan image Google Distroless untuk Go dibandingkan dengan scratch?
+17 pertanyaan wawancara
Topik wawancara Go lainnya
Dasar-Dasar Go
Struktur Data Go
Interface Go
Penanganan Error
Dasar-Dasar Goroutine
Channels
Go Modules
Server HTTP
Klien HTTP
Enkoding JSON
Database/SQL
Paket context
Testing
Pola Concurrency
Primitif Sinkronisasi
Framework web Go
Desain API REST
gRPC
Reflection
Manajemen Memori
Optimasi Performa
Generics
Go Design Patterns
Microservices
Keamanan dan Autentikasi
Kubernetes Basics
Go Tingkat Lanjut
Pengembangan CLI
Kuasai Go untuk wawancara berikutnya
Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.
Mulai gratis