backend
Catatan teknis seputar web development, DevOps, dan integrasi AI.
4 artikel
- 22.33backend
Tabel Tipe yang Dibaca Manusia, Bukan ENUM
Ketika tipe layanan butuh kategori lintas bidang dan saklar aktif, tabel lookup mengalahkan ENUM.
TL;DR: Awalnya sempat mikir pakai ENUM buat status tipe layanan, tapi ternyata butuh metadata kayak kategori, flag aktif, dan kode unik buat integrasi. Jadinya dibuat tabel lookup, hapus kategori cukup SET NULL biar riwayat data aman. ENUM repot karena nyimpen indeks dan nambah nilai harus ubah skema, validasi tetap dua lapis plus seeding pakai code biar ID stabil.
#mysql#postgresql#skema-database - 19.22backend
Ketika Guard Status Dilepas: Satu Aturan Keras Pengganti Larangan
Pengalaman melepas guard forward-only pada state machine booking, dan mengapa satu aturan keras lebih efektif daripada larangan total.
TL;DR: Gara-gara guard status cuma boleh maju, admin kesulitan mundurin tiket yang salah input, malah bikin tiket sampah buat akal-akalan. Solusinya simpel: guard dibuang, admin bebas ubah status ke mana aja lewat API yang sama. Tapi satu aturan keras tetap: kalau jadi ditolak, wajib isi catatan keputusan dan pemohon otomatis dikirim surel, jadi semua kegiatan tetap ke-audit.
#workflow#backend#state-machine - 03.30backend
Re-Parent Satu Kategori, Tree-nya Ikut Nyiklus
Validasi parent yang cuma ngecek self-parent itu ilusi: re-parent ke keturunan sendiri diam-diam bikin siklus, dan MySQL 5.7 nggak punya CTE cycle avoidance.
TL;DR: Mindahin A jadi anak B bikin siklus karena B itu anaknya A, validasi lama cuma cek parent bukan diri sendiri. Sekarang validateCategory manjat ngecek leluhur satu-satu pakai GetCategoryByID dan errors.Is sampai root, kalau id sama ya ditolak. Biar gak muter terus kalau data lama udah rusak, jalurnya dibatasin cuma sepuluh level aja.
#golang#mysql#backend - 12.24backend
Invalidasi Cache Redis: Naikkan Versi, Jangan Hapus Key
Ganti cara invalidasi cache jawaban chat AI: bump versi namespace dengan INCR supaya key lama unreachable, bukan dihapus satu-satu.
TL;DR: Jawaban chat AI yang di-cache di Redis jadi basi tiap artikel berubah, dan masalah utamanya bukan SCAN yang blocking melainkan fan-out invalidasi yang rumit. Solusinya versioned key: tiap mutasi nge-bump counter versi via INCR, key lama jadi unreachable dan mati sendiri lewat TTL 24 jam. Bonusnya ada lookup mundur ke versi sebelumnya dan fallback persona saat LLM down.
#redis#caching#cache-invalidation