30 Pertanyaan dan Jawaban Wawancara Desain Sistem Teratas (2026)

Pertanyaan dan Jawaban Wawancara Desain Sistem

Persiapan untuk wawancara desain sistem berarti mengantisipasi bagaimana pewawancara mengevaluasi pemikiran arsitektur di bawah tekanan. Pertanyaan Wawancara Desain Sistem Mengungkap kedalaman, pertimbangan untung rugi, penilaian skalabilitas, dan komunikasi melalui diskusi terstruktur.

Persiapan yang matang membuka peluang di berbagai platform cloud, sistem terdistribusi, dan rekayasa data, membuktikan keahlian teknis melalui analisis nyata. Para profesional yang bekerja di bidang ini membangun keterampilan praktis, mendukung tim, membantu manajer dalam pengambilan keputusan, dan memecahkan pertanyaan serta jawaban umum yang mencakup tingkat pemula hingga senior, termasuk perspektif tingkat lanjut, dasar, dan teknis secara global saat ini.
Baca lebih banyak…

👉 Unduh PDF Gratis: Pertanyaan & Jawaban Wawancara Desain Sistem

Pertanyaan dan Jawaban Wawancara Desain Sistem Teratas

1) Jelaskan apa itu Desain Sistem dan mengapa hal itu penting dalam rekayasa perangkat lunak.

Desain sistem adalah proses mendefinisikan arsitektur, komponen, antarmuka, dan data untuk suatu sistem Untuk memenuhi persyaratan spesifik dengan cara yang terukur, andal, dan mudah dipelihara. Desain sistem yang kuat menjembatani tujuan tingkat tinggi (apa yang harus dicapai sistem) dengan keputusan konkret tentang teknologi, protokol, dan pola arsitektur. Desain sistem yang kuat memastikan bahwa aplikasi berkinerja baik di bawah beban, tetap toleran terhadap kesalahan, dan dapat berkembang dari waktu ke waktu tanpa penulisan ulang total.

Dalam wawancara, ini menunjukkan kemampuan Anda untuk menyeimbangkan persyaratan fungsional dengan kendala non-fungsional Seperti skalabilitas, latensi, konsistensi, dan ketersediaan. Semua perusahaan teknologi besar mengevaluasi keterampilan desain sistem kandidat untuk mengukur penilaian teknik di dunia nyata.


2) Bagaimana Anda membedakan Desain Tingkat Tinggi (HLD) dari Desain Tingkat Rendah (LLD) dalam arsitektur sistem?

Desain Tingkat Tinggi (HLD) berfokus pada Gambaran umum arsitektur dan komponen utama tanpa membahas detail implementasinya. Ini menunjukkan bagaimana sistem berinteraksi — misalnya, web server, Database, Cache, Gerbang API, dan sistem perpesanan.

Desain Tingkat Rendah (Low-Level Design/LLD) membahas lebih dalam tentang definisi kelas, metode, struktur data, dan logika terperinci Dalam setiap komponen. HLD (Higher-Level Design) membahas komponen apa yang akan Anda gunakan dan bagaimana komponen tersebut berinteraksi; LLD (Low-Level Design) membahas bagaimana Anda akan mengimplementasikan interaksi tersebut. Memahami keduanya membantu pewawancara menilai pemikiran Anda secara menyeluruh serta kemampuan teknik Anda secara detail.


3) Apa saja metrik kinerja utama yang harus Anda pertimbangkan saat merancang suatu sistem, dan mengapa?

Metrik kinerja membantu mengukur seberapa baik suatu sistem memenuhi kebutuhan pengguna dan bisnis. Metrik utamanya adalah:

  • Latency: Waktu yang dibutuhkan untuk memproses satu permintaan. Latensi yang lebih rendah berarti respons yang lebih cepat.
  • Throughput: Jumlah pekerjaan yang diproses dalam suatu periode (misalnya, permintaan per detik). Throughput yang lebih tinggi menunjukkan efisiensi di bawah beban kerja yang tinggi.
  • Tersedianya: Proporsi waktu suatu sistem beroperasi. Ketersediaan tinggi sangat penting untuk layanan global.

Metrik-metrik ini membantu para perancang menyeimbangkan berbagai pertimbangan. Misalnya, caching mengurangi latensi tetapi mempersulit konsistensi data. Menunjukkan pemahaman tentang hal ini menunjukkan bahwa Anda peduli dengan kualitas sistem di dunia nyata.

metrik Definisi Pentingnya
Latensi Waktu per permintaan Pengalaman pengguna
Throughput Permintaan per satuan waktu Skalabilitas
Ketersediaan Waktu aktif vs waktu nonaktif Keandalan

4) Jelaskan tentang load balancing dan mengapa hal itu sangat penting dalam sistem terdistribusi.

