Sistem Dan Arsitektur

System Design

Jalur desain sistem dari fondasi web sampai dokumen desain utuh: scaling, caching, sharding, queue, konsistensi, reliabilitas, dan studi kasus.

Jalur System Design membahas cara merancang sistem yang tetap andal ketika pengguna, data, dan trafiknya tumbuh. Materinya dibangun bertahap dari fondasi web dan jaringan, dasar-dasar scaling, lapisan data, sistem asinkron, building block inti, reliabilitas, sampai konsistensi dan koordinasi, lalu ditegaskan melalui studi kasus terpandu dan satu proyek desain utuh. Setiap konsep diperkenalkan bersama biayanya, dan setiap desain ditutup dengan analisis mode kegagalan beserta tradeoff yang dinyatakan terbuka. Contoh kode menggunakan Python 3.10+ sehingga setiap estimasi dan simulasi dapat dijalankan serta diperiksa ulang.

Mengenal System Design 3 pelajaran

Modul pembuka: posisi system design, kebutuhan nonfungsional, dan disiplin estimasi back-of-envelope.

  1. Apa Itu System Design ?Perjalanan dari satu fungsi ke layanan terdistribusi, serta perbedaan desain di wawancara dan di pekerjaan nyata.
  2. Kebutuhan NonfungsionalSkalabilitas, ketersediaan, latensi, biaya, dan kebenaran sebagai sasaran yang harus dinyatakan secara terukur.
  3. Hitungan Back-of-EnvelopeEstimasi QPS, penyimpanan, dan bandwidth dengan disiplin pangkat sepuluh dan angka yang mudah diperiksa ulang.

Lapisan jaringan yang dipakai setiap desain: HTTP, alur DNS dan TLS, TCP versus UDP, serta gaya API.

  1. HTTP Secara MendalamMetode, kode status, header, keep-alive, dan pengenalan HTTP/2 sebagai kontrak lalu lintas web.
  2. Alur DNS dan TLSRantai resolusi DNS, biaya handshake TLS, dan dasar sertifikat yang memengaruhi keputusan desain.
  3. TCP vs UDPPerbedaan koneksi dan reliabilitas TCP-UDP beserta posisi UDP pada desain sistem modern.
  4. Gaya API: REST, gRPC, dan GraphQLKontrak REST, gRPC, dan GraphQL beserta tradeoff masing-masing untuk komunikasi antarlayanan.
Dasar-Dasar Scaling 5 pelajaran

Sumbu scaling, load balancer, layanan stateless, dan caching sebagai fondasi menahan beban yang tumbuh.

  1. Scaling Vertikal vs HorizontalDua sumbu scaling, batas masing-masing, dan kriteria memilih arah pengembangan kapasitas.
  2. Load BalancerL4 versus L7, algoritma pembagian beban, dan health check sebagai gerbang trafik.
  3. Layanan StatelessAlasan lapisan aplikasi shared-nothing mudah di-scale dan tempat state ditempatkan.
  4. Dasar-Dasar CachingLapisan cache dari browser, CDN, aplikasi, sampai basis data beserta karakteristik tiap lapisan.
  5. Strategi CacheCache-aside versus cache-through, TTL, stampede, dan pola penanggulangannya.
Lapisan Data 5 pelajaran

Pilihan basis data, replikasi, sharding, indeks, dan denormalisasi untuk data yang tumbuh melebihi satu mesin.

  1. SQL vs NoSQLKerangka keputusan pemilihan basis data dan kapabilitas yang jujur dari tiap keluarga basis data.
  2. ReplikasiPola leader-follower, failover, dan scaling pembacaan beserta risiko lag replikasinya.
  3. ShardingPemilihan shard key, hotspot, dan biaya resharding yang wajib diantisipasi sejak awal.
  4. Pengindeksan untuk SkalaIntuisi B-tree, covering index, dan biaya penulisan yang dibayar untuk kecepatan baca.
  5. DenormalisasiModel baca, materialized view, dan biaya sinkronisasi yang menyertainya.
Sistem Asinkron 4 pelajaran

