← field notes

How a Software Update Reaches a Billion Devices

When a platform pushes a new build to a billion devices, it doesn’t happen all at once. Nobody flips a single switch and watches a billion phones update in unison. That would be reckless, and the people who run these pipelines know it. Understanding how software updates roll out means understanding a slow, monitored, reversible process built by people who assume something will break and plan for the moment it does.

This matters to anyone who watches how platforms defend their infrastructure, because an update pipeline is also a trust pipeline. Every device that installs a build is deciding, automatically, that the file came from the right place and hasn’t been tampered with. That trust chain is exactly the kind of thing attackers have gone after in the past, and exactly the kind of thing defenders have spent the last decade hardening.

The staged rollout, not the big bang

Most large platforms release in rings. Internal builds go to employees first, then to a beta channel of opted-in users, then to a small slice of the production fleet, typically starting around 1 percent. If that slice looks healthy, the percentage climbs: 5, then 25, then 50, then everyone. Apple’s phased release for App Store updates spreads over roughly seven days with daily percentage increases. Google Play’s staged rollout works the same way, letting a developer hold a release at a fixed percentage before deciding to expand or halt it.

The tricky part is deciding which devices land in that first 1 percent, and making sure the same devices stay in the same cohort as the percentage grows. Platforms do this with a deterministic hash, usually derived from a device or account identifier, mapped to a number between 0 and 100. A device with hash value 3 is in the rollout the moment the threshold passes 3, and it stays in every subsequent expansion. This avoids the alternative, which is re-rolling dice on every device at every stage and getting a noisy, unrepeatable sample.

Watching the fleet for damage

A staged rollout is only useful if someone is watching what happens to the 1 percent. Telemetry pipelines collect crash rates, ANR (application not responding) rates on Android, boot loop counts, battery drain anomalies, and error rates from backend API calls the new build makes. These get compared against a control group still running the previous version, not just against a fixed historical baseline, because comparing against a live control catches problems caused by something outside the update itself, like a spike in traffic or a third-party outage.

Most rollout systems have an automatic halt condition. If crash-free session rate on the new build drops more than some threshold below the control group, the rollout pauses or reverts by itself, before a human even looks at a dashboard. This is the part people rarely think about: the kill switch usually isn’t a person clicking “stop.” It’s a rule watching a metric.

Delta patches, not full downloads

Sending a billion devices a full multi-gigabyte OS image every time a handful of files change would be absurd, so most update systems ship the diff instead of the whole thing. Chrome popularized courgette, a binary diffing algorithm tuned for compiled executables, which produces much smaller patches than a naive byte-level diff like bsdiff because it understands how compilers lay out code. Android’s A/B (seamless) update system applies a similar idea at the partition level, writing the new system image to an inactive partition in the background while the device keeps running, then swapping which partition boots next time.

Delta patching also means downloads can be resumed and chunked. A device on a weak connection doesn’t need to restart a multi-hundred-megabyte transfer from zero if it drops mid-download; it picks up the missing block.

The delivery network problem

A billion devices requesting the same file in a short window is a distributed denial-of-service attack shaped like a product launch. Platforms solve this with the same infrastructure that content delivery networks use for everything else: edge caching close to the requester, multiple CDN providers in case one degrades, and deliberate pacing so the rollout percentage itself acts as a throttle on total simultaneous demand. Some systems, including Windows Update’s Delivery Optimization, also pull bytes from other machines on the same local network or nearby on the internet, so a corporate office with two hundred machines downloading the same patch doesn’t hit the origin two hundred times.

Anyone who has run infrastructure that serves a lot of clients from a small set of exit points recognizes this pattern. Pacing a rollout by percentage isn’t just about catching bugs early. It’s about not melting the pipe.

Why every device trusts the file

Before a device installs anything, it verifies a signature chain: the update is signed with a private key, and the device holds the corresponding public key (or a certificate chain rooted in one it trusts) to check that signature before touching the payload. This is why a downloaded update can’t just be swapped for a malicious file on the wire or on a compromised mirror; the signature won’t match and the device refuses it.

More sophisticated frameworks, like The Update Framework (TUF), defend against attacks that a simple signature alone doesn’t stop: a freeze attack, where an attacker keeps serving an old, validly-signed version to prevent a security fix from ever arriving, or a rollback attack, where a device is tricked into reinstalling an older, vulnerable build. Defenses include version counters that a device refuses to move backward, and separate signing keys for different roles (root trust versus day-to-day release signing) so that compromising one doesn’t compromise the whole chain. Android’s Verified Boot keeps a rollback index in hardware-backed storage specifically so a device can’t be downgraded to a version with a known exploit, even by someone with physical access.

The fingerprint angle

Here’s where this connects to the world of device farms and fingerprinting: the build number, patch level, and kernel version reported by a device aren’t just cosmetic. They’re part of what platforms check during device attestation, through mechanisms like Android’s Play Integrity API or its predecessor SafetyNet. A device sitting on a six-month-old patch level looks different to an attestation service than one running current firmware, and that difference can factor into how much a platform trusts the device’s traffic. This is a real operational headache for anyone managing a large, consistent fleet of devices, because an OTA update can silently change the fingerprint that a downstream system has learned to associate with a given device, without anyone touching the hardware. It’s one reason fleets built for consistency often lock OS versions deliberately rather than letting devices auto-update, accepting the security tradeoff in exchange for a stable identity.

When the pipeline itself is the target

The scariest failure mode isn’t a bad rollout, it’s a compromised one. Attackers who can’t break a billion individual devices have, on occasion, gone after the build or signing pipeline instead, since compromising that one choke point means every device downstream trusts the poisoned output automatically. The SolarWinds Orion compromise in 2020 inserted malicious code during the build process itself, before signing, so the resulting binary carried a legitimate signature. The 2017 CCleaner incident worked similarly, with attackers compromising the build environment rather than any individual user. NotPetya spread in 2017 through a hijacked update mechanism for Ukrainian accounting software, M.E.Doc, turning a routine update check into a malware delivery channel.

Defenders have responded with reproducible builds, so independent parties can verify that a given binary really does come from the claimed source code, and with transparency logs and provenance systems like SLSA and Sigstore that record who signed what and when, making a quiet, undetected compromise of the signing process harder to pull off and easier to catch after the fact.

What a billion devices actually means

Scale doesn’t remove risk, it just makes the consequences of getting it wrong bigger and the tooling to manage that risk more elaborate. A staged rollout with a real-time kill switch, a delta patch to keep bandwidth sane, a signature chain that refuses tampered or downgraded files, and a build pipeline hardened against the kind of compromise that turns trust into an attack vector, that’s the actual machinery behind “the update is rolling out now.” It’s less a broadcast than a slow, monitored negotiation between a platform and a fleet it doesn’t fully control.

For more on how platforms build, defend, and sometimes lose control of the infrastructure a billion devices depend on, head back to the Hidden Internet homepage.

Get new guides and videos first — join the Telegram channel.

watch
The Hidden Internet on YouTube

Every field note starts as a short documentary. Watch the systems in this piece explained on screen.

subscribe →
read on
More field notes

The rest of the series on how the modern internet detects, tracks, and sorts the traffic that reaches it.

browse the archive →