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

Thursday, November 21, 2019

Perbandingan Design Pattern dengan Design principle

Di dalam dunia software engineering pastinya kalian akan menemukan beberapa istilah yang baru , dalam tulisan ini saya akan menjelaskan mengenai perbandingan antara istilah design pattern dengan design principle 

Design principle
Bisa disebut juga pedoman umum level tinggi dalam mendesain sebuah aplikasi yang lebih baik. Design principle tidak memberikan pedoman untuk mengimplementasi dan terikat dalam sebuah bahasa pemrograman. 
Untuk contoh sebuah Design Principle yaitu SOLID dengan salah satunya bisa dijelaskan yaitu S = SRP (Single Responsibility Principle). Dalam SRP dijelaskan bahwa seharusnya class dalam sebuah bahasa pemrograman hanya memiliki satu alasan untuk diubah. Di dalam SRP tidak dijelaskan secara spesific untuk cara mengimplementasi SRP principle dalam sebuah bahasa pemrograman.

Design Pattern
Dalam hal ini design pattern adalah pedoman umum level bawah yang berhubungan dengan level implementation. Pada umumnya terjadi di Object Oriented problem.
Dengan kata lain design pattern memberi solusi untuk beberapa masalah yang biasa terjadi di dalam OOP(Object Oriented Programming). 
Untuk contohnya pada kasus OOP(Object Oriented Programming), jika kamu ingin membuat class yang mana hanya memiliki satu object yang sama dalam satu waktu, kemudian kamu dapat menggunakan pendekatan menggunakan Singleton Pattern untuk memecahkan masalah dalam level implementasi bahasa pemrograman.
Ada banyak Design pattern yang bisa digunakan, sebagai contoh : Abstrak , Factory dan lain-lain

Monday, May 7, 2018

Apa itu Developer ?

Sebuah pertanyaan yang masih menjadi sesuatu yang sulit untuk di jabarkan dalam kehidupan orang awam. terkadang mereka hidup seperti dibalik layar. Dalam kecanggihan sebuah teknologi pasti ada mereka. namun yang jadi pertanyaan , Apa itu developer ? siapa developer ? 

Developer yang akan kita bahas hari ini bukan seorang developer yang membuat sebuah perumahan ataupun apa lah ?. Developer yang akan kita bahas hari ini adalah Developer yang mana seorang yang memebangun sebuah sistem aplikasi yang mungkin kalian akan tahu kalo di istilahkan , orang yang membuat Facebook.

Developer ini apa si tugasnya ?. 

Developer bertugas untuk membuat sebuah aplikasi , stop sampe disitu aja ? pastinya ngga, banyak yang harus di kerjakan salah satunya bagaiamana sebuah app bisa membantu orang 

Friday, May 1, 2015

Sintak trigger di mysql

DELIMITER |
 
CREATE TRIGGER hapus_tr_penjualan AFTER DELETE
    ON tr_penjualan FOR EACH ROW
BEGIN
  INSERT INTO tr_penjualan_hapus
        (       tgl_transaksi,
                kode_cabang,
                kode_kasir,
                kode_item,
                kode_produk,
                jumlah_pembelian,
                tgl_perubahan,
                nama_user
        )
  VALUES
        (       OLD.tgl_transaksi,
                OLD.kode_cabang,
                OLD.kode_kasir,
                OLD.kode_item,
                OLD.kode_produk,
                OLD.jumlah_pembelian,
                SYSDATE(),
                CURRENT_USER
        );
END;
 
|
 
DELIMITER ;