Skip to main content

Minimize golang footprint

·2 mins

By default golang telah memiliki footprint yang sangat kecil, namun kita dapat melakukan optimasi pada binary file yang telah dibuild dengan menggunakan flag saat menjalankan command build dan juga menggunkaan upx untuk melakukan compress file size nya.

Default go build #

Untuk membuat binary file yang siap digunakan, kita dapat menjalankan command go build .

output go build
dari command ini kita mendapatkan hasil binary file dengan ukuran 30M

Go build with custom flag #

Command go build memiliki beberapa flagging, salah satunya adalah -ldflags, flag ini berguna untuk menentukan opsi linker dari binary yang akan dibuat. Ada 2 opsi yang dapat kita gunakan untuk melakukan mengecilkan binary file yang dibangun yaitu -s -w, kedua opsi ini kana menghapus symbol table dan debug info dari binary file yang dibangun. kita jankan command go build -ldflags "-s -w" .

output go build with flag
dari command ini kita mendapatkan hasil binary file dengan ukuran 21M, dengan menambahkan flag ini kita berhasil menurunkan file size sebanyak 30%

UPX #

UPX adalah open source packer yang dapat digunakan untuk melakukan compress pada binary file. kita dapat menggunakan hasil binary file dengan go build with custom flag, kita jalankan command upx --best --lzma ./<binary file>

upx
dari command ini kita mendapatkan hasil binary file dengan ukuran 5.3M, dengan menambahkan flag ini kita berhasil menurunkan file size sebanyak 82% dari default go build

Manfaat #

Dengan ukuran file yang semakin kecil, kita dapat mempercepat proses deployment dan juga resource usage yang digunakan saat menjalankan service yang kita miliki dapat berkurang