Load balancing adalah proses dari mendistribusikan permintaan masuk ke beberapa server atau layanan. untuk mencegah satu node pun menjadi hambatan. Hal ini memastikan bahwa kapasitas dimanfaatkan secara optimal, meningkatkan waktu respons, dan meningkatkan keandalan sistem dengan mengalihkan lalu lintas dari instance yang tidak sehat.

Ada berbagai jenis penyeimbang beban. A Lapisan 4 (L4) balancer bekerja pada lapisan transport (IP/port), sedangkan a Lapisan 7 (L7) Balancer beroperasi pada lapisan aplikasi, memahami semantik HTTP/S. Penyeimbangan beban sangat penting untuk toleransi kesalahan, penskalaan tanpa waktu henti, dan pembaruan bergulir dalam sistem produksi. Menjawab pertanyaan ini dengan baik menunjukkan bahwa Anda memahami pertimbangan mendasar sistem terdistribusi antara kinerja, konsistensi, dan biaya.


5) Bagaimana Anda akan mendesain Tiny?URL Layanan? Jelaskan komponen inti dan langkah-langkahnya.

Mendesain yang MungilURL layanan mencakup persyaratan fungsional (pemendekan) URL(misalnya, pengalihan pengguna) dan persyaratan non-fungsional (skalabilitas, keunikan, kinerja).

Pertama, pertanyaan klarifikasi membantu menentukan batasan: volume yang diharapkan, kebijakan kedaluwarsa, kebutuhan analitik, dll. Komponen utamanya adalah:

  • Lapisan API: Menerima dan memproses permintaan pemendekan/pengalihan.
  • Basis data & caching: Toko asli ↔ dipersingkat URL petapings; caching meningkatkan performa pembacaan.
  • Generator ID singkat: Menggunakan hashing atau ID unik yang dikodekan berdasarkan basis.

Untuk menghasilkan kunci unik secara efisien, Anda dapat:

  • penggunaan pengkodean basis-62 dari ID berurutan (misalnya, 1 → a, 2 → b, dst.).
  • Menggunakan fungsi hash dengan resolusi tabrakan.

Anda juga perlu mempertimbangkan analitik, batasan laju permintaan, dan penanganan data yang sering diakses. URLdengan lapisan caching atau CDN untuk mengurangi beban. Menggambarkan pertimbangan-pertimbangan ini menunjukkan kedalaman dalam pola desain dan pertimbangan skalabilitas.


6) Apa itu caching, dan bagaimana cara kerjanya dalam meningkatkan performa sistem?

Penyimpanan cache data yang sering diakses atau mahal untuk dihitung pada media penyimpanan yang lebih cepat (memori, cache terdistribusi) untuk mengurangi komputasi berulang dan beban basis data. Ini secara signifikan meningkatkan latensi dan throughput dengan melayani permintaan populer dengan cepat.

Caching dapat terjadi di beberapa lapisan: memori aplikasi, Redis/Ehcache, server edge CDN, atau penyimpanan lokal browser. Meskipun caching mengurangi waktu respons, ia menimbulkan tantangan terkait keusangan dan invalidasi, yang harus Anda atasi selama proses desain. Misalnya, Anda dapat menggunakan kebijakan time-to-live (TTL) atau strategi invalidasi cache ketika data yang mendasarinya berubah. Jawaban yang baik menunjukkan bahwa Anda memahami keduanya. manfaat dan kendala tentang caching.


7) Jelaskan Teorema CAP dan implikasinya pada desain sistem terdistribusi.

Teorema CAP menyatakan bahwa dalam sistem terdistribusi, Anda dapat memilih paling banyak dua dari tiga jaminan berikut:

  1. Konsistensi: Semua node melihat data yang sama pada waktu yang bersamaan.
  2. Tersedianya: Setiap permintaan akan menerima respons (tanpa jaminan kebenarannya).
  3. Toleransi partisi: Sistem tetap beroperasi meskipun terjadi kegagalan jaringan.

Tidak ada sistem terdistribusi praktis yang dapat mencapai ketiga hal tersebut secara bersamaan di hadapan partisi jaringan. Misalnya, selama partisi, sistem harus memilih antara menyajikan data usang (ketersediaan) atau menolak permintaan hingga konsistensi pulih (konsistensi). Memahami CAP menunjukkan bahwa Anda dapat membuat pertimbangan yang tepat berdasarkan prioritas operasional — keterampilan kunci dalam wawancara desain sistem.


8) Secara garis besar, bagaimana Anda akan merancang layanan pesan obrolan seperti WhatsApp?

Untuk merancang sistem obrolan dalam skala besar, mulailah dengan mengidentifikasi persyaratan utama: pengiriman pesan secara real-time, persistensi, pengurutan pesan, dukungan offline, dan skalabilitas.

Pada tingkat tinggi:

  • Klien terhubung melalui web/mobile ke server gateway.
  • Perute pesan Menangani pesan masuk dan mengirimkannya ke penerima (melalui koneksi tetap seperti WebSocket).
  • Database menyimpan riwayat pesan, dengan partisi yang sesuai untuk basis pengguna yang besar.

