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.
- 16 modul
- 112 latihan
- 224 istilah
Daftar modul
- 01Berpikir dalam sistemGratis7 latihan
- 02Dari satu server ke banyakGratis7 latihan
- 03CachingCoding Studio7 latihan
- 04Basis data dalam skalaCoding Studio6 latihan
- 05Konsistensi dan konsensusCoding Studio7 latihan
- 06Antrean dan pemrosesan asinkronCoding Studio7 latihan
- 07Desain APICoding Studio7 latihan
- 08KeandalanCoding Studio7 latihan
- 09Pola arsitekturCoding Studio7 latihan
- 10Struktur data probabilistik dan pencarianCoding Studio8 latihan
- 11Sistem waktu nyataCoding Studio7 latihan
- 12Cloud, *serverless*, dan *edge*Coding Studio7 latihan
- 13Keamanan arsitekturCoding Studio7 latihan
- 14Observabilitas dan kapasitasCoding Studio7 latihan
- 15Biaya dan evolusi arsitekturCoding Studio7 latihan
- 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:
| Konsep | Pemilik |
|---|---|
| Fungsi, berkas teks, CSV, dan JSON | F1 · Fungsi, Berkas teks, CSV, dan JSON |
| Indeks, transaksi dan isolasi, SQL dari Python | F2 · Indeks dan kinerja dasar, Transaksi dan konkurensi, SQL dari Python |
| Terminal, Git, GitHub Actions | F3 · Alat Kerja Developer |
| HTTP, header, proxy, cookie | F4 · Cara kerja web |
| Docker, CI, rahasia, rilis | F5 · Rilis |
| Tabel hash, heap, pencarian biner | K1 · Tabel hash, Heap dan antrean prioritas, Pencarian biner |
| Satu aplikasi full stack: API kontrak dulu, sesi dan otorisasi, webhook, log dan RED dasar | C14 · 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.
| Dari | Wajib | Yang dipakai |
|---|---|---|
| F1 Python | ya | Fungsi, kelas, dict, berkas CSV dan JSON, pytest |
| F2 SQL | ya | Indeks, transaksi dan isolasi, SQL dari Python |
| F3 Alat Kerja Developer | ya | Terminal, Git, GitHub Actions untuk repo proyek |
| F4 TypeScript dan Web | ya | HTTP, header, proxy, cookie, perjalanan pulang-pergi |
| F5 Rilis | ya | Docker, CI, rahasia, menayangkan API |
| K1 Struktur Data dan Algoritma | dianjurkan | Tabel hash, heap, pencarian biner untuk bagian "di balik layar" |
| C14 Full Stack Development | sebelumnya di jalur | Aplikasi 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.
| Bagian | Di mana | Diperiksa |
|---|---|---|
| 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, biaya | Peramban (Python di peramban); pemeriksa memakai Python 3.11–3.13 | Otomatis |
Latihan yang butuh sistem operasi sungguhan (socket di 127.0.0.1, thread) | Laptop atau GitHub Codespaces, dengan berkas tes unduhan | Otomatis |
| Uji beban sungguhan, Redis/Postgres/antrean lokal, layanan edge, OpenTelemetry, dokumen desain dan ADR | Laptop atau Codespaces dan akun gratis penyedia | Lab "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)
| # | Modul | Klasik | Modern | Proyek Tryout Nusantara |
|---|---|---|---|---|
| 01 | Berpikir dalam sistem | Kebutuhan fungsional dan nonfungsional, estimasi kasar (QPS, penyimpanan, bandwidth), angka latensi, SLO | AI sebagai rekan desain dan cara memeriksanya | Kebutuhan dan estimasi Try Out nasional |
| 02 | Dari satu server ke banyak | Skala vertikal vs horizontal, layanan tanpa status, penyeimbang beban (round robin, least connections, power of two choices), sesi | Penyeimbang beban terkelola, health check | Lapisan API yang bisa diperbanyak |
| 03 | Caching | Lokalitas, LRU/LFU/FIFO/TTL, cache-aside/write-through/write-back, invalidasi, thundering herd (single-flight, jitter), rasio hit | CDN dan edge cache, Redis | Cache paket soal dan papan peringkat |
| 04 | Basis data dalam skala | Replikasi leader–follower, lag dan read-your-writes, partisi range/hash, consistent hashing dan simpul virtual, rebalancing | Postgres terkelola, replika baca, connection pooler | Partisi jawaban per peserta |
| 05 | Konsistensi dan konsensus | Linearizability vs konsistensi akhir, CAP (Gilbert & Lynch 2002), PACELC, kuorum N/R/W, jam vektor, CRDT, Raft | Basis data terdistribusi modern (konsep) | Timer ujian yang otoritatif |
| 06 | Antrean dan pemrosesan asinkron | Antrean vs log, at-least-once, kunci idempoten, pola outbox, backpressure, DLQ | Antrean dan log terkelola, worker | Autosave dan penilaian lewat antrean |
| 07 | Desain API | REST, gRPC, GraphQL; paginasi; versi; idempotensi; pembatas laju (token bucket, jendela geser, GCRA); gateway | OpenAPI, API gateway | Kontrak API Try Out |
| 08 | Keandalan | Mode kegagalan, timeout, coba ulang dengan backoff dan jitter, circuit breaker, bulkhead, degradasi bertahap, matematika ketersediaan | Uji kekacauan (chaos) sekilas | Try Out yang tetap jalan saat Storage lambat |
| 09 | Pola arsitektur | Monolit modular vs layanan mikro, DDD dan bounded context, heksagonal, event-driven, CQRS, event sourcing, saga | Modular monolith modern | Batas modul Tryout Nusantara |
| 10 | Struktur data probabilistik dan pencarian | Bloom filter, HyperLogLog, Count-Min Sketch, indeks terbalik, geohash | Pencarian terkelola, vector search | Hitung peserta unik dan soal terpopuler |
| 11 | Sistem waktu nyata | WebSocket/SSE/long polling, pub/sub, kehadiran, fan-out on write vs on read, papan peringkat (sorted set, skip list) | Layanan realtime terkelola | Papan peringkat langsung dan pengumuman |
| 12 | Cloud, serverless, dan edge | Region dan zona, layanan terkelola, model biaya serverless, cold start, penyimpanan objek | Cloudflare Workers, OpenNext, IaC | Arsitektur penerapan Tryout Nusantara |
| 13 | Keamanan arsitektur | Zero trust, STRIDE per aliran lintas batas, sesi vs token, rahasia dan rotasi, isolasi multi-tenant (RLS), kunci pembatas laju, DDoS dan asimetri biaya | WAF dan rate limit di edge | Model ancaman Tryout Nusantara (defensif) |
| 14 | Observabilitas dan kapasitas | Metrik/log/trace, RED/USE, persentil dan histogram, latensi ekor (tail at scale), Erlang C, square-root staffing | OpenTelemetry, uji beban model terbuka | Rencana kapasitas pukul 19.00 dan 20.40 |
| 15 | Biaya dan evolusi arsitektur | Model biaya dan kuota, faktor puncak, build vs buy, aturan Smith, strangler fig, ADR | FinOps | Rencana biaya dan migrasi dari arsitektur platform lama |
| 16 | Proyek akhir: Tryout Nusantara | Menyatukan: kebutuhan, estimasi, desain, simulasi, keandalan, keamanan, biaya, sensitivitas | Dokumen desain yang dibangkitkan kode + ADR | Dokumen 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
| Course | Hubungan |
|---|---|
| F1, F2, F3, F4, F5 | Prasyarat wajib: Python, SQL, alat kerja, HTTP dan web, rilis |
| K1 Struktur Data dan Algoritma | Dianjurkan: tabel hash, heap, pencarian biner untuk bagian "di balik layar" |
| C14 Full Stack Development | Sebelumnya di jalur: C14 membangun satu aplikasi yang benar, C11 merancangnya untuk skala |
| C5 Agentic Engineering | Pendamping: bekerja aman dengan agen koding, ADR dan spesifikasi |
| C4 Data Engineering, C10 MLOps | Pipeline data, log, pemantauan; antrean dan autoscaling |
| C3 AI Engineering | Vector search, gateway LLM, biaya inferensi |