Serialization 301: Production Data Serialization
Production serialization—trust, contracts, workloads, and honest measurement—for people who already know how formats work.
Who this is for
Experienced students and developers who must ship a choice under conflicting constraints (trust, evolution, multi-language estates, performance claims). This is the core advanced course after Serialization 201.
If you need to implement a codec (wire encoding, runtime paths, a subset lab), that is Serialization 401 (implementer elective)—not this course.
Prerequisites
| Type | Requirement |
|---|---|
| Hard | Serialization 101 — trade-off axes and at least one lens |
| Hard | Serialization 201 — especially schema identity, evolution, dynamic vs IDL, encode cost, zero-copy, compression vs format (or equivalent experience) |
This course does not re-teach 201 mechanisms. Open the 201 article when you need a model; return here for multi-constraint judgment.
Learning outcomes
By the end of this course you should be able to:
- Analyze trust boundaries and state when portable vs language-native formats are acceptable.
- Distinguish operational schema cultures (e.g. Avro-style resolution vs Protobuf field-number discipline) without re-deriving wire rules.
- Evaluate workload fit (row vs columnar at system scale; polyglot contracts; RPC vs messaging shape).
- Critique benchmark claims using this suite’s paradigm-and-language rules.
- Recommend a family or approach under stated constraints and justify it with categories and Results.
- Identify what this harness cannot answer.
How this course fits the program
| Course | Role |
|---|---|
| 101 | Foundations — what serialization is; axes and lenses |
| 201 | Mechanisms — how formats work |
| 301 (this course) | Production judgment — what to ship under constraints |
| 401 | Implementer elective — wire + language paths + lab |
Default path: 101 → 201 → 301. Suite lab: Benchmarks and language Results.
Suggested paths
Services track: trust boundaries → untrusted input → using this suite → two schema cultures / public API contracts → rpc and messaging → implementation variance → cases public REST, internal RPC, polyglot boundary.
Data / events track: using this suite → row vs columnar → two schema cultures → schema registries → versioning → cases event backbone, analytics lake.
Performance deep path: using this suite → implementation variance → latency tails and GC → compression as system choice → zero-copy in production → faster postmortem.
Modules
Trust & boundaries
| Article | You should be able to… |
|---|---|
| Trust boundaries: portable vs native | Say when native formats are unacceptable as interchange |
| Untrusted input and parser risk | Name failure modes and controls for hostile payloads |
| Secrets, PII, and payload surfaces | Spot leak surfaces in logs, traces, and secondary stores |
Contracts that survive years
| Article | You should be able to… |
|---|---|
| Two schema cultures: Avro vs Protobuf | Contrast resolution culture vs field-number discipline |
| Schema registries and compatibility modes | Choose and enforce BACKWARD / FORWARD / FULL-class policy |
| Public API contracts | Require a hard contract when the wire is JSON |
| Versioning strategies in the wild | Plan dual-write, content-type, and kill criteria |
Workload architecture
| Article | You should be able to… |
|---|---|
| Row vs columnar at system scale | Keep RPC codecs out of lake design (and the reverse) |
| Polyglot estates | Defend one product contract across runtimes |
| RPC and messaging payload design | Shape messages for sync vs fan-out |
| Zero-copy in production | Adopt zero-copy only when ops fit |
| Caching and queues | Keep shared stores portable and versioned |
Performance as engineering
| Article | You should be able to… |
|---|---|
| Using this suite without fooling yourself | Read Results within paradigm and language |
| Implementation variance within a family | Choose libraries without ranking formats globally |
| Latency tails, allocations, and GC | Judge p99 and allocation pressure |
| Compression as a system choice | Place gzip/zstd without replacing format design |
Capstones
| Case study | Focus |
|---|---|
| Public REST API | JSON + validation vs dual contracts |
| Internal high-QPS RPC | Schema-driven vs schemaless binary |
| Event backbone | Avro/Protobuf + evolution under rolling deploy |
| Analytics lake | Columnar lake vs row event dumps |
| Cross-language service boundary | One contract, three languages |
| “We need it faster” postmortem | Wrong bench vs wrong paradigm vs wrong payload |
Honesty rules
Same program rules as 101 / 201:
- No universal winners — always under stated constraints.
- Implementation beats brand name.
- Payload shape matters.
- Compare within paradigm and within one language before cross-cutting claims.
- Security and trust are first-class.
- Prose numbers are illustrative; Results own suite truth for this harness.
301-specific: every article includes Experiments (setup, procedure, decision rule for the page’s problem) and Metrics (primary signals for that experiment’s conclusion), plus what this suite cannot tell you. Prefer failure modes and decision tables over mechanism encyclopedias.
Assessment (self-check)
Treat the capstone case studies as the course exam: under fixed constraints, recommend an approach, name the evidence you would collect on this suite, and state what you would still need to measure outside the harness.
Where to go next
- Finish or skim Serialization 201 if mechanisms are rusty.
- Serialization categories and language Results for suite evidence.
- Serialization 401 if you build or deeply integrate codecs.