Komponen tambahan meliputi cache untuk obrolan terbaru, antrian untuk pengiriman asinkron, dan layanan notifikasi untuk pengguna offline. Anda harus mendiskusikannya. bagaimana pesan disimpan, diurutkan, dan dikirim ke beberapa perangkat per pengguna dan bagaimana Anda menangani failover dan toleransi kesalahan.


9) Apa itu sharding dan bagaimana cara kerjanya dalam meningkatkan skala basis data?

Sharding adalah suatu bentuk dari penskalaan horizontal di mana kumpulan data besar dibagi menjadi partisi yang lebih kecil dan independen yang disebut shard, masing-masing disimpan pada node basis data yang berbeda. Hal ini meningkatkan kinerja dan skalabilitas dengan mendistribusikan data dan beban kueri ke beberapa mesin daripada meningkatkan skala satu instance tunggal.

Data dapat dipecah berdasarkan ID pelanggan, wilayah geografis, atau hashing. Meskipun pemecahan data mengurangi beban per node, hal ini menimbulkan kompleksitas dalam kueri lintas-pecahan dan penyeimbangan ulang saat menambahkan atau menghapus node. Pewawancara mengharapkan Anda memahami pertimbangan-pertimbangan ini dan bagaimana hashing konsisten atau pengelola pecahan data dapat mempermudah operasi.


10) Jelaskan perbedaan antara API dan microservices dengan arsitektur monolitik.

A Monolithic architecture Menggabungkan semua komponen aplikasi ke dalam satu unit yang dapat diimplementasikan. Hal ini dapat menyederhanakan pengembangan pada awalnya, tetapi menjadi sulit untuk diskalakan, dipelihara, dan diperbarui seiring waktu.

Microservices memecah sistem menjadi layanan kecil yang dapat diimplementasikan secara independenMasing-masing bertanggung jawab atas kemampuan bisnis tertentu. API (Application Programming Interfaces) memungkinkan komunikasi antar layanan ini.

Aspek Monolitis Microservices
Penyebaran Satuan Layanan independen
Skalabilitas Terbatas Penskalaan per layanan
Isolasi kesalahan Tidak baik Kuat
Kompleksitas Awalnya lebih sederhana Operasi yang lebih kompleks

Arsitektur microservices meningkatkan skalabilitas dan fleksibilitas penerapan, tetapi membutuhkan perangkat operasional tingkat lanjut (penemuan layanan, trac(termasuk, dan toleransi kesalahan). Mendiskusikan hal ini menunjukkan bahwa Anda dapat bernalar tentang evolusi arsitektur dan pertimbangan antara kesederhanaan dan fleksibilitas.


11) Bagaimana cara kerja Content Delivery Network (CDN), dan apa saja keuntungannya?

A Jaringan Pengiriman Konten (CDN) adalah jaringan terdistribusi dari server proxy yang ditempatkan secara strategis di berbagai wilayah geografis. Tujuan utamanya adalah untuk Menyampaikan konten kepada pengguna dengan latensi minimal. dengan menyajikannya dari server terdekat (yang dikenal sebagai node tepi).

Ketika pengguna meminta sumber daya web (misalnya, gambar, video, atau file statis), CDN akan menyimpan konten tersebut dalam cache dan mengirimkannya langsung dari server edge. Jika konten tersebut tidak ada dalam cache, CDN akan mengambilnya dari server asal dan menyimpannya untuk permintaan selanjutnya.

Keunggulan CDN:

Faktor Keuntungan
Latensi Mengurangi waktu respons dengan menyajikan konten lebih dekat ke pengguna.
Bandwidth Mengurangi penggunaan bandwidth dari server asal.
Keandalan Menyediakan toleransi kesalahan dengan node terdistribusi
Skalabilitas Menangani volume lalu lintas yang tinggi secara efisien.

CDN sangat penting untuk sistem global seperti Netflix, YouTubeatau platform e-commerce, yang memastikan kinerja dan ketersediaan yang tinggi.


12) Apa itu pembatasan laju (rate limiting), dan mengapa hal itu penting dalam desain API?

Pembatasan tarif Membatasi jumlah permintaan yang dapat dilakukan klien ke API dalam periode waktu tertentu. Hal ini sangat penting untuk mencegah pelecehan, menjaga penggunaan yang adil, dan melindungi layanan backend akibat kelebihan beban atau serangan penolakan layanan (DoS).

Algoritma umum untuk pembatasan laju meliputi:

  • Penghitung Jendela Tetap — Sederhana, tetapi dapat menyebabkan lonjakan pada batas jendela.
  • Pintu Geser / Jendela Geser — Memberikan penanganan permintaan yang lebih lancar.
  • Token Bucket / Leaky Bucket — Memungkinkan lonjakan dalam batas tertentu dan mempertahankan aliran permintaan yang stabil.

