Lewati ke konten utama
C11

C11 · Desain Sistem dan Arsitektur

Merancang sistem yang tetap benar dan cepat ketika penggunanya naik seratus kali lipat: estimasi kasar yang jujur, caching, replikasi dan partisi, konsistensi, antrean, keandalan, keamanan, kapasitas, dan biaya, dengan setiap keputusan diuji lewat simulasi dan angka, bukan diagram saja.

Mulai Modul 01

Daftar modul

  1. 01Berpikir dalam sistemGratis7 latihan
  2. 02Dari satu server ke banyakGratis7 latihan
  3. 03CachingCoding Studio7 latihan
  4. 04Basis data dalam skalaCoding Studio6 latihan
  5. 05Konsistensi dan konsensusCoding Studio7 latihan
  6. 06Antrean dan pemrosesan asinkronCoding Studio7 latihan
  7. 07Desain APICoding Studio7 latihan
  8. 08KeandalanCoding Studio7 latihan
  9. 09Pola arsitekturCoding Studio7 latihan
  10. 10Struktur data probabilistik dan pencarianCoding Studio8 latihan
  11. 11Sistem waktu nyataCoding Studio7 latihan
  12. 12Cloud, *serverless*, dan *edge*Coding Studio7 latihan
  13. 13Keamanan arsitekturCoding Studio7 latihan
  14. 14Observabilitas dan kapasitasCoding Studio7 latihan
  15. 15Biaya dan evolusi arsitekturCoding Studio7 latihan
  16. 16Proyek akhir: Tryout NusantaraCoding Studio7 latihan

Modul 01–02 gratis; modul bergembok terbuka dengan Coding Studio. Lihat paket

Ada contoh atau latihan bertanda “Kerjakan di laptop”? Paket dan data C11 untuk menjalankannya di komputermu ada di panduan menjalankan kode di komputermu.

Tentang course ini

Merancang sistem yang tetap benar dan cepat ketika penggunanya naik seratus kali lipat: estimasi kasar yang jujur, caching, replikasi dan partisi, konsistensi, antrean, keandalan, keamanan, kapasitas, dan biaya, dengan setiap keputusan diuji lewat simulasi dan angka, bukan diagram saja.

Course inti jalur Full Stack Developer, sesudah C14. Satu proyek berjalan dari Modul 01 sampai proyek akhir: Tryout Nusantara, mesin try out nasional untuk 50.000 peserta (fiktif). Versi ini berupa Markdown yang bisa dibaca langsung di GitHub; di situs setiap modul tampil dalam mode langkah, latihannya diperiksa otomatis dan berjalan di peramban, dan latihan yang butuh sistem operasi sungguhan dikerjakan di laptop atau GitHub Codespaces.


Posisi course

Kenapa course ini ada

Agen AI kini bisa menggambar diagram arsitektur dan menulis kode layanan dalam hitungan menit. Yang tetap sulit, dan yang membedakan engineer senior, adalah memilih: kapan cache membantu dan kapan menyajikan data basi, replika baca mana yang aman dibaca sesudah menulis, berapa server yang dibutuhkan untuk lonjakan pukul 19.00, apa yang terjadi bila satu layanan lambat, dan berapa biayanya. Kesalahan di tingkat ini tidak terlihat di diagram; ia muncul sebagai 429 untuk semua pengguna, pool koneksi yang habis, atau tagihan yang berlipat.

C14 mengajarkan cara membangun satu aplikasi full stack yang benar. C11 mengajarkan apa yang berubah ketika aplikasi itu harus melayani puluhan ribu orang pada detik yang sama. Benang merahnya uji beban sebuah platform try out kecil (skenario rekaan yang dipakai di seluruh course): ember pembatas laju yang terbagi semua peserta karena proxy tidak meneruskan IP, pool koneksi yang habis ketika penyimpanan objek melambat 50 ms, dan egress basis data yang menghabiskan kuota bulanan dalam satu acara.

Cara klasik dan cara modern

Cara klasik di course ini: estimasi kasar (back-of-the-envelope) dan angka latensi, teori antrean (hukum Little, M/M/1, Erlang C), algoritma penyeimbang beban, kebijakan cache dan rasio hit, B-tree dan replikasi, consistent hashing (Karger dkk. 1997), kuorum dan jam vektor (Dynamo, DeCandia dkk. 2007), CAP dan PACELC, konsensus Raft (Ongaro & Ousterhout 2014), CRDT, pembatas laju, backoff dengan jitter, circuit breaker, matematika ketersediaan, struktur data probabilistik (Bloom, HyperLogLog, Count-Min), pola arsitektur (DDD, CQRS, event sourcing, saga), STRIDE, latensi ekor, dan aturan Smith untuk utang teknis. Semuanya ditulis sendiri dengan pustaka standar Python.

