Go

Docker & Containerization

Dockerfile, multi-stage build, optimasi image, docker-compose, orkestrasi container

20 pertanyaan wawancaraยท
Senior
1

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.

2

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.

3

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.

4

Bagaimana cara mengoptimalkan caching layer Docker saat membangun aplikasi Go?

5

Apa keuntungan menggunakan image Google Distroless untuk Go dibandingkan dengan scratch?

+17 pertanyaan wawancara

Kuasai Go untuk wawancara berikutnya

Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.

Mulai gratis