Sebagai contoh, GitHub membatasi panggilan API hingga 5000 per jam per pengguna. Penerapan batasan laju panggilan memastikan stabilitas sistem dan meningkatkan kualitas layanan secara keseluruhan.


13) Bagaimana Anda memastikan konsistensi data di seluruh sistem terdistribusi?

Mempertahankan konsistensi dalam sistem terdistribusi merupakan tantangan karena replikasi dan latensi jaringan. Terdapat beberapa strategi yang bergantung pada keseimbangan yang dibutuhkan antara konsistensi dan ketersediaan:

Jenis Konsistensi Deskripsi Use Case
Konsistensi Kuat Semua klien melihat data yang sama secara instan. Sistem perbankan
Konsistensi Akhirnya Pembaruan disebarkan secara asinkron; perbedaan sementara diperbolehkan. Umpan media sosial
Konsistensi Kausal Mempertahankan urutan sebab-akibat Aplikasi kolaboratif

Teknik seperti log tulis-maju, jam vektor, algoritma konsensus (Raft, Paxos), dan komitmen dua fase (2PC) membantu menjaga sinkronisasi. Pewawancara mengharapkan Anda untuk menjelaskan when untuk melonggarkan konsistensi demi peningkatan kinerja dan skalabilitas.


14) Jelaskan perbedaan antara penskalaan horizontal dan vertikal.

Penskalaan mengacu pada peningkatan kapasitas sistem untuk menangani beban yang lebih besar. Ada dua jenis utama:

Jenis Skala metode Kelebihan Kekurangan
Peningkatan Skala Vertikal (Scale-Up) Tambahkan lebih banyak sumber daya (CPU, RAM) ke satu mesin. Lebih mudah diimplementasikan Keterbatasan perangkat keras, titik kegagalan tunggal
Penskalaan Horizontal (Skala-Keluar) Tambahkan lebih banyak mesin untuk mendistribusikan beban. Ketersediaan tinggi, hemat biaya Rumit untuk dikelola dan dikoordinasikan

Sebagai contoh, meningkatkan kapasitas server web dari 2 CPU menjadi 8 CPU adalah penskalaan vertikal, sedangkan menambahkan beberapa server di belakang load balancer adalah penskalaan horizontal. Sistem terdistribusi modern seperti Kubernetes lebih menyukai hal ini. penskalaan horizontal untuk elastisitas.


15) Apa itu antrian pesan dan mengapa antrian pesan digunakan dalam arsitektur terdistribusi?

A antrian pesan Memisahkan produsen dan konsumen dengan menyimpan pesan sementara hingga diproses. Hal ini memungkinkan komunikasi asinkron, meningkatkan ketahanan dan skalabilitas dalam sistem terdistribusi.

Broker pesan populer meliputi: RabbitMQ, Kafka, Amazon persegi, dan Google Pub / Sub.

Manfaat:

  • Meredakan lonjakan lalu lintas
  • Memisahkan layanan
  • Mengaktifkan mekanisme percobaan ulang dan persistensi.
  • Meningkatkan toleransi kesalahan

Contoh: Dalam platform e-commerce, layanan pemesanan dapat menerbitkan pesan ("Pesanan Ditempatkan") yang dikonsumsi oleh layanan inventaris dan penagihan secara independen, sehingga menghindari ketergantungan langsung.


16) Bagaimana Anda akan merancang sistem penyimpanan file yang dapat diskalakan seperti ini? Google Drive or Dropbox?

Untuk mendesain sistem penyimpanan file berbasis cloud, uraikan menjadi komponen-komponen utama:

  • Layanan Frontend: Menangani unggah/unduh file melalui API REST.
  • Layanan Metadata: Menyimpan kepemilikan file, izin akses, dan riwayat versi.
  • Layanan Penyimpanan: Mengelola bagian-bagian file dalam penyimpanan terdistribusi (misalnya, S3, HDFS).
  • Potongan: Berkas dibagi menjadi bagian-bagian yang lebih kecil (misalnya, 4 MB) untuk penyimpanan dan transmisi yang efisien.

Tantangannya termasuk memastikan deduplikasi data, konsistensi, dan sinkronisasi perubahan Di berbagai perangkat. Implementasi sinkronisasi tingkat blok dan hashing konten memastikan efisiensi dan integritas bandwidth.


17) Apa saja faktor-faktor kunci yang perlu dipertimbangkan saat mendesain skema basis data yang skalabel?

Skema yang terukur menyeimbangkan kinerja, fleksibilitas, dan kemudahan pemeliharaan. Pertimbangan penting meliputi:

  • Partisi data (sharding) untuk menangani pertumbuhan.
  • Normalisasi vs. Denormalisasi: Lakukan normalisasi untuk integritas; lakukan denormalisasi untuk performa yang banyak melibatkan operasi baca.
  • Strategi pengindeksan untuk pencarian cepat.
  • Penyimpanan sementara dan replikasi untuk menangani lalu lintas yang tinggi.