Cara modern: arsitektur cloud, serverless dan edge (misalnya Cloudflare Workers), Postgres terkelola, antrean dan log terkelola, WAF dan rate limit di edge, OpenTelemetry, infrastructure as code, FinOps, dan AI sebagai rekan desain yang setiap klaim kapasitasnya dihitung ulang dan setiap pola diuji dengan simulasi kegagalan.

Polanya sama di setiap modul: tulis polanya sendiri dan ukur, bandingkan dengan layanan terkelola padanannya, lalu periksa jawaban agen dengan angka.

Pemilik materi

C11 memiliki: estimasi dan SLO, antrean dan kapasitas, penyeimbang beban, cache dalam skala, replikasi dan partisi, konsistensi dan konsensus, antrean pesan dan idempotensi, pembatas laju terdistribusi, keandalan, pola arsitektur, struktur data probabilistik, sistem waktu nyata berskala, arsitektur cloud dan edge, model ancaman arsitektur, observabilitas dan latensi ekor, biaya dan migrasi. C11 menautkan, tidak mengajarkan ulang:

KonsepPemilik
Fungsi, berkas teks, CSV, dan JSONF1 · Fungsi, Berkas teks, CSV, dan JSON
Indeks, transaksi dan isolasi, SQL dari PythonF2 · Indeks dan kinerja dasar, Transaksi dan konkurensi, SQL dari Python
Terminal, Git, GitHub ActionsF3 · Alat Kerja Developer
HTTP, header, proxy, cookieF4 · Cara kerja web
Docker, CI, rahasia, rilisF5 · Rilis
Tabel hash, heap, pencarian binerK1 · Tabel hash, Heap dan antrean prioritas, Pencarian biner
Satu aplikasi full stack: API kontrak dulu, sesi dan otorisasi, webhook, log dan RED dasarC14 · Full Stack Development

Untuk siapa dan prasyarat

Untuk calon Full Stack Developer yang sudah membangun satu aplikasi utuh di C14, dan developer backend yang ingin bisa mempertanggungjawabkan desain sistem dengan angka.

DariWajibYang dipakai
F1 PythonyaFungsi, kelas, dict, berkas CSV dan JSON, pytest
F2 SQLyaIndeks, transaksi dan isolasi, SQL dari Python
F3 Alat Kerja DeveloperyaTerminal, Git, GitHub Actions untuk repo proyek
F4 TypeScript dan WebyaHTTP, header, proxy, cookie, perjalanan pulang-pergi
F5 RilisyaDocker, CI, rahasia, menayangkan API
K1 Struktur Data dan AlgoritmadianjurkanTabel hash, heap, pencarian biner untuk bagian "di balik layar"
C14 Full Stack Developmentsebelumnya di jalurAplikasi yang kini diskalakan

Konsep jaringan dan sistem operasi yang dibutuhkan (TLS, proses, socket) dijelaskan seperlunya di tempat. Sapaan "kamu", sama dengan course lain.

Cara belajar dan lingkungan lab

Di situs, setiap modul tampil dalam mode langkah: satu layar satu ide, contoh yang bisa diubah dan dijalankan, pertanyaan dengan umpan balik, animasi dengan jeda tebak, playground bermisi, dan latihan yang diperiksa langsung di peramban. Tombol Baca penuh menampilkan semua layar dalam satu halaman.

BagianDi manaDiperiksa
Latihan Python pustaka standar: estimasi, simulasi antrean dan beban, cache, consistent hashing, kuorum, jam vektor, Raft sederhana, pembatas laju, circuit breaker, Bloom/HyperLogLog, papan peringkat, model ancaman, Erlang C, biayaPeramban (Python di peramban); pemeriksa memakai Python 3.11–3.13Otomatis
Latihan yang butuh sistem operasi sungguhan (socket di 127.0.0.1, thread)Laptop atau GitHub Codespaces, dengan berkas tes unduhanOtomatis
Uji beban sungguhan, Redis/Postgres/antrean lokal, layanan edge, OpenTelemetry, dokumen desain dan ADRLaptop atau Codespaces dan akun gratis penyediaLab "Selesai bila:"

Keacakan selalu berbenih dan jam selalu disuntikkan, sehingga simulasi memberi angka yang sama di peramban, di laptop, dan di pemeriksa. Harga penyedia dicek di dokumentasi resmi dengan tanggal, atau diberi label ILUSTRASI.

