Webhook
Mekanisme di mana satu sistem otomatis 'ngetuk pintu' sistem lain via HTTP request saat ada event yang terjadi. Kayak notifikasi push, tapi antar sistem, bukan ke smartphone kamu.
Apa itu Webhook?
Webhook adalah cara satu sistem memberi tahu sistem lain bahwa ada sesuatu yang terjadi, secara otomatis lewat HTTP request. Waktu event terjadi di sistem pengirim, dia langsung kirim data ke URL yang udah kamu tentukan sebelumnya tanpa kamu perlu minta duluan.
Analogi paling gampang: kamu pesan makanan online, terus minta notifikasi SMS kalau pesanan udah di-pick up kurir. Kamu nggak perlu terus-terusan nanya status ke aplikasi, karena sistem mereka yang bakal kabarin kamu otomatis. Nah, webhook itu kayak mekanisme "kabarin otomatis" tapi antar sistem atau aplikasi, bukan ke HP kamu.
Webhook vs Polling
Cara lain untuk tahu kalau ada event adalah polling: sistem kamu terus-terusan nanya ke sistem lain, "ada yang baru gak? ada yang baru gak?" setiap beberapa detik. Ini boros resource dan lambat.
| Aspek | Polling | Webhook |
|---|---|---|
| Cara kerja | Sistem kamu yang terus nanya | Sistem lain yang kasih tahu kamu |
| Latency | Tergantung interval polling | Hampir real-time |
| Resource | Boros, banyak request sia-sia | Efisien, request cuma saat ada event |
| Kompleksitas | Sederhana | Perlu URL endpoint yang bisa di-hit |
| Kontrol timing | Kamu yang pegang | Sistem pengirim yang tentukan |
Cara Kerjanya
Alurnya simpel banget:
- Kamu daftarkan URL endpoint di sistem pengirim (misalnya Midtrans, Xendit, GitHub)
- Kamu bikin endpoint di server kamu yang bisa nerima HTTP POST request
- Waktu event terjadi di sistem pengirim, mereka kirim data ke URL kamu
- Server kamu proses data tersebut dan balas dengan response 200
Contoh Nyata di Indonesia
Xendit (payment gateway Indonesia) pakai webhook untuk kabarin backend kamu kalau pembayaran berhasil. Kamu nggak perlu terus-terusan cek status invoice ke Xendit, karena Xendit yang bakal kirim request ke endpoint kamu waktu ada update status pembayaran.
GitHub juga pakai webhook untuk trigger CI/CD pipeline waktu ada push ke repository. Setiap kali developer push code, GitHub kirim webhook ke Jenkins atau GitHub Actions secara otomatis.
Keamanan Webhook
Karena webhook adalah HTTP request yang datang dari luar, kamu perlu validasi bahwa request itu beneran dari sumber yang legitimate dan bukan penyerang yang nyamar. Biasanya dilakukan lewat signature verification menggunakan HMAC atau secret token yang dikirim di header request.
Satu hal lagi: karena pengiriman webhook bisa gagal (server kamu lagi down, timeout, dll), sistem yang baik punya retry mechanism. Ini berarti endpoint kamu harus idempoten supaya event yang dikirim ulang nggak bikin duplikat data.
Udah paham Webhook? Lanjut latihan SQL dan Excel yuk!
Latihan interaktif, langsung di browser.