Contoh: Dalam aplikasi media sosial, data pengguna dan unggahan dapat disimpan secara terpisah untuk mengurangi keterkaitan dan meningkatkan kinerja kueri. Keputusan desain skema harus selaras dengan hal tersebut. pola akses ke frekuensi kueri.


18) Apa saja kelebihan dan kekurangan menggunakan arsitektur microservices?

Arsitektur microservices telah menjadi tulang punggung aplikasi cloud modern, tetapi arsitektur ini juga memiliki kelebihan dan kekurangannya.

Kelebihan Kekurangan
Penyebaran dan penskalaan independen Meningkatnya kompleksitas operasional
Isolasi kesalahan dan ketahanan Debugging terdistribusi lebih sulit.
Adopsi teknologi yang lebih mudah Membutuhkan budaya DevOps yang kuat.
Kemudahan pemeliharaan kode yang lebih baik. Latensi lebih tinggi karena lompatan jaringan.

Arsitektur microservices ideal untuk sistem besar yang terus berkembang, tetapi membutuhkan pemantauan yang kuat, gateway API, dan strategi komunikasi antar layanan.


19) Bagaimana Anda akan menangani replikasi basis data dalam sistem berskala besar?

Replikasi basis data Proses ini melibatkan penyalinan data dari basis data utama ke satu atau lebih replika untuk meningkatkan ketersediaan dan kinerja pembacaan. Terdapat dua jenis utama:

Jenis Replikasi Deskripsi Use Case
Synchonous Perubahan langsung ditulis ke replika. Konsistensi yang kuat
Asinkron Server utama mengkonfirmasi penulisan sebelum server replika memperbarui. Kinerja yang lebih baik

Replikasi meningkatkan toleransi kesalahan, memungkinkan distribusi geografis, dan dukungan membaca penskalaan (replika baca). Namun, hal ini menimbulkan tantangan seperti keterlambatan replikasi dan resolusi konflik. Alat seperti MySQL Replikasi Kelompok, MongoDB Set Replika, dan PostgreSQL replikasi streaming adalah solusi standar.


20) Apa itu arsitektur berbasis peristiwa (event-driven architecture), dan di mana arsitektur ini paling bermanfaat?

Arsitektur berbasis peristiwa (Event-driven architecture/EDA) adalah paradigma desain di mana komponen berkomunikasi melalui peristiwa — pesan yang menandakan perubahan status atau tindakan. Alih-alih permintaan langsung, layanan menerbitkan dan berlangganan peristiwa secara asinkron.

Desain ini ideal untuk sistem yang terhubung secara longgarseperti platform IoT, e-commerce, dan sistem analitik waktu nyata.

Manfaat:

  • Skalabilitas tinggi
  • Komponen yang terpisah
  • Responsivitas waktu nyata

Contoh: Dalam arsitektur Uber, ketika sebuah perjalanan dipesan, suatu peristiwa memicu pembaruan pada sistem penetapan harga, pencocokan pengemudi, dan pemberitahuan secara bersamaan — semuanya tanpa keterkaitan yang erat.


21) Apa yang dimaksud dengan idempotensi dalam desain sistem, dan mengapa hal itu penting?

Idempotensi artinya melakukan operasi yang sama beberapa kali memiliki efeknya sama seperti melakukannya sekali sajaHal ini memastikan keandalan dalam sistem terdistribusi di mana permintaan mungkin dicoba ulang karena kegagalan atau penundaan jaringan.

Sebagai contoh:

  • DAPATKAN ke DELETE Permintaan secara alami bersifat idempoten (mengulangi permintaan tidak mengubah keadaan).
  • POST Permintaan (seperti membuat transaksi) tidak bersifat idempoten kecuali dirancang secara khusus untuk itu.

Untuk mengimplementasikan idempotensi:

  • penggunaan ID permintaan unik untuk track pengajuan ganda.
  • Pertahankan a log transaksi untuk mengabaikan operasi yang berulang.

Prinsip ini sangat penting dalam gateway pembayaran, proses pemesanan, dan sistem email di mana tindakan yang berulang dapat menyebabkan inkonsistensi yang serius.


22) Jelaskan konsep konsistensi eventual dengan sebuah contoh.

Konsistensi pada akhirnya adalah model dalam basis data terdistribusi di mana pembaruan tidak langsung terlihat oleh semua node, tetapi Sistem tersebut akan mencapai keadaan yang konsisten seiring waktu..

Contoh:

In Amazon'S DynamoDBKetika suatu item diperbarui di satu wilayah, replika di wilayah lain mungkin untuk sementara memiliki data lama. Namun, pada akhirnya data tersebut akan tersinkronisasi melalui replikasi latar belakang.