Queue, pub/sub, semantik pengiriman, dan backpressure untuk memisahkan komponen dan menyerap lonjakan beban.

  1. QueueDecoupling, buffering, dan worker pool sebagai alat dasar pemrosesan asinkron.
  2. Pub/Sub dan EventArsitektur berbasis event, koreografi layanan, dan konsekuensinya terhadap penalaran sistem.
  3. Semantik PengirimanAt-least-once, at-most-once, exactly-once, idempotency, dan dead letter queue.
  4. Backpressure dan Pembatasan LajuMelindungi sistem dari lonjakan beban melalui backpressure dan rate limiting.
Building Block Inti 5 pelajaran

Komponen siap pakai pada desain modern: CDN, object storage, cache terdistribusi, pencarian, dan konfigurasi dinamis.

  1. CDNCaching di edge, invalidasi, dan URL bertanda tangan untuk distribusi konten.
  2. Object StoragePenyimpanan bergaya S3, siklus hidup objek, dan model biayanya.
  3. Cache TerdistribusiCluster Redis, consistent hashing, eviction, dan pilihan konsistensi cache.
  4. PencarianIntuisi inverted index dan posisi Elasticsearch atau OpenSearch dalam arsitektur.
  5. Konfigurasi dan Feature FlagControl plane dinamis: konfigurasi terpusat dan pelepasan fitur bertahap.
Reliabilitas 4 pelajaran

Matematika ketersediaan, redundansi, degradasi anggun, dan pemantauan agar desain tetap hidup di production.

  1. Matematika KetersediaanSembilan ketersediaan, SLA/SLO/SLI, dan error budget sebagai anggaran kegagalan.
  2. Redundansi dan Domain KegagalanTitik kegagalan tunggal, blast radius, dan penataan redundansi lintas domain kegagalan.
  3. Degradasi AnggunTimeout, retry dengan jitter, circuit breaker, dan bulkhead agar kegagalan tidak menular.
  4. Desain PemantauanGolden signal dan filosofi alerting yang berorientasi pada tindakan.

CAP dan PACELC, pola konsistensi eventual, lock terdistribusi, konsensus, dan waktu pada sistem terdistribusi.

  1. Intuisi CAP dan PACELCApa yang benar-benar dibatasi teorema CAP dan PACELC pada jaringan yang bisa gagal.
  2. Pola Konsistensi EventualRead-your-writes, monotonic read, dan pengenalan vector clock untuk pengurutan.
  3. Lock TerdistribusiJebakan kebenaran lock terdistribusi dan pola lease dengan masa berlaku.
  4. Posisi KonsensusRaft dan Paxos pada tingkat konsep serta kapan sistem nyata menuntut konsensus.
  5. Waktu dan PengurutanClock skew, jam Lamport, dan hybrid logical clock untuk mengurutkan peristiwa.
Studi Kasus 5 pelajaran

Empat desain terpandu dan satu katalog algoritma: pemendek URL, rate limiter, notifikasi, feed, dan chat.

  1. Pemendek URLDesain pemendek URL: hashing, penyimpanan, redirect, dan analisis kebutuhannya.
  2. Rate LimiterAlgoritma token bucket dan sliding window beserta penempatannya dalam arsitektur.
  3. Sistem NotifikasiFan-out, template, kanal pengiriman, dan deduplikasi pada sistem notifikasi.
  4. Feed BeritaPush versus pull serta fan-out saat tulis versus saat baca pada feed.
  5. Sistem ChatPengiriman, pengurutan pesan, presence, dan penyimpanan pada sistem chat.
Pengerjaan Proyek 4 pelajaran

Proyek penutup: memilih produk, menetapkan kebutuhan dan estimasi, merancang tingkat tinggi, dan memperdalam tradeoff.

  1. Memilih Produk NyataMemilih sistem yang benar-benar dipakai sehari-hari dengan lingkup yang dinyatakan secara jujur.
  2. Kebutuhan dan EstimasiMerumuskan pengguna, data, dan pertumbuhan disertai aritmetika yang dapat diperiksa ulang.
  3. Desain Tingkat TinggiDiagram komponen dengan pilihan yang terjustifikasi beserta API utamanya.
  4. Pendalaman dan TradeoffSatu komponen diperdalam sampai analisis mode kegagalan dan tradeoff-nya.