As with every jailbreak, this means a giant spike in traffic to all involved in the jailbreak community - specifically to saurik's servers (Cydia) and the default repositories' servers (ourselves, BigBoss, and zodttd). We thought we'd shed a little light on what's going on behind the scenes.
The iPhone 5 was released September 21st, and a jailbreak has been heartily anticipated. Additionally, over 200 million devices are currently running iOS 6.0 - and only a few of those had any jailbreak option until Monday's evasi0n release. At the end of January, saurik stated over 22 million individual devices had accessed Cydia within the past 60 days. That's with NO JAILBREAK being available for many of the latest devices at the time.
At noon EST on Monday the jailbreak was released on evasi0n.com by the evad3rs (a team formed by @pimskeks, @planetbeing, @pod2g, and @MuscleNerd). Full stats haven't been released on Monday's traffic yet, but here's some:
- pod2g stated at 11AM EST there were over 147,000 people on the site - an hour before release.
- In the four days BEFORE the release (Jan 30 - Feb 3), nearly 3 million people visited their site for a total of over 17 million page views.
- UPDATE: pod2g released evasi0n.com stats including Monday February 4th - 5 millions unique visitor and 40 millions page views.
- 9 minutes after evasi0n's release, @planetbeing posted they'd hit over 1 TB of bandwidth - that's over 100,000 downloads in 10 minutes. By 6 PM it'd been used over 800,000 times.
- By Tuesday, evasi0n had been run over 1.7 million times, according to saurik..
- ModMyi.com had over 685,000 visits Monday.
This was an interesting jailbreak release, in that it had a specific time, known a full day ahead of time. This creates a single giant crushing traffic flow initially, with sustained traffic and various spikes as the other side of the world wakes up, etc.
Let's go through a basic release from Cydia and the repositories' point of view.
When the jailbreak is released, hundreds of thousands of devices are opening Cydia at once - in this case over 100k within the first ten minutes. In the past, every one of these devices would first have to download each default repository's Packages file - the file which tells Cydia which packages a repo has in it. This text file is, in our instance, currently 13MB. That would have equaled 1.3 TB of bandwidth in 10 minutes before anyone even downloaded a single package, except as a genius move in this jailbreak, the evad3rs and saurik had arranged before hand to include a recent Packages file from each repo in the jailbreak - eliminating that need. Past jailbreaks, however, saw this as a huge initial spike.
But we're all still suddenly serving millions of pages and files - much of the content you see in Cydia is web pages, including Cydia's homepage, the Manage Account page, and every "depiction," or the page you see when you pull up a specific file.
Here's a graph saurik shared of his (non-repository - meaning none of the repo packages Telesphoreo Tangelo hosts) traffic since the jailbreak (measured in HTTP hits per 5 minutes):
Now, when a person accesses Cydia, and say, goes to install the E is for Ezra HD theme, a few things are happening.
The content you see in Cydia (at the top says ModMyi on black, has text describing the package underneath, links to screenshots, etc) is actually a webpage, located on our servers. This is called a depiction, which a repo's Packages file tells Cydia the location of. Generally, the repos host these web pages (some developers host their own depictions). Here's a graph of our hits over the past 24 hours, via CloudFlare:
The "Package Officially Purchased" and package price area in the depiction of a paid file, and the blue "Purchase" button are hosted by Cydia.
The package itself, a Debian archive (.deb file), is hosted by the repo, in ModMyi's case on a separate server for serving repository files and tracking their downloads. When you press "Install" in Cydia, Cydia then attempts to download the file from the repo, via the URL for the package given in the repo's Packages file. In each default repositories case, before this file is downloaded it is passed through another file which decides whether or not Cydia can access it. If a repo server is down, or the file hash doesn't match the one in the Packages file, you will see an error in the black Cydia install window such as 502 Bad Gateway, HTTP/1.1 503 Service Unavailable, Size mismatch, and/or others.
If this is a paid package (in the case we're looking at, it is), the repository's server first must contact Cydia's server to verify the device attempting to install this package has in fact paid for it. This is also in ModMyi's case when stats are recorded on the download (arguably something we should change - if the package fails, we've already counted the download).
If Cydia's server replies yes, the device is authorized to download, then the repo server sends the file, and you see the installation process begin in Cydia. If this device has not purchased the package, Cydia sends a no. If Cydia's servers are overwhelmed, after a timeout the repository server assumes this is a no. In either "no" case, Cydia will display a 403 forbidden error at this point.
If you've successfully downloaded the package, Cydia now unpacks it locally, and installs the package on your iDevice.
Note: many packages have Depends, or other packages which they require Cydia to download before or after installing themselves - so you may be requesting Cydia to do this with multiple packages on multiple repos.
In a perfect situation, by opening Cydia and installing this theme you've completed these steps:
- Opened Cydia, hitting saurik's server to load the home page.
- Refreshed your sources, downloading the current packages list (for the past couple years this has been ONLY the packages which are new since the last time you logged in) from all installed repositories.
- Browsed to the page of the package you're installing, actually a webpage on a repo's server.
- Seen the "Officially Purchased" area or "Purchase" button, after Cydia has checked to see if your device is authorized.
- Pressed Install, making Cydia request the file from the repo server.
- Caused the repo server to talk to Cydia's server, requesting again if the device is authorized.
- Downloaded a file, after the repo server sees the device is authorized.
- Cydia unpacks and installs the package, you're done.
Of course, this is all just on the Cydia side - yesterday also set traffic records for us on the modmyi.com website as well.
Most users ever online was 20,073, February 4th 2013 at 9:41 PM.
From early on release day repo maintainers, saurik, the jailbreak publishers (evad3rs this time around), and a host of support staff helping with servers, caching, etc are all working non-stop. We stare at errors all day, monitor stats, and fix everything possible as it's happening.
My thanks to all of them for their work, the community we are a part of, and the great customization of our devices made possible by it.