Model ini berguna dalam sistem yang memprioritaskan tersedianya lebih konsistensi yang ketat, Seperti:

  • Linimasa media sosial
  • Sistem caching
  • Catatan DNS

Pertimbangan utama terletak di antara toleransi terhadap rasa basi ke kecepatan respon.


23) Bagaimana Anda akan mendesain sistem notifikasi yang mendukung berbagai saluran (email, SMS, push)?

Merancang sistem notifikasi yang skalabel membutuhkan modularitas dan fleksibilitas.

Architekstur:

  1. API Notifikasi – Menerima permintaan notifikasi dari aplikasi.
  2. Antrian/Bus Pesan – Menyimpan dan mendistribusikan peristiwa (Kafka, SQS).
  3. Layanan Pekerja – Prosesor khusus saluran (Email, SMS, Push).
  4. Penyedia Pengiriman – Terintegrasi dengan API eksternal seperti Twilio atau Firebase.
  5. Basis Data Preferensi Pengguna – Menyimpan pengaturan keikutsertaan/ketidakikutsertaan dan preferensi frekuensi.

Pertimbangan utama:

  • Coba lagi pengiriman yang gagal dengan strategi penundaan.
  • Gunakan templat untuk konsistensi.
  • Prioritas dukungan (pesan mendesak vs. pesan prioritas rendah).

Desain modular ini memastikan keandalan dan kemampuan perluasan seiring munculnya saluran pemberitahuan baru.


24) Apa itu pengindeksan basis data, dan bagaimana pengaruhnya terhadap kinerja?

A indeks basis data adalah struktur data (umumnya berupa B-tree atau hash table) yang meningkatkan kecepatan query dengan mengurangi jumlah record yang dipindai oleh database.

Sebagai contoh, pengindeksan kolom email dalam tabel pengguna memungkinkan mesin basis data untuk menemukan pengguna berdasarkan email dengan cepat tanpa perlu memindai seluruh tabel.

Aspek Dengan Indeks Tanpa Indeks
Kecepatan kueri Pencarian cepat Pemindaian sekuensial lambat
Kecepatan tulis Lebih lambat (pembaruan indeks diperlukan) Menulis lebih cepat
Storage Ruang disk lebih banyak Less penyimpanan

Indeks meningkatkan kinerja pembacaan tetapi harus digunakan dengan bijak, karena dapat memperlambat proses. banyak menulis sistem karena biaya pemeliharaan yang tinggi.


25) Bagaimana Anda akan memastikan toleransi kesalahan dalam sistem terdistribusi skala besar?

Toleransi kesalahan Artinya, suatu sistem tetap berfungsi meskipun komponen-komponennya mengalami kegagalan. Hal ini dicapai melalui redundansi, pemantauan, dan pemulihan otomatis.

Strateginya meliputi:

  • Replikasi: Data atau layanan duplikat di berbagai wilayah.
  • Mekanisme failover: Secara otomatis mengalihkan permintaan ke node yang sehat.
  • Pemeriksaan kesehatan dan penyeimbang beban: Mendeteksi dan mengisolasi instance yang bermasalah.
  • Pemutus sirkuit: Mencegah kegagalan berantai antar layanan yang saling bergantung.

Contoh: Netflix“Chaos Monkey” milik [nama perusahaan] sengaja mematikan instance di lingkungan produksi untuk menguji ketahanan — sebuah aplikasi tingkat lanjut dari prinsip-prinsip toleransi kesalahan.


26) Apa perbedaan antara komunikasi sinkron dan asinkron dalam sistem terdistribusi?

Fitur SyncKomunikasi yang terhormat Komunikasi Asinkron
Ketergantungan Pengirim menunggu respons Pengirim melanjutkan secara independen
contoh Panggilan API REST HTTP Antrian pesan, Kafka
Latensi Lebih tinggi (pemblokiran) Latensi yang dirasakan lebih rendah
Keandalan Lebih rendah dalam kondisi gagal Lebih tinggi (pesan dapat bertahan)

SyncSistem sinkron lebih sederhana tetapi terhubung erat, sedangkan sistem asinkron meningkatkan skalabilitas dan isolasi kesalahan.

Sebagai contoh, pemrosesan pesanan dalam sistem e-commerce dapat bersifat asinkron, tetapi konfirmasi pembayaran harus tetap sinkron untuk memastikan umpan balik langsung kepada pengguna.


27) Bagaimana Anda akan mendesain pembatas laju (rate limiter) untuk sistem API terdistribusi?

Pembatas laju terdistribusi memastikan penggunaan API yang adil di berbagai server.

Pendekatan:

  1. Algoritma Keranjang Token – Setiap pengguna mendapatkan token yang akan terisi kembali seiring waktu.
  2. Algoritma Bucket Bocor – Permintaan diproses dengan kecepatan tetap.
  3. Penghitung Terpusat (misalnya, Redis) – Mempertahankan jumlah permintaan per pengguna.

