Profiling Go App Menggunakan pprof

Melakukan profiling pada suatu sistem sangat berguna untuk mengidentifikasi pemakaian resource pada saat aplikasi berjalan. Kita dapat melihat fungsi apa yang memakai paling banyak CPU atau memori. Kita dapat melihat apakah aplikasi kita sudah efisien atau belum, dan kita dapat mencari cara untuk mengimprovenya. Pada aplikasi Go, kita dapat menggunakan pprof, library built-in untuk profiling yang dapat dengan mudah kita gunakan dan integrasikan.

[Read More]

Distributed Tracing dengan Jaeger di Go

Distributed tracing digunakan oleh software engineer untuk memonitor atau men-debug aplikasi. Ini sangat berguna untuk menemukan proses mana yang memakan waktu paling banyak, atau fungsi apa yang paling banyak terjadi error. Salah satu system untuk melakukan distributed tracing adalah Jaeger. Artikel ini akan menunjukkan bagaimana menjalankan Jaeger di local environment dan melakukan tracing aplikasi Go. Apa itu distributed tracing? Berdasarkan opentracing.io, distributed tracing adalah metode untuk mem-profile dan memonitor aplikasi, terutama aplikasi-aplikasi yang dibuat menggunakan architecture microservice. [Read More]

Golang Function Timeout Dengan Context

Timeout bisa sangat berguna pada suatu aplikasi. Dia dapat membatasi berapa lama durasi maksimum suatu proses. Kita dapat menghemat resource dengan menghentikan proses ketika waktu timeout sudah terlewati. Pada bahasa pemrograman Go, kita dapat menggunakan context untuk mengatur timeout pada suatu fungsi.

[Read More]

Menjalankan PostgreSQL Database Dengan Docker

Menjalankan PostgreSQL di docker bisa sangat berguna terutama untuk keperluan testing. Dia bisa dijalankan di mana pun. Kita dapat menjalankannya dengan data testing, menggunakannya kemudian menghapusnya dengan mudah ketika testing selesai. Menjalankan Postgres di docker juga dapat mempermudah integration testing dan automation testing.

[Read More]

Zero Downtime Reload Menggunakan Socketmaster

Zero downtime reload sudah menjadi keharusan pada kebanyakan sistem, terutama sistem yang diakses user sepanjang waktu. User menginginkan sistem yang memilik high availability. Jadi merupakan hal buruk apabila sistem memerlukan downtime untuk reload walaupun hanya dalam hitungan milisecond. Socketmaster hadir untuk membantu kita membuat sistem dengan zero downtime reload.

[Read More]

Handle Panic di HTTP Server dengan Middleware Go

Kalau kalian pernah coding di Go, kemungkinan besar pernah kena panic. Panic bisa mematikan aplikasi mu kalau tidak di recover. Untungnya di HTTP server bawaan Go sudah ada recovery untuk panic, jadi server tetap bisa berjalan walaupun ada panic. Tapi dari sisi client tidak mendapat response apa-apa kalau server kena panic. Jadi lebih baik kalau kita menggunakan panic recovery kita sendiri yang memberikan response dengan error message ketika ada panic.

[Read More]
go  http 

Menunggu Beberapa Goroutine Selesai Dengan WaitGroup

Goroutine sangat berguna untuk menjalan proses secara asynchronous. Kita juga bisa menggunakan beberapa goroutine untuk menjalankan beberapa proses dalam waktu bersamaan. Tapi bagaimana kalau kita ingin menunggu goroutine tersebut selesai sebelum melanjutkan ke proses berikutnya? Kita dapat menggunakan WaitGroup untuk mengunggu goroutine selesai dijalankan.

[Read More]
go 

NGINX Custom Error Response

Dalam menggunakan NGINX sebagai proxy, kita mungkin perlu untuk membuat custom error response, karena error response default dari NGINX kurang cakep untuk dilihat. Artikel ini akan menunjukkan cara membuat custom error response di NGINX.

[Read More]