Kembali ke Blog

Python vs Go buat Backend Tools Internal: Pengalaman Saya

#python#golang#backend
Python vs Go buat Backend Tools Internal: Pengalaman Saya

Di luar aplikasi desktop utama yang saya kerjain, hampir tiap bulan ada aja kebutuhan bikin tools kecil — automation, scripting, backend service ringan buat kebutuhan internal klien atau proyek sendiri. Dua bahasa yang paling sering saya pakai buat ini: Python dan Go. Bukan karena saya fanatik sama salah satunya, tapi karena keduanya nyelesain jenis masalah yang beda.

Contoh yang paling nempel: saya pernah bikin tool security reporting buat salah satu klien yang butuh parsing log dari beberapa sumber berbeda (nginx access log, firewall log, auth log) terus generate laporan mingguan otomatis. Awalnya saya coba Go karena “toh bakal jalan sebagai cron job terus-terusan, kenapa nggak pakai yang lebih cepat.” Ternyata itu keputusan yang salah. Format log yang saya parsing itu nggak konsisten — tiap sumber punya format timestamp beda, ada yang multi-line, ada yang butuh regex yang berubah-ubah tiap saya nemu edge case baru. Di Go, tiap kali saya nemu format baru saya harus compile ulang buat tes. Di Python saya bisa langsung iterate di REPL, coba regex-nya, liat hasilnya, ulang. Saya switch ke Python di hari kedua dan langsung kerasa bedanya.

Kapan saya pilih Python

  • Butuh prototyping cepat atau one-off script yang bakal saya jalanin sekali dua kali terus dibuang
  • Kerjaannya banyak berhubungan dengan data processing, parsing format yang nggak konsisten, atau reporting
  • Butuh library yang udah matang buat domain spesifik — buat security reporting saya banyak pakai library Python yang udah nyelesain parsing berbagai format log, jadi saya nggak perlu nulis parser dari nol

Kapan saya pilih Go

  • Tools-nya bakal jalan terus-terusan sebagai service atau daemon, bukan script yang dijalanin manual
  • Butuh performa dan concurrency yang predictable — goroutine buat handle banyak koneksi sekaligus itu jauh lebih gampang ditulis dan di-reason-about dibanding threading di Python
  • Bakal di-deploy ke banyak environment client yang beda-beda — single binary hasil go build jauh lebih gampang didistribusiin dibanding harus mastiin environment Python client punya dependency yang sama

Setelah pengalaman security reporting tool itu, aturan yang saya pegang sekarang cukup sederhana: kalau saya masih perlu banyak iterasi cepat buat ngerti bentuk masalahnya, Python. Begitu bentuknya udah jelas dan yang saya butuhin cuma performa stabil jalan terus-terusan, saya port ke Go — atau kalau nggak sempat, ya saya biarin di Python asal performa-nya masih cukup, karena rewrite itu ada cost-nya sendiri yang harus sepadan sama manfaatnya.

Nggak ada yang “lebih baik” secara mutlak di sini. Ini soal fase masalahnya lagi di mana — masih dieksplorasi atau udah jelas bentuknya. Kalau kamu baru mulai dan bingung, coba dua-duanya di proyek kecil yang sama dan rasain sendiri di titik mana masing-masing mulai kerasa lebih pas.