Tuesday, October 27, 2026

Memahami FPS pada Flutter: Kunci Utama Aplikasi Android & iOS yang Super Mulus

Pernahkah Anda menggunakan aplikasi yang terasa sangat mulus saat di-scroll, tetapi aplikasi lain terasa patah-patah (lagging)? Di dunia pengembangan aplikasi seluler, kenyamanan visual tersebut sangat ditentukan oleh satu variabel kunci: FPS (Frames Per Second).


Bagi developer Flutter, memahami FPS bukan sekadar persoalan angka, melainkan kunci untuk menciptakan User Experience (UX) kelas atas. Artikel ini membahas secara mendalam apa itu FPS, standar performa yang bagus, hingga faktor teknis yang membuatnya tinggi dan stabil.



Apa Itu FPS pada Flutter?

Wednesday, October 21, 2026

Kafka vs RabbitMQ: Perbedaan dan Kapan Pakai yang Mana

 Kafka dan RabbitMQ sama-sama message broker, tapi lahir dari dua filosofi yang berbeda. Memilih salah satunya bukan soal mana yang "lebih cepat" — keduanya sudah lebih dari cukup untuk hampir semua aplikasi. Yang menentukan adalah pola kerja dan siapa yang akan mengoperasikannya.

1. Ringkasan Satu Paragraf

Kafka adalah distributed commit log — pesan ditulis ke log yang bisa diputar ulang (replay), disimpan sesuai kebijakan retensi (default 7 hari), dan tidak dihapus setelah dibaca. Consumer menggeser pointer (offset), bukan "mengambil lalu menghapus".

RabbitMQ adalah message broker klasik berbasis AMQP — pesan dirutekan lewat exchange ke queue, lalu dihapus setelah di-acknowledge. Fokusnya pada routing fleksibel dan jaminan per-pesan.

"RabbitMQ built its reputation as the default choice for messaging and task queueing; Kafka built its reputation as the default choice for event streaming."
— Dokumentasi resmi RabbitMQ
Kabar penting 2025–2026: garis pemisah ini sudah kabur di kedua sisi. RabbitMQ punya streams (log ter-replikasi) sejak versi 3.9 (2021), dan Kafka mulai menambahkan queue semantics (KIP-932) di versi 4.0. Jadi pertanyaan "mana yang lebih baik" sekarang bukan soal kemampuan, tapi soal beban kerja dan operasional.

Sunday, October 18, 2026

Backend Project Structure

 Panduan Lengkap Organisasi Folder Node/Express untuk Backend yang Scalable

Struktur folder yang baik adalah fondasi backend yang maintainable, scalable, dan mudah dipahami tim. Artikel ini membahas standar industri untuk mengorganisasi proyek Node.js/Express, lengkap dengan penjelasan setiap komponen dan alur request.

Folder Structure

Berikut adalah struktur folder yang direkomendasikan untuk proyek backend Node/Express:

backend/ ├── node_modules/ # Installed packages and dependencies ├── src/ │ ├── config/ # Database and environment setup │ ├── controllers/ # Handle HTTP requests and responses │ ├── middlewares/ # Auth, logging, validation, etc. │ ├── models/ # Database schemas and data structures │ ├── routes/ # API endpoints mapped to controllers │ ├── services/ # Business logic and integrations │ ├── utils/ # Reusable helper functions │ └── redis/ # Caching and Redis connection (if used) ├── app.js # Configure Express app and middleware ├── server.js # Start server and listen on port ├── .env # Secret keys and environment variables (never commit) ├── .gitignore # Files Git should ignore ├── package.json # Scripts and dependencies └── README.md # Project documentation

Monday, October 12, 2026

Apakah PATCH Idempotent? — Bedakan PUT, POST, dan PATCH di REST API

Pernah ditanya interviewer: "Apakah PATCH idempotent?" — dan banyak developer bingung menjawab. Pertanyaan ini sering muncul di wawancara backend, dan jawabannya tidak selalu hitam-putih. Mari kita bahas dengan bahasa sederhana.

Apa itu Idempotent?

Sebelum masuk ke PATCH, pahami dulu artinya. Sebuah operasi disebut idempotent jika:

Menjalankan operasi 1 kaliatau 100 kalimenghasilkan hasil yang sama — tidak ada efek samping ekstra.

Contoh sederhana:

  • x = 5 → idempotent (dipanggil berkali-kali, x tetap 5)
  • x = x + 1 → bukanidempotent (setiap panggilan, nilai x berubah)

Request itu Server yang Mana yang Akan Menerima? — Load Balancing untuk Pemula

 Pernahkah kamu bertanya-tanya: ketika jutaan user mengakses aplikasi secara bersamaan, server mana yang menerima request tersebut? Bagaimana sistem memastikan bahwa tidak ada satu server yang kelebihan beban (overload)ementara server lainnya menganggur? Jawabannya ada pada konsep load balancing.

Apa itu Load Balancing?

Load balancing adalah teknik mendistribusikan traffic (request) dari pengguna ke beberapa server secara merata. Tujuannya sederhana:

  • 🚀 Meningkatkan performa aplikasi
  • 🛡️ Mencegah satu server down membuat aplikasi mati total
  • 📈 Memungkinkan aplikasi berkembang (scale) sesuai jumlah user

Sunday, October 11, 2026

HTTP 401 vs 403 — Apa Bedanya dan Kenapa Penting?

 

Dua kode ini kelihatan mirip — sama-sama artinya “akses ditolak”. Tapi sebenarnya keduanya menjawab dua pertanyaan yang berbeda. Salah pilih kode, API kamu jadi membingungkan dan berpotensi bocor informasi.

Inti Perbedaannya dalam Satu Kalimat

401 Unauthorized → Authentication — “Kamu ini siapa? Belum kenal aku.”

403 Forbidden → Authorization — “Aku sudah tahu kamu siapa, tapi kamu tidak punya izin untuk ini.”

1. 401 Unauthorized — Masalah Identitas

Server belum tahu siapa yang sedang mengakses. Kredensialnya tidak ada, tidak valid, atau sudah kedaluwarsa.

  • Tidak mengirim token / API key sama sekali
  • Token sudah expired
  • Token rusak, dipalsukan, atau signature-nya tidak cocok
  • Password / kredensial salah saat login

Ciri khas: server mengirim header WWW-Authenticate — semacam petunjuk cara login yang benar.

Solusi untuk client: login ulang atau refresh token.

System Design Interview — Panduan Lengkap


Prinsip Utama: Jangan langsung menggambar arsitektur di awal. Yang dinilai bukan bagusnya diagram komponen, tapi kemampuan menjelaskan “KENAPA” di balik setiap keputusan desain.

6-Step Workflow System Design Interview

1. Requirements (Kebutuhan)

  • Functional Requirements — Apa yang harus dilakukan sistem? (fitur utama)
  • Non-Functional Requirements — Scalability, availability, latency, consistency, durability
  • Klarifikasi dengan interviewer: scope, batasan, asumsi

2. Capacity Estimation (Estimasi Kapasitas)

  • Jumlah users (DAU/MAU)
  • QPS (Queries Per Second) — rata-rata dan peak traffic
  • Estimasi storage dan bandwidth
  • Angka ini menentukan keputusan scaling berikutnya

3. APIs & Data Model

  • Definisikan API endpoints (REST/gRPC)
  • Rancang schema database (tables, relationships, indexes)
  • Pilih SQL vs NoSQL berdasarkan kebutuhan