Contoh implementasi:

  • Gunakan penghitung atomik Redis dengan TTL.
  • Track permintaan stempel waktu per kunci pengguna.
  • Tolak permintaan yang melebihi ambang batas.

Pembatasan laju mencegah penyalahgunaan, Serangan DoS, dan lonjakan biaya yang tak terduga, memastikan kualitas layanan yang konsisten di seluruh klien.


28) Apa itu algoritma konsensus terdistribusi, dan mengapa algoritma ini dibutuhkan?

Algoritma konsensus terdistribusi memastikan bahwa banyak node dalam suatu sistem menyepakati satu nilai data tunggal, bahkan ketika terjadi kegagalan.

Algoritma umum:

  • Paxos
  • Rakit
  • Zab (digunakan di ZooKeeper)

Mereka sangat penting untuk pemeliharaan pemilihan pemimpin, replikasi status, dan konsistensi data dalam basis data terdistribusi dan pengelola klaster seperti Kubernetes.

Contoh: Raft memastikan bahwa semua node menyetujui entri log sebelum menerapkannya ke mesin status, menjamin keandalan bahkan jika node mengalami kerusakan.


29) Bagaimana Anda akan mendesain sistem pencatatan dan pemantauan untuk layanan mikro?

Pemantauan sistem terdistribusi memerlukan pengamatan terpusat untuk mendeteksi dan menyelesaikan masalah.

Komponen Inti:

  • Pencatatan: Kumpulkan log dari semua layanan menggunakan alat seperti Fluentd or Logstash.
  • Metrik: Gunakan Prometheus atau Datadog untuk track indikator kinerja (CPU, memori, latensi permintaan).
  • Tracing: Implementasikan distribusi tracing (Jaeger, Zipkin) untuk track jalur permintaan di seluruh layanan.
  • Peringatan: Tetapkan ambang batas untuk memicu peringatan di PagerDuty atau Slack.

Praktek terbaik:

penggunaan ID korelasi untuk tracSetiap permintaan pengguna tunggal di berbagai layanan mikro — sangat penting untuk mendebug masalah produksi.


30) Apa saja pertimbangan desain utama untuk membangun sistem ketersediaan tinggi (HA)?

A Ketersediaan Tinggi (HA) Sistem ini meminimalkan waktu henti dan memastikan layanan berkelanjutan.

Faktor Desain Utama:

  1. Redundansi: Gunakan beberapa server untuk setiap komponen.
  2. Hilangkan titik kegagalan tunggal (SPOF).
  3. Failover otomatis: Alihkan lalu lintas selama gangguan.
  4. Replikasi data: Pastikan ketahanan data di seluruh zona.
  5. Pemantauan kesehatan: Mendeteksi dan mengganti node yang tidak sehat secara otomatis.
  6. Pemulihan bencana (DR): Terapkan pencadangan dan replikasi geografis.

Contoh: AWS menyebarkan layanan di seluruh Zona Ketersediaan (AZ) dan menggunakan Elastic Load Balancer untuk failover otomatis, memastikan SLA waktu aktif 99.99%.


🔍 Pertanyaan Wawancara Desain Sistem Teratas dengan Skenario Dunia Nyata & Jawaban Strategis

1) Bagaimana pendekatan Anda dalam mendesain sistem terdistribusi skala besar dari awal?

Diharapkan dari kandidat: Pewawancara ingin memahami cara berpikir Anda yang terstruktur, kemampuan untuk memperjelas persyaratan, dan bagaimana Anda memecah masalah kompleks menjadi komponen yang mudah dikelola.

Contoh jawaban: “Saya mulai dengan mengklarifikasi persyaratan fungsional dan non-fungsional, seperti skalabilitas, ketersediaan, dan latensi. Kemudian saya menguraikan arsitektur tingkat tinggi, mengidentifikasi komponen inti, mendefinisikan alur data, dan memilih teknologi yang tepat. Setelah itu, saya mempertimbangkan hambatan, skenario kegagalan, dan pertimbangan untung rugi sebelum menyempurnakan desain.”


2) Dapatkah Anda menjelaskan perbedaan antara penskalaan horizontal dan vertikal, dan kapan Anda akan menggunakan masing-masing?

Diharapkan dari kandidat: Pewawancara sedang menguji pengetahuan dasar Anda tentang skalabilitas dan kemampuan Anda untuk menerapkan strategi yang tepat dalam sistem dunia nyata.

Contoh jawaban: “Penskalasian vertikal melibatkan penambahan lebih banyak sumber daya ke satu mesin, sedangkan penskalasian horizontal menambahkan lebih banyak mesin untuk menangani beban. Penskalasian vertikal lebih sederhana tetapi terbatas, sementara penskalasian horizontal lebih kompleks tetapi menawarkan toleransi kesalahan yang lebih baik dan skalabilitas jangka panjang.”


