<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Hijrah Backend on Faiq Najib</title>
		<link>https://najib.id/series/hijrah-backend/</link>
		<description>Recent content in Hijrah Backend on Faiq Najib</description>
		<generator>Hugo</generator>
		<language>id-ID</language>
		
		
		
			<copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright>
		
		
			<lastBuildDate>Sun, 25 Oct 2026 20:06:14 +0700</lastBuildDate>
		
			<atom:link href="https://najib.id/series/hijrah-backend/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Hijrah Backend (9): Epilog, MySQL, PostgreSQL, Lalu MySQL Lagi</title>
				<link>https://najib.id/writing/2026/hijrah-backend-09/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:09 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-09/</guid>
				<description>&lt;p&gt;Seri ini sudah ditutup di &lt;a href=&#34;https://najib.id/writing/2026/hijrah-backend-08/&#34;&gt;episode lalu&lt;/a&gt;. Namun ada satu cerita yang tidak sempat masuk ke bagian utama. Kejadiannya berlangsung setelah hampir semua episode lain ditulis. Anggap saja adegan pasca-kredit: layar sudah gelap, lampu sudah menyala, tapi masih ada satu adegan lagi hehe.&lt;/p&gt;&#xA;&lt;p&gt;Ini kisah tentang mesin &lt;em&gt;database&lt;/em&gt; yang dua kali diminta pindah haluan. Soal siapa yang memegang kemudi, bukan saya. Mungkin Anda sudah bisa menebak hahaha.&lt;/p&gt;&#xA;&lt;h2 id=&#34;rencana-awalnya-postgresql-untuk-semua&#34;&gt;Rencana Awalnya: PostgreSQL untuk Semua &lt;a href=&#34;#rencana-awalnya-postgresql-untuk-semua&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Arah awalnya jelas dan tertulis. Pada awal 2025, di grup atasan, pesannya disampaikan dengan mantap:&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;em&gt;cloud&lt;/em&gt; plus Go plus PostgreSQL adalah keharusan. Satu mesin untuk semuanya, satu dialek SQL, satu antrean teknologi yang perlu dipelajari. Visinya terdengar bagus, dan saya ikut antusias.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (8): Refleksi 18 Bulan (Lebih atau Kurang)</title>
				<link>https://najib.id/writing/2026/hijrah-backend-08/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:08 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-08/</guid>
				<description>&lt;p&gt;Ini episode terakhir seri ini. Angka &amp;ldquo;18 bulan&amp;rdquo; di judul perlu tanda kutip: dari hari pertama sampai tulisan ini dibuat, waktunya sudah lebih dari itu. Ya sudahlah, angka di &lt;em&gt;slide&lt;/em&gt; memang punya versinya sendiri. Dari awal seri ini memang bercerita tentang selisih itu hahaha.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tujuh episode sebelumnya isinya pelajaran teknis. Di bagian terakhir ini saya cerita apa yang akan saya ubah kalau mengulang, utang arsitektur yang saya janjikan sejak &lt;a href=&#34;https://najib.id/writing/2026/hijrah-backend-02/&#34;&gt;episode kedua&lt;/a&gt;, rencana mengajar yang tidak terlaksana, dan hal yang paling saya syukuri.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (7): Dari Paket TCP ke _Time-Series Database_</title>
				<link>https://najib.id/writing/2026/hijrah-backend-07/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:07 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-07/</guid>
				<description>&lt;p&gt;Setiap detik, armada mengirim kabar. Puluhan ribu &lt;em&gt;tracker&lt;/em&gt; GPS mengirim paket TCP berisi posisi, status mesin, dan kekuatan sinyal. Sistem harus menerima semuanya sepanjang hari, tanpa kampanye &amp;ldquo;ayo hemat kirim data&amp;rdquo; hahaha.&lt;/p&gt;&#xA;&lt;p&gt;Di &lt;a href=&#34;https://najib.id/writing/2026/hijrah-backend-01/&#34;&gt;episode pertama&lt;/a&gt; saya sempat cerita bahwa sistem lama menerima paket dan menulisnya ke &lt;em&gt;database&lt;/em&gt; dalam layanan yang sama. Sekarang tugasnya dipisah: &lt;em&gt;listener&lt;/em&gt; menerima dan menerjemahkan paket, antrean menampungnya, lalu &lt;em&gt;consumer&lt;/em&gt; menulis ke &lt;em&gt;database&lt;/em&gt;. Di episode ini saya ceritakan alurnya, termasuk kesalahan yang baru kelihatan setelah jalan hehe~&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (6): Merapikan _Monolith_, Pesawatnya Tetap Terbang</title>
				<link>https://najib.id/writing/2026/hijrah-backend-06/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:06 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-06/</guid>
				<description>&lt;p&gt;Setelah migrasi ke Go, ada satu warisan yang cukup bikin saya geleng-geleng: semua repository numpuk di dua folder besar, &lt;code&gt;repository&lt;/code&gt; dan &lt;code&gt;usecase&lt;/code&gt;. Isinya campur aduk, dari &lt;em&gt;alert&lt;/em&gt; dan &lt;em&gt;billing&lt;/em&gt; sampai &lt;em&gt;geofence&lt;/em&gt; dan &lt;em&gt;fuel&lt;/em&gt;. Secara teknis sistemnya jalan. Tapi kalau mau cari satu rumah di kota sebesar itu, saya harus hafal semua jalan.&lt;/p&gt;&#xA;&lt;p&gt;Di episode ini saya merapikan strukturnya menjadi 14 modul &lt;em&gt;domain&lt;/em&gt;, sambil menjaga &lt;em&gt;endpoint&lt;/em&gt; tetap melayani production. Penggunanya puluhan ribu, jadi tidak ada tombol jeda yang bisa saya pencet sebentar.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (5): Query yang Bilang &#39;Pakai _Index_-ku&#39;</title>
				<link>https://najib.id/writing/2026/hijrah-backend-05/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:05 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-05/</guid>
				<description>&lt;p&gt;Di &lt;a href=&#34;https://najib.id/writing/2026/hijrah-backend-02/&#34;&gt;episode kedua&lt;/a&gt;, &lt;em&gt;query&lt;/em&gt;-nya tidak bersalah. Di CLI cuma 78 milidetik, sementara &lt;em&gt;endpoint&lt;/em&gt;-nya makan 15 detik. Kali ini kebalikannya: &lt;em&gt;query&lt;/em&gt;-nya memang bersalah. Bukan karena rumit, tapi karena satu pembungkus fungsi membuatnya &lt;strong&gt;mengabaikan &lt;em&gt;index&lt;/em&gt; yang sudah disiapkan&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;index-nya-ada-malah-tiga&#34;&gt;&lt;em&gt;Index&lt;/em&gt;-nya Ada, Malah Tiga &lt;a href=&#34;#index-nya-ada-malah-tiga&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Korbannya: &lt;em&gt;endpoint&lt;/em&gt; hitungan &lt;em&gt;alert&lt;/em&gt; per &lt;em&gt;device&lt;/em&gt;. Satu tabel &lt;em&gt;alert&lt;/em&gt; berisi puluhan juta baris,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; dan di atasnya ada &lt;em&gt;index&lt;/em&gt; komposit: (tanggal, &lt;em&gt;device&lt;/em&gt;, tipe &lt;em&gt;alert&lt;/em&gt;). Kalau kamu membaca kebutuhan &lt;em&gt;endpoint&lt;/em&gt;-nya, &amp;ldquo;ambil jumlah &lt;em&gt;alert&lt;/em&gt; per &lt;em&gt;device&lt;/em&gt; per tipe, dalam rentang tanggal&amp;rdquo;, &lt;em&gt;index&lt;/em&gt; itu persis seperti dibuat untuk &lt;em&gt;query&lt;/em&gt; ini. Seseorang di masa lalu memahami masalahnya dengan benar.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (4): Kode Lama sebagai _Executable Spec_</title>
				<link>https://najib.id/writing/2026/hijrah-backend-04/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:04 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-04/</guid>
				<description>&lt;p&gt;Kalau disuruh merangkum satu aturan yang memegang kendali penuh atas migrasi ini, jawaban saya: &lt;strong&gt;yang benar adalah yang lama.&lt;/strong&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Menyebalkan, ya, saya tahu. Dipercaya memindahkan sistem ke bahasa baru, eh aturan nomor satunya malah: jangan ubah apa-apa. Bukan lebih cepat, bukan lebih bersih, bukan lebih bagus. &lt;strong&gt;Identik.&lt;/strong&gt; Tapi setelah menjalaninya, saya paham kenapa aturan yang antiklimaks ini masuk akal.&lt;/p&gt;&#xA;&lt;h2 id=&#34;kenapa-sistem-baru-harus-setia-pada-sistem-lama&#34;&gt;Kenapa Sistem Baru Harus Setia pada Sistem Lama &lt;a href=&#34;#kenapa-sistem-baru-harus-setia-pada-sistem-lama&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Bukan karena nostalgia. Alasannya pragmatis banget.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (3): Mem-_port_ Puluhan Parser Protokol GPS Tanpa Menghentikan Armada</title>
				<link>https://najib.id/writing/2026/hijrah-backend-03/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:03 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-03/</guid>
				<description>&lt;p&gt;Ada kendaraan yang sedang parkir, mesin mati, tapi sistem membaca kecepatannya &lt;strong&gt;66 km/jam&lt;/strong&gt;. Satelitnya ramai dan datanya terus masuk. Setelah lumayan lama pusing, ternyata penyebabnya cuma satu karakter di kode parser. Satu. Karakter. Hahaha.&lt;/p&gt;&#xA;&lt;h2 id=&#34;rewind-januari-2025&#34;&gt;Rewind: Januari 2025 &lt;a href=&#34;#rewind-januari-2025&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Seperti saya ceritakan di &lt;a href=&#34;https://najib.id/writing/2026/hijrah-backend-01/&#34;&gt;episode pertama&lt;/a&gt;, mandat migrasi sudah menunggu sebelum saya diterima kerja. Salah satu tugas terbesarnya adalah menulis ulang parser protokol, pintu masuk bagi seluruh data armada.&lt;/p&gt;&#xA;&lt;p&gt;Gambarannya begini: ada puluhan tipe &lt;em&gt;tracker&lt;/em&gt; GPS, tiap vendor punya bahasa binernya sendiri, dan sistem lama punya satu &lt;em&gt;parser&lt;/em&gt; untuk tiap bahasa itu. Tugas saya menulis ulang semuanya di Go, sementara armada terus kirim data tiap detik. Tidak ada jendela &amp;ldquo;kita matikan dulu semalam ya&amp;rdquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (2): Anatomi Endpoint 15 Detik</title>
				<link>https://najib.id/writing/2026/hijrah-backend-02/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:02 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-02/</guid>
				<description>&lt;p&gt;Di &lt;a href=&#34;https://najib.id/writing/2026/hijrah-backend-01/&#34;&gt;episode sebelumnya&lt;/a&gt; saya sempat cerita soal &lt;em&gt;endpoint&lt;/em&gt; yang bisa makan 15 detik sekali panggil. Bagian yang paling saya ingat justru bukan teknisnya, tapi betapa yakinnya saya pada jawaban-jawaban yang ternyata salah. Ehem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;satu-klik-lalu-menunggu&#34;&gt;Satu Klik, Lalu Menunggu &lt;a href=&#34;#satu-klik-lalu-menunggu&#34; class=&#34;tdln dimmer&#34;&gt;&lt;small&gt;#&lt;/small&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Satu klik pada &lt;em&gt;endpoint&lt;/em&gt; estimasi bahan bakar per grup kendaraan, lalu menunggu sekitar 17 detik. Kalau &lt;em&gt;dashboard&lt;/em&gt;-nya dibuka tiap hari, menunggu segitu lama rasanya seperti balik ke zaman &lt;em&gt;dial-up&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Dan selama berminggu-minggu penyelidikan, ada &lt;em&gt;soundtrack&lt;/em&gt;-nya: &lt;em&gt;&amp;ldquo;Faiq, kok error?&amp;rdquo; &amp;ldquo;Faiq, kok lemot?&amp;rdquo;&lt;/em&gt; Tenang, Mas, lagi saya telusuri hehe.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hijrah Backend (1): Hari Pertama Disodori Warisan 370&#43; Endpoint</title>
				<link>https://najib.id/writing/2026/hijrah-backend-01/</link>
				<pubDate>Thu, 10 Sep 2026 15:30:01 +0700</pubDate>
				<guid>https://najib.id/writing/2026/hijrah-backend-01/</guid>
				<description>&lt;p&gt;Cerita migrasi ini dimulai bahkan sebelum saya resmi bekerja.&lt;/p&gt;&#xA;&lt;p&gt;Di sebuah perusahaan GPS tracking di Surabaya, salah satu senior tim mendapat mandat me-&lt;em&gt;rewrite&lt;/em&gt; sistem eksisting. Sampai hari ini saya tidak tahu persis apa yang dibicarakan di rapat internalnya; yang saya tahu hanya hasilnya: mereka memutuskan pindah ke Go. Dan baru setelah keputusan itu mantap, lowongan pun dibuka.&lt;/p&gt;&#xA;&lt;p&gt;Jadi posisi saya di rekrutmen itu agak unik: saya bukan ikut menentukan arah proyeknya. Saya datang untuk menjalankan keputusan yang sudah dibuat orang lain.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