Waktu: ±6 jam per modul dan ±8 jam untuk Modul 16, total ±98 jam, di luar bagian pendalaman.

Silabus (16 modul)

#ModulKlasikModernProyek Tryout Nusantara
01Berpikir dalam sistemKebutuhan fungsional dan nonfungsional, estimasi kasar (QPS, penyimpanan, bandwidth), angka latensi, SLOAI sebagai rekan desain dan cara memeriksanyaKebutuhan dan estimasi Try Out nasional
02Dari satu server ke banyakSkala vertikal vs horizontal, layanan tanpa status, penyeimbang beban (round robin, least connections, power of two choices), sesiPenyeimbang beban terkelola, health checkLapisan API yang bisa diperbanyak
03CachingLokalitas, LRU/LFU/FIFO/TTL, cache-aside/write-through/write-back, invalidasi, thundering herd (single-flight, jitter), rasio hitCDN dan edge cache, RedisCache paket soal dan papan peringkat
04Basis data dalam skalaReplikasi leader–follower, lag dan read-your-writes, partisi range/hash, consistent hashing dan simpul virtual, rebalancingPostgres terkelola, replika baca, connection poolerPartisi jawaban per peserta
05Konsistensi dan konsensusLinearizability vs konsistensi akhir, CAP (Gilbert & Lynch 2002), PACELC, kuorum N/R/W, jam vektor, CRDT, RaftBasis data terdistribusi modern (konsep)Timer ujian yang otoritatif
06Antrean dan pemrosesan asinkronAntrean vs log, at-least-once, kunci idempoten, pola outbox, backpressure, DLQAntrean dan log terkelola, workerAutosave dan penilaian lewat antrean
07Desain APIREST, gRPC, GraphQL; paginasi; versi; idempotensi; pembatas laju (token bucket, jendela geser, GCRA); gatewayOpenAPI, API gatewayKontrak API Try Out
08KeandalanMode kegagalan, timeout, coba ulang dengan backoff dan jitter, circuit breaker, bulkhead, degradasi bertahap, matematika ketersediaanUji kekacauan (chaos) sekilasTry Out yang tetap jalan saat Storage lambat
09Pola arsitekturMonolit modular vs layanan mikro, DDD dan bounded context, heksagonal, event-driven, CQRS, event sourcing, sagaModular monolith modernBatas modul Tryout Nusantara
10Struktur data probabilistik dan pencarianBloom filter, HyperLogLog, Count-Min Sketch, indeks terbalik, geohashPencarian terkelola, vector searchHitung peserta unik dan soal terpopuler
11Sistem waktu nyataWebSocket/SSE/long polling, pub/sub, kehadiran, fan-out on write vs on read, papan peringkat (sorted set, skip list)Layanan realtime terkelolaPapan peringkat langsung dan pengumuman
12Cloud, serverless, dan edgeRegion dan zona, layanan terkelola, model biaya serverless, cold start, penyimpanan objekCloudflare Workers, OpenNext, IaCArsitektur penerapan Tryout Nusantara
13Keamanan arsitekturZero trust, STRIDE per aliran lintas batas, sesi vs token, rahasia dan rotasi, isolasi multi-tenant (RLS), kunci pembatas laju, DDoS dan asimetri biayaWAF dan rate limit di edgeModel ancaman Tryout Nusantara (defensif)
14Observabilitas dan kapasitasMetrik/log/trace, RED/USE, persentil dan histogram, latensi ekor (tail at scale), Erlang C, square-root staffingOpenTelemetry, uji beban model terbukaRencana kapasitas pukul 19.00 dan 20.40
15Biaya dan evolusi arsitekturModel biaya dan kuota, faktor puncak, build vs buy, aturan Smith, strangler fig, ADRFinOpsRencana biaya dan migrasi dari arsitektur platform lama
16Proyek akhir: Tryout NusantaraMenyatukan: kebutuhan, estimasi, desain, simulasi, keandalan, keamanan, biaya, sensitivitasDokumen desain yang dibangkitkan kode + ADRDokumen desain utuh

Proyek: Tryout Nusantara

Platform try out kecil di awal course melayani puluhan sampai ratusan peserta bersamaan, dan uji bebannya menunjukkan batasnya dengan angka. Proyek course ini merancang penerusnya untuk skala nasional: 50.000 peserta mulai ujian 100 menit pada pukul 19.00, dengan autosave setiap jawaban, timer yang tidak bisa dicurangi, penilaian, persentil dan papan peringkat, pembayaran, dan pengumuman. Data di data/ (dibuat deterministik oleh data/buat_data.py): beban per detik per endpoint selama satu Try Out (termasuk lonjakan tombol mulai dan lonjakan kumpul otomatis) dan jejak akses cache dengan pergeseran himpunan kerja. Setiap modul menambah satu bagian dokumen desain beserta fungsi dan simulasi yang diperiksa mesin; Modul 16 menyatukannya menjadi dokumen desain yang semua angkanya dibangkitkan kode. Kontrak: proyek-tryout.md.