3) Bagaimana Anda memastikan ketersediaan tinggi dalam desain sistem?

Diharapkan dari kandidat: Pewawancara ingin mengevaluasi pemahaman Anda tentang redundansi, mekanisme failover, dan ketahanan sistem.

Contoh jawaban: “Dalam peran saya sebelumnya, saya memastikan ketersediaan tinggi dengan menggunakan load balancer, menyebarkan layanan di beberapa zona ketersediaan, menerapkan pemeriksaan kesehatan, dan merancang layanan tanpa status (stateless) jika memungkinkan. Strategi-strategi ini mengurangi titik kegagalan tunggal.”


4) Jelaskan suatu waktu ketika Anda harus membuat kompromi antara konsistensi dan ketersediaan.

Diharapkan dari kandidat: Pewawancara sedang menilai pemahaman Anda tentang teorema CAP dan kemampuan pengambilan keputusan Anda dalam kondisi yang terbatas.

Contoh jawaban: “Di posisi sebelumnya, saya bekerja pada sebuah sistem di mana latensi rendah sangat penting. Kami memilih konsistensi bertahap (eventual consistency) daripada konsistensi kuat (strong consistency) untuk menjaga ketersediaan selama pemisahan jaringan, yang dapat diterima untuk kasus penggunaan bisnis.”


5) Bagaimana Anda memutuskan basis data mana yang akan digunakan untuk sistem tertentu?

Diharapkan dari kandidat: Pewawancara ingin melihat bagaimana Anda menyelaraskan pilihan penyimpanan data dengan persyaratan sistem.

Contoh jawaban: “Saya mengevaluasi pola akses data, persyaratan konsistensi, kebutuhan skalabilitas, dan kompleksitas kueri. Basis data relasional bekerja dengan baik untuk data terstruktur dan transaksi, sedangkan basis data NoSQL lebih baik untuk throughput tinggi dan skema yang fleksibel.”


6) Bagaimana Anda akan merancang sistem untuk menangani lonjakan lalu lintas yang tiba-tiba?

Diharapkan dari kandidat: Pewawancara sedang menguji kemampuan Anda dalam merancang sistem yang skalabel dan mampu menangani beban yang tidak terduga.

Contoh jawaban: “Saya akan menggunakan grup penskalaan otomatis, penyeimbang beban, dan lapisan caching seperti penyimpanan dalam memori. Dalam peran saya sebelumnya, teknik-teknik ini memungkinkan sistem untuk menyerap lonjakan lalu lintas tanpa memengaruhi kinerja.”


7) Apa peran caching dalam desain sistem, dan di mana Anda akan mengimplementasikannya?

Diharapkan dari kandidat: Pewawancara ingin memahami bagaimana Anda mengoptimalkan kinerja dan mengurangi beban pada layanan inti.

Contoh jawaban: “Caching meningkatkan waktu respons dan mengurangi beban basis data. Ini dapat diimplementasikan di berbagai lapisan, termasuk sisi klien, CDN, tingkat aplikasi, dan caching kueri basis data, tergantung pada kasus penggunaannya.”


8) Bagaimana Anda menangani partisi dan sharding data?

Diharapkan dari kandidat: Pewawancara sedang mengevaluasi kemampuan Anda dalam merancang sistem yang dapat menskalakan data secara horizontal.

Contoh jawaban: “Saya memilih kunci sharding yang mendistribusikan data secara merata dan meminimalkan kueri lintas shard. Saya juga merencanakan sharding ulang dan memantau distribusi data untuk menghindari titik-titik kritis seiring pertumbuhan sistem.”


9) Jelaskan situasi di mana pemantauan sistem memengaruhi keputusan desain.

Diharapkan dari kandidat: Pewawancara ingin melihat bagaimana Anda menggunakan observabilitas untuk meningkatkan keandalan dan kinerja sistem.

Contoh jawaban: “Pemantauan metrik seperti latensi dan tingkat kesalahan mengungkapkan adanya hambatan dalam layanan API. Berdasarkan wawasan ini, saya mendesain ulang layanan tersebut menjadi asinkron, yang secara signifikan meningkatkan throughput.”


10) Bagaimana Anda mengkomunikasikan desain sistem yang kompleks kepada pemangku kepentingan non-teknis?

Diharapkan dari kandidat: Pewawancara sedang menilai keterampilan komunikasi Anda dan kemampuan untuk menyelaraskan keputusan teknis dengan tujuan bisnis.

Contoh jawaban: “Saya berfokus pada konsep tingkat tinggi, menggunakan diagram, dan menghubungkan komponen teknis dengan hasil bisnis. Pendekatan ini membantu pemangku kepentingan memahami nilai dan dampak desain tanpa tersesat dalam detail teknis.”

Ringkaslah postingan ini dengan: