Review Mingguan — 19–25 Oktober 2026
Status tercatat: 75 topik di pool · 28 selesai (deep 8/22 · tech 10/28 · light 10/25) · 21 entri minggu ini (7 hari × 3 sesi, tanpa bolong).
📌 Konsep yang Dipelajari
05:00 — Deep (Arsitektur & Fondasi)
| Tanggal | Topik | Inti yang dicatat |
|---|---|---|
| 19 Okt | PACELC | CAP cuma soal partisi; PACELC menambah: kalau tidak ada partisi pun tetap ada trade-off latency vs consistency. "CA" bukan pilihan yang bisa dipilih — itu keadaan yang tidak ada. |
| 20 Okt | Backpressure & queue semantics | At-least-once vs exactly-once: yang kedua bukan gratis, butuh idempotensi di sisi konsumen. Tanpa backpressure, antrean jadi tempat sampah yang tumbuh. |
| 21 Okt | Zero-downtime migration | Expand–contract: tambah kolom baru → tulis ke dua tempat → backfill → pindah baca → hapus lama. Satu migrasi besar = satu jendela downtime. |
| 22 Okt | Multi-tenancy | Shared DB / schema-per-tenant / DB-per-tenant: pilihan bukan soal preferensi tapi soal blast radius dan biaya isolasi. Noisy neighbor adalah masalah utama shared DB. |
| 23 Okt | GC di produksi | Tuning GC = memilih antara pause dan throughput, tidak ada yang gratis. Pause panjang biasanya bukan salah GC, tapi salah alokasi. |
| 24 Okt | Amortized analysis | Append dynamic array O(1) amortized karena doubling: biaya realloc dibagi rata. Amortized ≠ rata-rata statistik — ini batas worst-case agregat. |
| 25 Okt | Hexagonal architecture | Port & adapter berguna saat ada lebih dari satu delivery mechanism atau butuh isolasi test. Kalau aplikasinya CRUD satu jalur, ini upacara. |
15:00 — Technical
| Tanggal | Topik | Inti yang dicatat |
|---|---|---|
| 19 Okt | EXPLAIN ANALYZE | Baca dari dalam ke luar; curigai selisih besar antara rows estimasi vs aktual — itu tanda statistik basi, bukan tanda query salah tulis. |
| 20 Okt | Isolation level | Anomali yang tetap lolos: write skew di REPEATABLE READ, phantom di SI. Serializable bukan default karena biayanya nyata (abort & retry). |
| 21 Okt | Docker layer caching | Urutan COPY/RUN menentukan cache hit. Multi-stage build memisahkan toolchain build dari runtime — image kecil, cache stabil. |
| 22 Okt | CI/CD & progressive delivery | Artifact immutability: build sekali, promote yang sama. Canary/blue-green memindahkan risiko dari "semua user sekaligus" ke "sebagian kecil dulu". |
| 23 Okt | CDN & edge caching | Cache key adalah kontrak. Purge itu mahal dan lambat; lebih baik desain URL yang bisa di-invalidate daripada mengandalkan purge. |
| 24 Okt | Core Web Vitals | LCP/INP/CLS: yang diukur adalah pengalaman, bukan ukuran bundle. Bundle besar belum tentu lambat kalau jalur kritisnya kecil. |
| 25 Okt | Load testing (k6) | Uji sampai patah, bukan sampai lolos. Titik patah biasanya di dependensi bersama (DB pool, koneksi), bukan di app server. |
19:00 — Light
| Tanggal | Topik | Inti yang dicatat |
|---|---|---|
| 19 Okt | Velocity menipu | Velocity mengukur output tim, bukan nilai. Naikkan dengan memecah tiket — angkanya naik, produknya tidak. |
| 20 Okt | Anti-pattern sprint | Demo teater, backlog kuburan, retro tanpa aksi: tiga ritual yang menghasilkan dokumen, bukan perubahan. |
| 21 Okt | Postmortem blameless | Fokus ke kondisi sistem yang memungkinkan kesalahan, bukan ke orang. Tanpa itu, orang menyembunyikan insiden berikutnya. |
| 22 Okt | ReDoS | Backtracking eksponensial dari nested quantifier (a+)+. Regex aman = hindari ambiguitas, batasi panjang input, pakai mesin tanpa backtracking. |
| 23 Okt | Bug timezone & DST | Simpan UTC, konversi di tepi. Bug muncul saat "hari ini" dihitung di server, atau saat offset disimpan alih-alih zona. |
| 24 Okt | Y2K | Tidak meledak karena kerja besar sebelumnya — dua digit tahun diperbaiki berlapis. Pelajaran: bencana yang dicegah tidak terlihat seperti keberhasilan. |
| 25 Okt | Langit biru & senja merah | Hamburan Rayleigh: intensitas ∝ 1/λ⁴, jadi biru terhambur lebih kuat; senja merah karena jalur cahaya lebih panjang, biru habis tersebar dulu. |
🛠️ Keterampilan yang Dilatih
Yang bisa langsung dipakai setelah minggu ini:
- Membaca rencana query — bedakan query lambat karena index vs karena estimasi statistik.
- Memilih isolation level sadar-anomali — tahu kapan REPEATABLE READ cukup dan kapan harus Serializable + retry.
- Migrasi tanpa downtime — pola expand–contract bisa dipakai besok di DB produksi apa pun.
- Mendesain ulang Dockerfile — reorder layer, multi-stage, cache stabil.
- Menyusun load test yang jujur — cari titik patah, ukur dependensi bersama.
- Audit regex di codebase — cari nested quantifier, batasi panjang input.
- Audit penanganan waktu — cari
datetime.now()tanpa zona, offset tersimpan, perhitungan "hari ini" di server. - Menilai apakah hexagonal layak — pertanyaan "berapa delivery mechanism?" sebagai gerbang.
- Menulis postmortem yang tidak defensif — struktur kondisi → kontributor → aksi.
- Memisahkan metrik output dari metrik nilai — velocity, ukuran bundle, jumlah tiket.
🕳️ Celah Pengetahuan
Topik yang tercatat selesai tapi belum tuntas — ini penilaian saya dari isi topiknya, bukan dari catatan sesi:
- Backpressure selesai tanpa menyentuh bagaimana menerapkannya (bounded queue, drop policy, 429 vs antre). Masih abstrak.
- Multi-tenancy selesai tanpa jalur migrasi tenant (dari shared ke DB-per-tenant saat satu tenant jadi besar).
- Isolation level selesai tanpa pola retry serialization failure di kode aplikasi.
- Load testing selesai tanpa observability — mengukur tanpa metric/trace = tahu patah, tidak tahu kenapa.
- GC tuning selesai tanpa profiling — tuning tanpa flame graph = menebak.
- CDN caching selesai tanpa HTTP/2 vs HTTP/3 (QUIC) — transport belum dibahas.
- Hexagonal selesai tanpa DDD bounded context — batas aplikasi sudah, batas domain belum.
- PACELC selesai tanpa consistency models konkret (read-your-writes, monotonic reads).
- Zero-downtime migration selesai tanpa saga/kompensasi — migrasi data lintas service belum.
- CI/CD selesai tanpa Terraform state — pipeline aplikasi ada, pipeline infra belum.
- EXPLAIN ANALYZE selesai tanpa N+1 query — query tunggal bisa, pola ORM belum.
- Timezone selesai tanpa UTF-8 vs UTF-16 — kelas bug "asumsi encoding" belum.
Celah paling besar, dalam satu kalimat: minggu ini penuh tentang cara sistem gagal, tapi belum ada satu pun topik tentang cara melihat sistem yang sedang gagal (observability + profiling).
🔗 Koneksi Antar Bidang
Enam benang yang menyatukan 21 topik:
1. Sumbu latency–consistency. PACELC (deep) ↔ isolation level (tech) ↔ CDN staleness (tech) ↔ multi-tenancy noisy neighbor (deep). Semuanya satu pertanyaan sama: seberapa basi data boleh, dan siapa yang menanggung biayanya? CDN TTL, isolation level, dan replikasi lintas region adalah tiga wajah dari keputusan yang identik.
2. Rantai saturasi. Backpressure (deep) ↔ load testing (tech) ↔ GC pause (deep) ↔ queue semantics (deep). Sistem tidak patah di satu titik — antrean naik, latency naik, timeout naik, retry menambah beban, antrean naik lagi. Load test tanpa memahami backpressure cuma mengukur gejala.
3. Deploy sebagai urutan yang bisa dibatalkan. Zero-downtime migration (deep) ↔ Docker layers (tech) ↔ CI/CD artifact immutability (tech) ↔ hexagonal (deep). Empat topik, satu prinsip: setiap langkah harus aman kalau langkah berikutnya gagal. Expand–contract, multi-stage build, dan port-adapter semuanya tentang membuat perubahan bisa dibalik tanpa mematikan sistem.
4. Kelas bug "asumsi yang dulu benar". ReDoS (light) ↔ timezone/DST (light) ↔ Y2K (light) ↔ isolation anomaly (tech). Semua bug ini lahir dari asumsi yang valid di kondisi awal: input pendek, satu zona waktu, tahun 19xx, tidak ada konkurensi. Bug bukan kesalahan logika — bug adalah asumsi yang kedaluwarsa.
5. Teater pengukuran. Velocity menipu (light) ↔ anti-pattern sprint (light) ↔ postmortem blameless (light) ↔ Core Web Vitals (tech). Angka yang dioptimasi berhenti mengukur apa yang seharusnya diukur. Velocity dipecah tiketnya, LCP dikejar dengan preload, postmortem diisi nama — semua jadi ritual kalau metriknya tidak dijaga.
6. Batas sebagai keputusan, bukan struktur. Hexagonal (deep) ↔ multi-tenancy (deep) ↔ monolith vs microservices (pekan lalu, 18 Okt). Ketiganya menjawab "di mana garis ditarik dan siapa yang menanggung biaya di sisi lain garis". Hexagonal menarik garis di kode, multi-tenancy di data, monolith/micro di deployment.
7. (Silang, non-teknis). Hamburan Rayleigh (light) adalah contoh terbaik cost model: 1/λ⁴ adalah analisis asimptotik yang sama bentuknya dengan amortized analysis — dominasi suku terbesar menjelaskan seluruh perilaku sistem.
🎯 Rekomendasi Minggu Depan
Delapan topik, dipilih untuk menutup celah di atas — bukan acak dari sisa pool:
| Prioritas | Sesi | ID | Alasan |
|---|---|---|---|
| 1 | deep | d-observability |
Metric vs log vs trace + cardinality. Tanpa ini, load testing dan GC tuning minggu ini buta. |
| 2 | tech | t-profiling |
Flame graph. Pasangan wajib GC tuning. |
| 3 | deep | d-circuit-breaker |
Lanjutan langsung backpressure: timeout budget, bulkhead. |
| 4 | tech | t-n-plus-one |
Lanjutan EXPLAIN ANALYZE; pola query yang paling sering jadi biang lambat. |
| 5 | deep | d-ddd-bounded |
Menutup arc hexagonal: batas domain, bukan cuma batas adapter. |
| 6 | tech | t-http2-3 |
Transport layer yang belum tersentuh, padahal CDN sudah dibahas. |
| 7 | light | l-utf8 |
Melanjutkan kelas bug "asumsi encoding" setelah timezone. |
| 8 | tech | t-terraform-state |
Pipeline aplikasi sudah (CI/CD), pipeline infra belum. |
Cadangan kalau salah satu sudah terpakai: d-saga, d-consistency-models, t-llm-eval.
❓ Satu Pertanyaan Retrospektif
Dari 21 topik minggu ini, berapa yang benar-benar mengubah satu baris kode, satu config, atau satu keputusan di pekerjaanmu — dan kalau jawabannya nol, apakah ini belajar atau cuma konsumsi?
Pertanyaan lanjutannya, kalau mau lebih tidak nyaman: topik mana minggu ini yang kamu tidak bisa jelaskan ulang dalam 60 detik tanpa membuka catatan? Itu daftar sebenarnya yang perlu diulang — bukan yang terlihat selesai di pool.