Kerangka setiap modul

Modul ditulis dalam mode langkah (satu layar satu ide, setiap layar berakhir dengan interaksi), dengan bagian:

# Modul NN · Judul

> **Hasil belajar:** 3–5 kemampuan yang bisa diamati
> **Prasyarat:** modul sebelumnya dan modul course lain (bertaut, dengan topiknya)
> **Waktu:** ± X jam
> **Hasil lab:** bagian dokumen desain Tryout Nusantara

## Intinya                          (3–5 butir)
## 1..N. Bagian per konsep           (contoh dulu, lalu penjelasan singkat; cek, animasi, playground, latihan)
##       Di balik layar              (algoritma atau matematika di balik pola; dipakai latihan)
## N+1. Proyek: Tryout Nusantara     (lab kode dan dokumen; "Selesai bila:")
## N+2. Belajar bersama AI           (memeriksa jawaban agen dengan angka; tugas tanpa AI)
## N+3. Pendalaman (opsional)        (studi kasus rekaan, di skala enterprise, red flag dan daftar periksa)
## Rangkuman                         (3–7 butir)
## Sumber                            (dokumentasi resmi + rujukan klasik, bertanggal)

Aturan isi:

  • Angka, bukan kata sifat. Setiap klaim desain ("cukup cepat", "bisa menahan lonjakan") diganti angka yang dihitung atau disimulasikan di contoh yang diperiksa mesin.
  • Latihan memeriksa perilaku sistem, bukan bentuk: rasio hit cache yang benar pada jejak kontrak, kunci yang berpindah saat simpul ditambah ≈ 1/n, kuorum yang menjamin membaca tulisan terakhir, pemimpin Raft tunggal per term, pembatas laju yang tidak bocor di batas jendela, circuit breaker yang membuka dan pulih, peluang positif palsu Bloom sesuai rumus. Kode awal yang naif (modulo sebagai partisi, coba ulang tanpa jitter, cache tanpa single-flight) harus gagal.
  • Keacakan berbenih (random.Random(42)); simulasi dibandingkan dengan toleransi yang disebut di perintah.
  • Studi kasus berupa skenario rekaan yang mewakili kejadian umum (platform try out kecil, uji beban, migrasi penyedia), ditandai rekaan; tanpa data pengguna.
  • Harga ditulis sebagai fakta hanya bila dicek di dokumentasi resmi dengan tanggal; selain itu diberi label ILUSTRASI dan diperlakukan sebagai parameter.
  • Sumber klasik bergantian: Kleppmann Designing Data-Intensive Applications; Tanenbaum & van Steen Distributed Systems (ed. 4); Beyer dkk. Site Reliability Engineering (2016); Nygard Release It! (ed. 2); Dean & Barroso (2013) "The Tail at Scale"; DeCandia dkk. (2007) Dynamo; Karger dkk. (1997); Lamport (1978); Gilbert & Lynch (2002); Abadi (2012) PACELC; Ongaro & Ousterhout (2014) Raft; Shapiro dkk. (2011) CRDT; Bloom (1970); Flajolet dkk. (2007) HyperLogLog; Cormode & Muthukrishnan (2005); Evans Domain-Driven Design (2003); Little (1961). Edisi dan bab diverifikasi.
  • Keamanan defensif saja (Modul 13): pemodelan ancaman dan kontrol, tanpa langkah serangan.
  • Patokan CS2023: knowledge area Parallel and Distributed Computing, Systems Fundamentals, Software Engineering, dan Networking and Communication.

Hubungan dengan course lain

CourseHubungan
F1, F2, F3, F4, F5Prasyarat wajib: Python, SQL, alat kerja, HTTP dan web, rilis
K1 Struktur Data dan AlgoritmaDianjurkan: tabel hash, heap, pencarian biner untuk bagian "di balik layar"
C14 Full Stack DevelopmentSebelumnya di jalur: C14 membangun satu aplikasi yang benar, C11 merancangnya untuk skala
C5 Agentic EngineeringPendamping: bekerja aman dengan agen koding, ADR dan spesifikasi
C4 Data Engineering, C10 MLOpsPipeline data, log, pemantauan; antrean dan autoscaling
C3 AI EngineeringVector search, gateway LLM, biaya inferensi