Cost–benefit analysis on wiki hosting. Not comprehensive.
Defining Needs[]
- Assume that article webpage sizes in the Main namespace follow a Pareto distribution (or Zipf's law). In other words, generally speaking, there are fewer number of articles that are large compared to rest of articles on the wiki.
- Assume that article page visits in the Main namespace follow a Pareto distribution. In other words, there are fewer number of articles that have the highest number of daily page visits.
Articles to Test[]
As of 17:56, 27 October 2022 (UTC), top 10 viewed articles in Main namespace:
- WARFRAME Wiki - Main page, entry point to wiki
- Warframes - Linked on main page, high traffic b/c serves as portal to different playable characters as well as being a mechanics article
- Revenant/Prime - Latest Prime Warframe
- Helminth - End-game system, one of the longer mechanic articles
- Archon Shard - New resource related to end-game system
- Kuva Lich/Progenitor - Quick reference table for Progenitor elements b/c not available in-game
- Revenant - Since Revenant Prime was released, this page serves as popular entry point for learning about his mechanics
- Mastery Rank - Evergreen article to track latest Mastery XP allocation for completionists and veterans
- Kuva Lich - Enemy that rewards powerful Kuva variant weapons
Other important articles:
- Weapon Comparison - Large article for sampling of weapon stats
- Story and History - One of the largest articles that is mostly text-based
- Void Relic - Large article
- Baro Ki'Teer - Large article with lots of media
- Damage - Large article with lots of wikitables and math formulas
- Codex - Large article with lots of image assets
- Glyph - Large article with lots of image assets
- Stance - One of the few articles that render .gifs which are larger in file size (few hundred KBs)
See Special:LongPages for list of articles that have large wikitext source size. Can assume that the more wikitext present on articles, the larger the resultant browser page size, though keep in mind this isn't always true because of Templates that encapsulate complex wikitext formatting or #invoke Lua scripts.
Article Network Usage[]
As of 05:13, 28 October 2022 (UTC), tested on:
- Google Chrome (64-bit, version 106.0.5249.119) in incognito mode (no extensions), browser cache disabled.
- Desktop 1920x1080 @ 94.5 Mbps download, 11.6 Mbps upload, 30 ms latency.
- Stop when load event is triggered and after most ads load.
- Only one pass through each page (ideally should perform multiple trials and take averages).
- Viewing as logged out, anonymous user. Using light theme (default).
| Article name | # Requests | Bytes transferred[1] (MB) | Resources loaded[2] (MB) | DOMContentLoaded (ms) | Load Event (ms) | Notes |
|---|---|---|---|---|---|---|
| WARFRAME Wiki | 426 | 5.4 | 13.5 | 485 | 692 | |
| Warframes | 610 | 16.9 | 26.4 | 701 | 3910 | |
| Revenant/Prime | 565 | 11.5 | 23.2 | 621 | 6300 | Standalone subpage, redirect from Revenant Prime |
| Helminth | 627 | 10.7 | 28.2 | 883 | 6480 | Very long and content heavy article, representative of most mechanics articles |
| Archon Shard | 784 | 11.2 | 25.2 | 426 | 3050 | Representative of most resource articles |
| Kuva Lich/Progenitor | 540 | 23.6 | 31.7 | 800 | 3750 | Relatively short article |
| Revenant | 541 | 7.0 | 14.9 | 488 | 4130 | Long article with content hidden behind multiple tabbers, representative of most Warframe articles |
| Mastery Rank | 766 | 9.3 | 25.8 | 590 | 6870 | |
| Kuva Lich | 491 | 21.6 | 32.8 | 562 | 6840 | Very long and content heavy article, outlier for most enemy articles; has additional subpages linked on main article |
| Average | 594.44 | 13.02 | 24.63 | 617.33 | 4669.11 |
As of 22:47, 29 October 2022 (UTC), tested on:
- Google Chrome (64-bit, version 107.0.5304.88) in incognito mode (w/ uBlock version 22.4.0), browser cache disabled.
- Desktop 1920x1080 @ 94.5 Mbps download, 11.6 Mbps upload, 30 ms latency.
- Stop when load event is triggered and after most resources loaded.
- Only one pass through each page (ideally should perform multiple trials and take averages).
- Viewing as logged out, anonymous user. Using light theme (default).
| Article name | # Requests | Bytes transferred (MB) | Resources loaded (MB) | DOMContentLoaded (ms) | Load Event (ms) | Notes |
|---|---|---|---|---|---|---|
| WARFRAME Wiki | 218 | 2.9 | 8.1 | 628 | 2850 | |
| Warframes | 395 | 4.4 | 9.5 | 645 | 4050 | |
| Revenant/Prime | 275 | 3.9 | 8.8 | 516 | 3480 | |
| Helminth | 325 | 5.7 | 15.9 | 1180 | 5600 | |
| Archon Shard | 286 | 3.7 | 8.9 | 595 | 2940 | |
| Kuva Lich/Progenitor | 343 | 18.6 | 23.4 | 492 | 3340 | |
| Revenant | 405 | 4.6 | 9.8 | 618 | 1030 | |
| Mastery Rank | 308 | 4.4 | 10.6 | 745 | 1520 | |
| Kuva Lich | 340 | 19.6 | 27 | 643 | 977 | |
| Average | 321.67 | 7.53 | 13.56 | 673.56 | 2865.22 |
As of 21:58, 1 November 2022 (UTC), tested on:
- Google Chrome (64-bit, version 107.0.5304.88) in incognito mode (no extensions), browser cache disabled.
- Simulated mobile view, iPhone SE (375x667) @ 36.3 Mbps download, 3.8 Mbps upload, 80 ms latency.
- Stop when load event is triggered and after most ads load.
- Only one pass through each page (ideally should perform multiple trials and take averages).
- Viewing as logged out, anonymous user. Using light theme (default).
| Article name | # Requests | Bytes transferred (MB) | Resources loaded (MB) | DOMContentLoaded (ms) | Load Event (ms) | Notes |
|---|---|---|---|---|---|---|
| WARFRAME Wiki | 381 | 8.7 | 17.0 | 1900 | 18570 | |
| Warframes | 298 | 4.2 | 11.7 | 2010 | 3320 | |
| Revenant/Prime | 292 | 4.0 | 11.3 | 1650 | 2420 | |
| Helminth | 311 | 5.8 | 18.1 | 6210 | 9280 | |
| Archon Shard | 293 | 4.4 | 11.9 | 1780 | 2600 | |
| Kuva Lich/Progenitor | 348 | 5.3 | 13.6 | 1500 | 2260 | |
| Revenant | 459 | 6.1 | 14.7 | 2690 | 3830 | |
| Mastery Rank | 330 | 5.9 | 15.5 | 4800 | 7130 | |
| Kuva Lich | 299 | 5.3 | 14.4 | 2520 | 3880 | |
| Average | 334.56 | 5.52 | 14.24 | 2784.44 | 5921.11 | Top banner ad appeared on all articles. If we remove 18570 ms outlier for load event, then average is 4340 ms. |
As of 21:58, 1 November 2022 (UTC), tested on:
- Brave (64-bit, version 1.45.116, Chromium 107.0.5304.91) in Private Window (no extensions), browser cache disabled.
- Simulated mobile view, iPhone SE (375x667) @ 36.3 Mbps download, 3.8 Mbps upload, 80 ms latency.
- Stop when load event is triggered and after most ads load.
- Only one pass through each page (ideally should perform multiple trials and take averages).
- Viewing as logged out, anonymous user. Using light theme (default).
| Article name | # Requests | Bytes transferred (MB) | Resources loaded (MB) | DOMContentLoaded (ms) | Load Event (ms) | Notes |
|---|---|---|---|---|---|---|
| WARFRAME Wiki | 95 | 1.4 | 4.5 | 912 | 2270 | |
| Warframes | 109 | 2.0 | 5.0 | 944 | 1630 | |
| Revenant/Prime | 108 | 1.8 | 4.7 | 974 | 2000 | |
| Helminth | 176 | 4.2 | 12.0 | 2640 | 6100 | |
| Archon Shard | 117 | 2.2 | 5.2 | 1290 | 2050 | |
| Kuva Lich/Progenitor | 156 | 1.7 | 4.5 | 970 | 2090 | |
| Revenant | 131 | 2.4 | 5.5 | 1320 | 2200 | |
| Mastery Rank | 120 | 2.2 | 6.3 | 2240 | 3590 | |
| Kuva Lich | 146 | 3.3 | 8.4 | 1240 | 3480 | |
| Average | 128.67 | 2.36 | 6.23 | 1392.22 | 2823.33 |
Breakdown By Asset Type[]
As of 20:54, 7 February 2023 (UTC), tested on:
- Google Chrome (64-bit, version 110.0.5481.78) in incognito mode (no extensions), browser cache disabled.
- Desktop 1920x1080 @ 94.5 Mbps (94500 Kbps) download, 11.6 Mbps (11600 Kbps) upload, 30 ms latency.
- Stop when nothing is happening (all requests and loads completed).
- Only one pass through each page (ideally should perform multiple trials and take averages).
- Viewing as logged out, anonymous user. Using light theme (default).
- No scrolling down page.
| Article name | # Requests | Bytes transferred[3] (B, bytes) | Resources loaded[4] (B, bytes) | Finish time (s) | DOMContentLoaded (ms) | Load Event (ms) | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Fetch/XHR | JS | CSS | Img | Media | Font | Doc | WS (WebSocket) | Wasm (WebAssembly) | (Web app) Manifest | Other | Fetch/XHR | JS | CSS | Img | Media | Font | Doc | WS | Wasm | Manifest | Other | Fetch/XHR | JS | CSS | Img | Media | Font | Doc | WS | Wasm | Manifest | Other | ||||
| WARFRAME Wiki | 585 | 4718029 | 12698003 | Didn't record | 602 | 3870 | ||||||||||||||||||||||||||||||
| 107 | 105 | 22 | 267 | 0 | 3 | 60 | 0 | 0 | 0 | 21 | 187000 | 2878325 | 71912 | 1235900 | 0 | 79685 | 254721 | 0 | 0 | 0 | 10486 | 610257 | 9631142 | 437738 | 1247751 | 0 | 78484 | 691037 | 0 | 0 | 0 | 1594 | ||||
| 18.2906% | 17.9487% | 3.7607% | 45.641% | 0% | 0.5128% | 10.2564% | 0% | 0% | 0% | 3.5897% | 3.9635% | 61.0069% | 1.5242% | 26.1953% | 0% | 1.6889% | 5.3989% | 0% | 0% | 0% | 1,783.3302% | 4.8059% | 75.8477% | 3.4473% | 9.8264% | 0% | 0.6181% | 5.4421% | 0% | 0% | 0% | 0.0126% | ||||
| Warframes | 991 | 46593264 | 59423655 | 32.44 | 580 | 707 | ||||||||||||||||||||||||||||||
| 184 | 158 | 22 | 501 | 2[5] | 9 | 86 | 0 | 0 | 0 | 29 | 290095 | 4552751 | 62070 | 2760487 | 37822355 | 315709 | 787448 | 0 | 0 | 0 | 2349 | 856688 | 14858265 | 324557 | 2674787 | 37820544 | 313012 | 2407521 | 0 | 0 | 0 | 168281 | ||||
| 18.5671% | 15.9435% | 2.22% | 50.555% | 0.2018% | 0.9082% | 8.6781% | 0% | 0% | 0% | 2.9263% | 0.6226% | 9.7713% | 0.1332% | 5.9246% | 81.1756% | 0.6776% | 1.69% | 0% | 0% | 0% | 0.005% | 1.4417% | 25.004% | 0.5462% | 4.5012% | 63.6456% | 0.5267% | 4.0515% | 0% | 0% | 0% | 0.2832% | ||||
| Revenant/Prime | 871 | 8245230 | 21399129 | 24.69 | 447 | 3240 | ||||||||||||||||||||||||||||||
| 186 | 162 | 23 | 378 | 0 | 9 | 75 | 0 | 0 | 0 | 38 | 276381 | 4499918 | 61911 | 2381681 | 0 | 286706 | 727556 | 0 | 0 | 0 | 11077 | 795333 | 15365493 | 322204 | 2363721 | 0 | 283896 | 2100201 | 0 | 0 | 0 | 168281 | ||||
| 21.3548% | 18.5993% | 2.6406% | 43.3984% | 0% | 1.0333% | 8.6108% | 0% | 0% | 0% | 4.3628% | 3.352% | 54.576% | 0.7509% | 28.8856% | 0% | 3.4772% | 8.824% | 0% | 0% | 0% | 0.1343% | 3.7167% | 71.8043% | 1.5057% | 11.0459% | 0% | 1.3267% | 9.8144% | 0% | 0% | 0% | 0.7864% | ||||
| Helminth | 964 | 48232765 | 65959019 | 26.56 | 1330 | 8000 | ||||||||||||||||||||||||||||||
| 210 | 177 | 28 | 403 | 3[5] | 18 | 83 | 0 | 0 | 0 | 42 | 938366 | 5930366 | 166655 | 1970234 | 37823713 | 523436 | 869445 | 0 | 0 | 0 | 10550 | 991185 | 20222381 | 1064796 | 2145611 | 37822890 | 519688 | 3024187 | 0 | 0 | 0 | 168281 | ||||
| 21.7842% | 18.361% | 2.9046% | 41.805% | 0.3112% | 1.8672% | 8.61% | 0% | 0% | 0% | 4.3568% | 1.9455% | 12.2953% | 0.3455% | 4.0848% | 78.4191% | 1.0852% | 1.8026% | 0% | 0% | 0% | 0.0219% | 1.5027% | 30.659% | 1.6143% | 3.2529% | 57.343% | 0.7879% | 4.5849% | 0% | 0% | 0% | 0.2551% | ||||
| Archon Shard | 849 | 46199552 | 59140503 | 23.98 | 562 | 772 | ||||||||||||||||||||||||||||||
| 176 | 147 | 22 | 388 | 2[5] | 8 | 80 | 0 | 0 | 0 | 26 | 274771 | 4333379 | 60966 | 2177673 | 37820679 | 270732 | 1257096 | 0 | 0 | 0 | 4256 | 833390 | 14765662 | 319354 | 2148883 | 37820544 | 268156 | 2815083 | 0 | 0 | 0 | 169431 | ||||
| 20.7303% | 17.3145% | 2.5913% | 45.7008% | 0.2356% | 0.9423% | 9.4229% | 0% | 0% | 0% | 3.0624% | 0.5947% | 9.3797% | 0.132% | 4.7136% | 81.8637% | 0.586% | 2.721% | 0% | 0% | 0% | 0.0092% | 1.4092% | 24.9671% | 0.54% | 3.6335% | 63.9503% | 0.4534% | 4.76% | 0% | 0% | 0% | 0.2865% | ||||
| Kuva Lich/Progenitor | 673 | 20381885 | 28567417 | 17.20 | 496 | 5910 | ||||||||||||||||||||||||||||||
| 126 | 125 | 22 | 308 | 0 | 8 | 65 | 0 | 0 | 0 | 19 | 236065 | 3105774 | 59596 | 16412211 | 0 | 270783 | 287157 | 0 | 0 | 0 | 10299 | 724876 | 10193498 | 310052 | 16391134 | 0 | 268156 | 678150 | 0 | 0 | 0 | 1551 | ||||
| 18.7221% | 18.5736% | 3.2689% | 45.7652% | 0% | 1.1887% | 9.6582% | 0% | 0% | 0% | 2.8232% | 1.1582% | 15.2379% | 0.2924% | 80.5235% | 0% | 1.3285% | 1.4089% | 0% | 0% | 0% | 0.0505% | 2.5374% | 35.6823% | 1.0853% | 57.377% | 0% | 0.9387% | 2.3739% | 0% | 0% | 0% | 0.0054% | ||||
| Revenant | 713 | 6415061 | 14481003 | 26.98 | 615 | 4100 | ||||||||||||||||||||||||||||||
| 120 | 107 | 22 | 380 | 1[6] | 10 | 59 | 0 | 0 | 0 | 14 | 297822 | 2698449 | 61590 | 2579466 | 97285 | 331534 | 346417 | 0 | 0 | 0 | 2498 | 1011000 | 9000898 | 323221 | 2519237 | 160073 | 328752 | 1136271 | 0 | 0 | 0 | 1551 | ||||
| 16.8303% | 15.007% | 3.0856% | 53.2959% | 0.1403% | 1.4025% | 8.2749% | 0% | 0% | 0% | 1.9635% | 4.6425% | 42.0643% | 0.9601% | 40.2095% | 1.5165% | 5.1681% | 5.4001% | 0% | 0% | 0% | 0.0389% | 6.9816% | 62.1566% | 2.232% | 17.3968% | 1.1054% | 2.2702% | 7.8466% | 0% | 0% | 0% | 0.0107% | ||||
| Mastery Rank | 1227 | 86155411 | 104624525 | 70.00 | 837 | 1000 | ||||||||||||||||||||||||||||||
| 216 | 200 | 25 | 601 | 4[5] | 9 | 136 | 0 | 0 | 0 | 36 | 380658 | 5990290 | 62353 | 2375887 | 75641358 | 315784 | 1386213 | 0 | 0 | 0 | 2868 | 1024029 | 19893017 | 323758 | 2279019 | 75641088 | 313012 | 4982161 | 0 | 0 | 0 | 168441 | ||||
| 17.6039% | 16.2999% | 2.0375% | 48.9813% | 0.326% | 0.7335% | 11.0839% | 0% | 0% | 0% | 2.934% | 0.4418% | 6.9529% | 0.0724% | 2.7577% | 87.7964% | 0.3665% | 1.609% | 0% | 0% | 0% | 0.0033% | 0.9788% | 19.0137% | 0.3094% | 2.1783% | 72.2977% | 0.2992% | 4.7619% | 0% | 0% | 0% | 0.161% | ||||
| Kuva Lich | 855 | 47157218 | 61806337 | 32.27 | 671 | 5510 | ||||||||||||||||||||||||||||||
| 187 | 153 | 23 | 371 | 2[5] | 11 | 78 | 0 | 0 | 0 | 30 | 296586 | 4887322 | 112084 | 2915195 | 37820679 | 346692 | 776120 | 0 | 0 | 0 | 2540 | 879429 | 16743601 | 693451 | 2895964 | 37820544 | 343908 | 2261079 | 0 | 0 | 0 | 168361 | ||||
| 21.8713% | 17.8947% | 2.6901% | 43.3918% | 0.2339% | 1.2865% | 9.1228% | 0% | 0% | 0% | 3.5088% | 0.6289% | 10.3639% | 0.2377% | 6.1819% | 80.2013% | 0.7352% | 1.6458% | 0% | 0% | 0% | 0.0054% | 1.4229% | 27.0904% | 1.122% | 4.6855% | 61.192% | 0.5564% | 3.6583% | 0% | 0% | 0% | 0.2724% | ||||
| Average ± Standard Deviation | 858.6666667 ± 192.0677 | 34899823.89 ± 27071957 | 47566621.22 ± 30470035 | 31.765 ± 16.192658 | 682.2222222 ± 266.82474 | 3678.777778 ± 2546.2688 | ||||||||||||||||||||||||||||||
| 168 | 148.2222222 | 23.22222222 | 399.6666667 | 1.555555556 | 9.444444444 | 80.22222222 | 0 | 0 | 0 | 28.33333333 | 353082.6667 | 4319619.333 | 79904.11111 | 3867637.111 | 25225118.78 | 304562.3333 | 743574.7778 | 0 | 0 | 0 | 6324.777778 | 858465.2222 | 14519328.56 | 457681.2222 | 3851789.667 | 25231742.56 | 301896 | 2232854.444 | 0 | 0 | 0 | 112863.5556 | ||||
| 19.5652% | 17.2619% | 2.7045% | 46.545% | 0.1812% | 1.0999% | 9.3427% | 0% | 0% | 0% | 3.2997% | 1.0117% | 12.3772% | 0.229% | 11.0821% | 72.2786% | 0.8727% | 2.1306% | 0% | 0% | 0% | 0.0181% | 1.8048% | 30.5242% | 0.9622% | 8.0977% | 53.0451% | 0.6347% | 4.6942% | 0% | 0% | 0% | 0.2373% | ||||
JS Script To Calculate Network Usage[]
Modified from https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API to output in CSV format. These should be ran from your browser's development console and will save a CSV output to your machine.
// Saves a file to local machine
var saveDataToFile = (function() {
// Creating a temporary DOM element so we can 'click' on an element to download the file.
// For obvious security reasons, JS running in browser environment does not have direct access to read/writes
// to local storage. Browser is sandboxed to prevent arbitrary scripts causing damage to clients.
let a = document.createElement("a");
return function (data, fileName) {
let blob = new Blob([data], {type: "octet/stream"});
let url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}() );
function calculateLoadTimes() {
// Check performance support
if (performance === undefined) {
console.log("= Calculate Load Times: performance NOT supported");
return;
}
// Get a list of "resource" performance entries
const resources = performance.getEntriesByType("resource");
if (resources === undefined || resources.length <= 0) {
console.log("Calculate Load Times: there are NO `resource` performance records");
return;
}
console.log("= Calculate Load Times");
let result = ["Index, Resource name, Initiator type, Redirect time (ms), DNS lookup time (ms), TCP handshake time (ms), Secure connection time (ms), Response time (ms), Fetch until response end time (ms), Request start until response end time (ms), Start until response end time (ms)"];
resources.forEach((resource, i) => {
let resourceRow = [];
resourceRow.push(i);
resourceRow.push(`"${resource.name}"`);
resourceRow.push(`"${resource.initiatorType}"`);
// Redirect time
let t = resource.redirectEnd - resource.redirectStart;
resourceRow.push(t);
// DNS time
t = resource.domainLookupEnd - resource.domainLookupStart;
resourceRow.push(t);
// TCP handshake time
t = resource.connectEnd - resource.connectStart;
resourceRow.push(t);
// Secure connection time
t = (resource.secureConnectionStart > 0) ? (resource.connectEnd - resource.secureConnectionStart) : 0;
resourceRow.push(t);
// Response time
t = resource.responseEnd - resource.responseStart;
resourceRow.push(t);
// Fetch until response end
t = (resource.fetchStart > 0) ? (resource.responseEnd - resource.fetchStart) : 0;
resourceRow.push(t);
// Request start until response end
t = (resource.requestStart > 0) ? (resource.responseEnd - resource.requestStart) : 0;
resourceRow.push(t);
// Start until response end
t = (resource.startTime > 0) ? (resource.responseEnd - resource.startTime) : 0;
resourceRow.push(t);
result.push(resourceRow.join(", "));
});
result = result.join("\n")
console.log(result);
saveDataToFile(result, `${(new Date(Date.now())).toLocaleString()} calculateLoadTimes.csv`)
}
function displaySizeData(){
// Check for support of the PerformanceResourceTiming.*size properties and print their values
// if supported.
if (performance === undefined) {
console.log("= Display Size Data: performance NOT supported");
return;
}
const entries = performance.getEntriesByType("resource");
if (entries === undefined) {
console.log("= Display Size Data: performance.getEntriesByType() is NOT supported");
return;
}
// For each "resource", display its *Size property values
console.log("= Display Size Data");
let result = ["Index, Resource name, Initiator type, Decoded body size (octets), Encoded body size (octets), Transfer size (octets)"];
entries.forEach((entry, i) => {
let entryRow = [];
entryRow.push(i);
entryRow.push(`"${entry.name}"`);
entryRow.push(`"${entry.initiatorType}"`);
if ("decodedBodySize" in entry) {
entryRow.push(entry.decodedBodySize);
} else {
entryRow.push("null");
}
if ("encodedBodySize" in entry) {
entryRow.push(entry.encodedBodySize);
} else {
entryRow.push("null");
}
if ("transferSize" in entry) {
entryRow.push(entry.transferSize);
} else {
entryRow.push("null");
}
result.push(entryRow.join(", "));
});
result = result.join("\n")
console.log(result);
saveDataToFile(result, `${(new Date(Date.now())).toLocaleString()} displaySizeData.csv`)
}
Traffic[]
Site traffic fluctuates in response to, in order of magnitude of changes:
- Week of TennoCon (huge marketing campaign)
- WARFRAME mainline updates (new gameplay content)
- Prime Access release (new Prime Warframe and weapons)
- Workweek and weekend and holidays/vacations
In 2022, would say the range of daily visitors is 150,000 to 400,000.
For reference, the (English) Minecraft Fandom wiki sees an average of 17 million visitors a month.[7]
Page Views[]
| Start Date | End Date | Total Page Views |
|---|---|---|
| 8 January 2023 (UTC) | 6 February 2023 (UTC) | ~9.73 million |
| 11 February 2023 (UTC) | 12 March 2023 (UTC) | ~9.13 million |
| 26 February 2023 (UTC) | 27 March 2023 (UTC) | ~9.36 million |
| 24 April 2023 (UTC) | 23 May 2023 (UTC) | ~12.68 million |
Device Type[]
As of 01:19, 30 October 2022 (UTC), over past 30-day period:
- ~1.7 million desktop sessions (~53%)
- ~1.5 million mobile sessions (~47%)
- ~28 thousand tablet sessions (~1%)
| Start Date | End Date | Total Sessions | Desktop Sessions | Mobile Sessions | Tablet Sessions |
|---|---|---|---|---|---|
| 1 October 2022 (UTC) | 30 October 2022 (UTC) | ~3.2 million | ~1.7 million (~53%) | ~1.5 million (~47%) | ~28 thousand (~1%) |
| 8 January 2023 (UTC) | 6 February 2023 (UTC) | ~3.8 million | ~2.0 million (~51%) | ~1.8 million (~48%) | ~31.2 thousand (~1%) |
| 11 February 2023 (UTC) | 12 March 2023 (UTC) | ~3.5 million | ~1.9 million (~53%) | ~1.6 million (~46%) | ~27.9 thousand (~1%) |
| 26 February 2023 (UTC) | 27 March 2023 (UTC) | ~3.61 million | ~1.94 million (~54%) | ~1.64 million (~46%) | ~28.5 thousand (~1%) |
| 24 April 2023 (UTC) | 23 May 2023 (UTC) | ~4.87 million | ~2.70 million (~56%) | ~2.12 million (~44%) | ~37.3 thousand (~1%) |
Browser Usage[]
As of 01:19, 30 October 2022 (UTC), over past 30-day period:
- ~2 million Google Chrome sessions (~69%)
- ~530 thousand Safari sessions (~18%)
- ~200 thousand Firefox sessions (~6%)
- ~200 thousand "Other" browser sessions (~7%)
| Start Date | End Date | Total Sessions | Google Chrome Sessions | Safari Sessions | Firefox Sessions | "Other" Sessions |
|---|---|---|---|---|---|---|
| 1 October 2022 (UTC) | 30 October 2022 (UTC) | ~2.9 million | ~2 million (~69%) | ~530 thousand (~18%) | ~200 thousand (~6%) | ~200 thousand (~7%) |
| 9 January 2023 (UTC) | 6 February 2023 (UTC) | ~3.46 million | ~2.32 million (~67%) | ~660 thousand (~19%) | ~195 thousand (~6%) | ~280 thousand (~8%) |
| 11 February 2023 (UTC) | 12 March 2023 (UTC) | ~3.18 million | ~2.17 million (~68%) | ~570 thousand (~18%) | ~190 thousand (~6%) | ~258 thousand (~8%) |
| 26 February 2023 (UTC) | 27 March 2023 (UTC) | ~3.26 million | ~2.23 million (~68%) | ~575 thousand (~18%) | ~193 thousand (~6%) | ~261 thousand (~8%) |
| 24 April 2023 (UTC) | 23 May 2023 (UTC) | ~4.39 million | ~2.99 million (~68%) | ~749 thousand (~17%) | ~272 thousand (~6%) | ~378 thousand (~9%) |
Geolocation[]
As of 01:19, 30 October 2022 (UTC), over past 30-day period and listing major cities within these regions that have prominent data centers:
- United States of America ~4 million views (~47%)
- US West
- US Central
- US East
- United Kingdom ~450 thousand views (~5.29%)
- Canada ~380 thousand views (~4.47%)
- Germany ~360 thousand views (~4.24%)
- Australia ~300 thousand views (~3.53%)
- Brazil ~220 thousand views (~2.59%)
- Philippines ~160 thousand views (~1.88%)
- France ~150 thousand views (~1.76%)
- Italy ~140 thousand views (~1.65%)
- Poland ~140 thousand views (~1.65%)
- Rest of the world ~2.2 million (~25.94%)
- Thailand <140 thousand views
- Indonesia <140 thousand views
- Singapore <140 thousand views
- Malaysia <140 thousand views
- South Korea <140 thousand views
- Japan <140 thousand views
- China <140 thousand views
- Russia <140 thousand views
- Spain <140 thousand views
- Mexico <140 thousand views
- Chile <140 thousand views
- Turkey <140 thousand views
- And many others
Edit Count[]
Under normal circumstances, the max amount of main article edits in a single day would probably be 50-100. Following mainline updates, we would see up to 500-1000 edits a day over a 7-day period. When there is a bot running, expect 500+ additional edits on a particular date.
For comment activity (new comments, new replies, edited comments, and deleted comments)[8]:
- 30 October 2022, 82
- 29 October 2022, 108
- 28 October 2022, 98
- 27 October 2022, 66
- 26 October 2022, 74
- 25 October 2022, 88
- 24 October 2022, 73
- 23 October 2022, 82
- 22 October 2022, 51
- 21 October 2022, 68
- 20 October 2022, 78
- 19 October 2022, 68
- Daily average, 78
Thus, over a 30-day period, doing some napkin math:
- 1500-3000 edits to wiki article content if there are no major game updates; this can translate to number of database writes/reads
- Add 500-1000+ edits if you want to include media uploads, see Special:Log/upload for some reference on monthly uploads
- 4550-9100 edits if there is one major game update; this number is higher if heavy mainline update
- 2340 comments during a stable month, no major mainline; this number will probably double or 1.5x when game changing content is released
Hard numbers from Special:Analytics (2022-11-20 to 2022-12-19 UTC)
| Date | Edit Count | Notes |
|---|---|---|
| 2022-11-20 | 24 | |
| 2022-11-21 | 59 | |
| 2022-11-22 | 93 | |
| 2022-11-23 | 91 | |
| 2022-11-24 | 53 | |
| 2022-11-25 | 330 | User:ScientiaBot mass uploading of mod assets from Public Export |
| 2022-11-26 | 70 | |
| 2022-11-27 | 70 | |
| 2022-11-28 | 100 | |
| 2022-11-29 | 109 | |
| 2022-11-30 | 445 | Update 32.2 (2022-11-30) Lua's Prey mainline |
| 2022-12-01 | 561 | |
| 2022-12-02 | 270 | |
| 2022-12-03 | 298 | |
| 2022-12-04 | 361 | |
| 2022-12-05 | 141 | |
| 2022-12-06 | 643 | Luafication of Ability infoboxes via Module:Ability/infobox |
| 2022-12-07 | 383 | |
| 2022-12-08 | 238 | |
| 2022-12-09 | 56 | |
| 2022-12-10 | 49 | |
| 2022-12-11 | 109 | |
| 2022-12-12 | 37 | |
| 2022-12-13 | 1083 | User:ScientiaBot mass uploading of mod assets from Public Export |
| 2022-12-14 | 177 | Hotfix 32.2.5 (2022-12-14) |
| 2022-12-15 | 422 | |
| 2022-12-16 | 109 | |
| 2022-12-17 | 65 | |
| 2022-12-18 | 120 | |
| 2022-12-19 | 38 | |
| Total | 6604 | Average 220.1333 edits a day; remove 1083 outlier then average 190.3793 edits a day |
Data Egress[]
We can define an upper bound for data egress based on known approximates for webpage sizes and visitor count.
Assumptions:
- We assume that data egress from wiki editing user flow, commenting user flow, and API usage are negligible since the majority of users are simply readers who read the site as it is.
- No caching on user's end.
- Serving pure static webpages of wiki content.
Say we use #Article Network Usage's "Desktop blocking ads and third-party scripts" averages (7.53 megabytes transferred over network for a webpage) and 9.7 million page visits over a 30-day period (basically a month).
- 9,700,000 * 7.53 = 73,041,000 megabytes transferred over network over a 30-day period or 9,700,000 * 7.53 / 1,000 = 73,041 gigabytes or 9,700,000 * 7.53 / 1,000 / 1,000 = 73.041 terabytes.
- 9,700,000 * 7.53 / 30 = 2,434,700 megabytes transferred over network daily or 9,700,000 * 7.53 / 30 / 1,000 = 2,434.7 gigabytes or 9,700,000 * 7.53 / 30 / 1,000 / 1,000 = 2.4347 terabytes.
- 9,700,000 * 7.53 / 30 * 365 = 888,665,500 megabytes transferred over network in a year or 9,700,000 * 7.53 / 30 * 365 / 1,000 = 888,665.5 gigabytes or 9,700,000 * 7.53 / 30 * 365 / 1,000 / 1,000 = 888.6655 terabytes.
TL;DR
- ~2.43 TB daily data egress
- ~73 TB monthly data egress
- ~889 TB yearly data egress
Images Only[]
From #Breakdown By Asset Type, say an average of 3.867637 MB (3867637.111 bytes) of images are loaded per page visit (note that this value is derived from ads + article content so worst possible case), assuming no caching is done on user's end, and 9.7 million page visits over a 30-day period (basically a month).
- 9,700,000 * 3.867637 = 37,516,078.9 megabytes transferred over network over a 30-day period or 9,700,000 * 3.867637 / 1,000 = 37,516.0789 gigabytes or 9,700,000 * 3.867637 / 1,000 / 1,000 = 37.5161 terabytes.
- 9,700,000 * 3.867637 / 30 = 1,250,535.9633 megabytes transferred over network daily or 9,700,000 * 3.867637 / 30 / 1,000 = 1,250.536 gigabytes or 9,700,000 * 3.867637 / 30 / 1,000 / 1,000 = 1.2505 terabytes.
- 9,700,000 * 3.867637 / 30 * 365 = 456,445,626.6167 megabytes transferred over network in a year or 9,700,000 * 3.867637 / 30 * 365 / 1,000 = 456,445.6266 gigabytes or 9,700,000 * 3.867637 / 30 * 365 / 1,000 / 1,000 = 456.4456 terabytes.
TL;DR
- ~1.25 TB daily data egress
- ~38 TB monthly data egress
- ~456 TB yearly data egress
Volume Usage[]
Single VM instance volume usage for production use:
- Using Ubuntu as reference OS, Ubuntu Server Edition uses a minimum of 2.5 gigabytes[9]
- MediaWiki application requires ~100 megabytes[10][11]
- Requires PHP (~20 megabytes) and other PHP extensions as dependencies which add say ~20 megabytes
- 25 gigabyte volume should be more than enough with >10 GB of overhead and leeway
- Also gives room for adding development and monitoring tools
- Room for additional MediaWiki extensions
For wiki content:
- According to Special:MediaStatistics as of 00:25, 18 November 2022 (UTC):
| MIME type | Possible extensions | Number of files | Combined size |
|---|---|---|---|
| Videos | |||
| video/youtube | N/A | 4,833 (10.9%) | 123,291,754 bytes (117.58 MiB; 0.669%) |
| video/vimeo | N/A | 1 (0.00227%) | 12,564 bytes (12 KiB; 0.0000681%) |
| video/dailymotion | N/A | 2 (0.00453%) | 96,068 bytes (94 KiB; 0.000521%) |
| application/ogg | .ogx, .ogg, .ogm, .ogv, .oga, .spx, .opus | 4 (0.00906%) | 17,768,993 bytes (16.95 MiB; 0.0964%) |
| Video total | N/A | 4,840 (11%) | 141,169,379 bytes (134.63 MiB; 0.766%) |
| Office | |||
| application/vnd.oasis.opendocument.graphics | .odg | 1 (0.00227%) | 1,993,932 bytes (1.9 MiB; 0.0108%) |
| application/pdf | 3 (0.0068%) | 399,184 bytes (390 KiB; 0.00217%) | |
| Office total | N/A | 4 (0.00906%) | 2,393,116 bytes (2.28 MiB; 0.013%) |
| Rich media | |||
| application/ogg | .ogx, .ogg, .ogm, .ogv, .oga, .spx, .opus | 1 (0.00227%) | 10,823 bytes (11 KiB; 0.0000587%) |
| Drawings (vector images) | |||
| image/svg+xml | .svg | 188 (0.426%) | 2,653,287 bytes (2.53 MiB; 0.0144%) |
| Bitmap images | |||
| image/vnd.microsoft.icon | .ico | 1 (0.00227%) | 1,150 bytes (1 KiB; 0.00000624%) |
| image/png | .png, .apng | 22,065 (50%) | 10,302,730,202 bytes (9.6 GiB; 55.9%) |
| image/jpeg | .jpeg, .jpg, .jpe | 11,434 (25.9%) | 4,109,123,012 bytes (3.83 GiB; 22.3%) |
| image/gif | .gif | 929 (2.1%) | 2,540,460,709 bytes (2.37 GiB; 13.8%) |
| Image total | N/A | 34,429 (78%) | 16,952,315,073 bytes (15.79 GiB; 91.9%) |
| Audio | |||
| application/ogg | .ogx, .ogg, .ogm, .ogv, .oga, .spx, .opus | 4,684 (10.6%) | 1,338,931,170 bytes (1.25 GiB; 7.26%) |
| All media total | N/A | 44,146 (100%) | 18,437,472,848 bytes (17.17126 GiB; 100%) |
Cost[]
- Assume service uptime for 730 hours per month (365 days x 24 hours/day = 730.5 hours ≈ 730 hours, ignoring leap years)
- There is a nuance between Gigabyte (GB) and Gibibyte (GiB) which may not be detailed in vendors' articles (they may not be clear which one is being referred to or use them interchangeably)
- Generally speaking, when talking about RAM, manufacturers use the binary number system (base-2) like kibibytes (210 = 1,024 bytes) and gibibytes (230 = 1,073,741,824 bytes). For persistent storage like hard drives or SSDs, manufacturers use base-10 like kilobytes (103 = 1,000 bytes) and gigabytes (109 = 1,000,000,000 bytes).
- Though it is standard for "Gb" in Gbps to refer to Gigabits (109 bits transferred per second) when talking about data transfer over network
- Ideally don't want to mix-match different cloud providers since that complicates billing and requires extra work to make sure different vendors handshake properly (configurations, APIs, and the like)
- Though if it is cheaper to use a third-party/external service over a first-party offering while meeting the same performance/needs then it may be a worthwhile idea to look at these alternative solutions.
- Using United States dollar (USD or US$) for billing currency
- For recent conversion rates see https://www.xe.com/currencytables/?from=USD
Some general trends to note:
- Most vendors offer usage rates by hour (pay-per-use) and month (subscription-based); usually there is a discount if you commit to a long-term usage plan (typically 1+ year duration)
- Most vendors should have a service for generating a monthly invoice though they may not always be (fully) transparent, itemizing fees and service usage
- Sometimes they provide an API that has a billing endpoint so customers can build their own invoices
- Base rates can change on a whim (have seen hourly rates that change by US$0.01 within a week) presumably based on market demands and supply (e.g. if the cost of electricity goes up in one region, expect cloud service rates to also increase)
- Most vendors should have a service for generating a monthly invoice though they may not always be (fully) transparent, itemizing fees and service usage
- Usage-based charges:
- vCPU hours: Charge for every hour that virtual CPU instance is active/reserved (not necessarily 100% usage)
- Storage: Charge for every gigabyte/gibibyte that is being used per hour
- Bandwidth: Data ingress is usually free while data egress to the internet and cloud services provided by the same vendor will charge by gigabyte/gibibyte transferred (size of response, includes header and body)
- Request usage: Requests are recorded individually and presented in units of 10,000
- Cloud services are designed to scale up and down in response to demand; you will be billed for any changes to running services
- Good cloud providers should be transparent with their (complicated) pricing. There should usually be clear documentation on the topic or a price calculator to estimate costs.
- Most of the time "free"-tier plans or trial periods still require a valid payment method on sign-up (e.g. credit card, debit card, PayPal)
- Larger, more established cloud providers have a sophisticated support plan system that range from basic customer support (e.g. email or call center) to on-demand, real-time technical help for mission critical issues
- Over a long-term period, vendor lock-in from proprietary cloud services may prevent/hinder pivoting efforts to another cloud provider (or even self-hosting). It may be convenient for everything to just work out-of-the-box when using the technology stack of a single vendor, but there is a cost (as in time and labor) associated in migrating or decoupling infrastructure to meet future business objectives when current solutions are not adequate.
Vendors[]
Cloud Computing[]
| Vendor | Availability Zones[12] | Support Plans | Free Tier/Trial?[13] | References |
|---|---|---|---|---|
| Alibaba Cloud |
|
|
|
|
| Amazon Web Services (AWS) |
|
|
|
|
| DigitalOcean |
|
|
Yes, US$200 credit for new accounts for first 60 days (requires credit card) | |
| Google Cloud Platform |
|
|
Yes, US$300 credit for new accounts for first 90 days + free tier (requires credit card) | |
| IBM Cloud |
|
|
Yes, US$200 credit for new accounts for first 30 days + free tier (requires credit card) | |
| Linode (acquired by Akamai) |
|
|
Yes, US$100 credit for new accounts for first 60 days (no credit card required) | |
| Microsoft Azure |
|
|
Yes, US$200 credit for new accounts for first 30 days + popular services free for 12 months + always free tier (credit card required) |
|
| Oracle Cloud |
|
|
Yes, US$300 credit for new accounts for first 30 days + always free tier (credit card required) |
|
| OVHcloud |
|
|
|
|
| Tencent Cloud |
|
|
Yes, US$50 for new non-enterprise accounts for first 30 days + always free tier (requires credit card) |
|
CDN[]
| Vendor | Product | Locations | Support Plans | Free Tier/Trial? | References |
|---|---|---|---|---|---|
| Akamai | Cloud Wrapper |
|
|
No | |
| Bunny | Bunny CDN |
|
|
Yes, 14-day free trial | |
| Cloudflare | Cloudflare CDN |
|
|
Yes | |
| Fastly | Fastly CDN |
|
|
|
|
| Scaleflex | Cloudimage (static image CDN) |
|
|
Yes |
Compute[]
Trying to get as close as possible to these comparable VM specs for a baseline price with available vendor configurations, not necessarily will use these specs for development or production:
- Linux-based OS
- 2 cores
- 64-bit CPU architecture (not really concerned with which one: x84, AMD64, or ARM64)
- 8 GiB RAM
- 100 GB SSD
Would likely require at least two separate compute instances, one for handling web requests (web server) and the other for running MediaWiki (application server). Database would exist in its own instance(s) under a different product name.
Would also want to look more into burstable instances because wiki activity has an irregular pattern because of the nature of WARFRAME as a live-service game (peaks when a new mainline update is released and troughs when there is a "content drought"; even higher peaks during the annual event TennoCon). Nowadays, WARFRAME goes through a quarterly update cycle, but it used to push more frequent updates as often as monthly.
| Vendor | Product (Instance) | Features | Virtual Cores | Memory | Storage | Public Network Speed | Private Network Speed | Starting Price[14] | Free Tier/Trial? | References |
|---|---|---|---|---|---|---|---|---|---|---|
| Alibaba Cloud | Elastic Compute Service (ecs.g6.large) |
|
2 | 8 GiB | 100 GiB "Enhanced" SSD | US$65.59 / month | Yes | |||
| Amazon Web Services (AWS) | Amazon EC2 (m5.large) | 2 | 8 GiB | 100 GiB SSD (gp2) through EBS[15] | 25 Gbps max (network) | 4750 Gbps (EBS) |
|
Yes, 750 hours/month for 12 months | ||
| DigitalOcean | Droplets (Basic Droplets) | "Regular" CPU | 2 | 4 GiB | 80 GiB | US$24 / month | Yes | |||
| Google Cloud Platform | Compute Engine (e2-standard-2) | 2 | 8 GiB | 100 GiB | 4 Gbps max |
|
US$300 credit + free tier | |||
| IBM Cloud | Virtual server for VPC (bx2-2x8) | 2 | 8 GiB | 100 GB | 3 Gbps max | 1 Gbps | US$71.27 / month | |||
| Linode | Shared CPU (Linode 4 GB) |
|
2 | 4 GB | 80 GB SSD | 40 Gbps in / 4 Gbps out | US$20 / month @ US$$0.03 / hour | US$100 credit for first 60 days | ||
| Microsoft Azure | Virtual Machines (D2ps v5) |
|
2 | 8 GiB | 128 GiB "Premium" SSD (P10) |
|
Yes, 12 months free | |||
| Oracle Cloud | Compute Virtual Machines (AMD VM.Standard.E4.Flex) |
|
2 ("1 OCPU") | 8 GB | 200 GB (free tier discount) | US$27.53 / month @ 1 instance x 744 hrs/month | ||||
| OVHcloud | Public Cloud (b2-7 in Hillsboro, Oregon) |
|
2 | 7 GB | 50 GB SSD | 250 Mbps guaranteed | 300 Mbps max |
|
Yes, but have to contact sales | |
| Tencent Cloud | Cloud Virtual Machine (Standard S3) | 2 | 8 GB | 100 GB SSD | 100 Mbps max outbound / 5 Gbps max inbound |
|
|
External Links[]
- https://www.oracle.com/cloud/service-comparison/
- https://learn.microsoft.com/en-us/azure/architecture/aws-professional/compute
Databases[]
- Preferably want MariaDB support over MySQL since the former is philosophically more inline with FOSS principles
- PostgresDB can also work, but has second-class support. Wikimedia Foundation uses MariaDB and MySQL for their websites so both have first-party support within MediaWiki.
| Vendor | Product (Instance) | Features | Virtual Cores | Memory | Storage | Public Network Speed | Private Network Speed | Starting Price | Free Tier/Trial? | References | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Alibaba Cloud | Yes | |||||||||||||||||||||||||||||||||||||||
| Amazon Web Services (AWS) | Amazon Relational Database Service (RDS) (db.m5.xlarge in US West Los Angeles)
|
|
4 (2 physical) | 16 GiB | EBS-only | Up to 10 Gbps | Up to 4,750 Mbps dedicated EBS bandwidth
|
Yes, for each calendar month under AWS Free Tier:
|
||||||||||||||||||||||||||||||||
| DigitalOcean | ||||||||||||||||||||||||||||||||||||||||
| Google Cloud Platform | ||||||||||||||||||||||||||||||||||||||||
| IBM Cloud | ||||||||||||||||||||||||||||||||||||||||
| Linode | US$100 credit for first 60 days | |||||||||||||||||||||||||||||||||||||||
| Microsoft Azure | Yes, 12 months free | |||||||||||||||||||||||||||||||||||||||
| Oracle Cloud | ||||||||||||||||||||||||||||||||||||||||
| OVHcloud | Yes, but have to contact sales | |||||||||||||||||||||||||||||||||||||||
| Tencent Cloud | ||||||||||||||||||||||||||||||||||||||||
Storage (for static hosting)[]
Cloud Storage[]
| Vendor | Product (Region) | Features | Pricing | Free Tier/Trial? | References | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Alibaba Cloud | Object Storage Service (OSS) (US Silicon Valley) |
"OSS egress to Alibaba Cloud CDN is free when both requests to CDN and the OSS bucket are in non-mainland China regions. In other cases, the price is as below."
See https://www.alibabacloud.com/product/oss/pricing for API Operation Calling Fees |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Amazon Web Services (AWS) | Amazon S3 (US West (Northern California)) |
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DigitalOcean | Spaces (SFO3, San Fransisco 3) |
|
Spaces subscriptions include 1,024 GiB of outbound data transfer (from Spaces to the internet), which is shared between all Spaces. Additional outbound transfer is US$0.01 per GiB. Outbound data transfer is free in the following cases:
Inbound bandwidth to Spaces never counts against your Spaces transfer allowance. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Google Cloud Platform | Cloud Storage (Oregon (us-west1))
|
Pricing based on storage class, network egress, and network usage
Data processing costs for Class A[17] and Class B[18] operations (free operations are free)
Retrieval fees are applied when performing read, copy, move, or rewrite operations on object data or metadata
For network egress prices see https://cloud.google.com/storage/pricing#network-buckets for egress within Google Cloud and https://cloud.google.com/storage/pricing#network-egress for egress outside of Google Cloud |
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| IBM Cloud | IBM Cloud Object Storage (us-south, no US West Coast)
|
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Linode | Object Storage (Atlanta, Georgia (us-southeast-1); Object Storage in Fremont, California "coming soon")
|
Technical specifications:
Usage specifications:
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Microsoft Azure | Blob Storage (West US 2) |
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Oracle Cloud | Oracle Cloud Infrastructure (OCI) Object Storage |
Storage limits:
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OVHcloud | Object Storage (Beauharnois, Quebec, Canada; no US regions w/ object storage) |
|
"Object Storage is charged according to the storage space used, with a granularity of 1GB. For optimal readability, the price is displayed per GB/month — but since there are 720 hours in an average month, the billing granularity is per GB/hour." |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tencent Cloud | Cloud Object Storage |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wasabi | Wasabi Object Storage (North America) |
|
*subject to Wasabi's free egress and API request policies
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Decentralized Storage[]
| Vendor | Product (Region) | Features | Pricing | Free Tier/Trial? | References | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Filebase | Managed Object Storage |
|
|
Yes, 5GB free tier w/ 1000 pinned files for IFPS |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Storj | Decentralized Cloud Storage (Storj DCS) |
|
|
|
CDNs[]
Serverless (Lambda functions or PaaS)[]
Can be associated with Function as a Service (FaaS) or Platform as a Service (PaaS). Use cases range from one-off tasks, scheduled tasks to full stack applications.
| Vendor | Region Availability | Features | Price | Free Tier/Trial?[23] | References |
|---|---|---|---|---|---|
| Cloudflare Workers | Yes | ||||
| Cyclic | Yes | ||||
| Fly | Yes | ||||
| Heroku | No |
| |||
| Koyeb | Yes |
| |||
| Northflank | Yes | ||||
| Qoddi | Yes |
| |||
| Railway | Yes | ||||
| Render | Yes |
Website Hosting[]
"Higher" level than cloud computing services since hosting details are abstracted from the end-user and less control over low-level stuff like hardware, resource allocation, database access, etc. Blurs the line between operating your own cloud server/service vs. working on a platform-as-a-service. May be limited in developing + deploying full-stack web apps, but is a good alternative for static websites (typically used for blogs).
| Vendor | Product | Features | Price | Free Tier/Trial?[24] | References |
|---|---|---|---|---|---|
| Bluehost | Shared Hosting "Choice Plus" tier |
|
"Choice Plus" tier
|
No | |
| Wordpress.com | "Business" tier |
|
"Business" tier
|
Yes |
Labor[]
Cloud Engineer[]
The equivalent job title(s) for managing wiki hosting would probably be "Cloud Engineer". Bare minimum requirements would probably be two engineers for 24/7 monitoring and maintenance.
| Source | Average/Median Yearly Salary[25] | Average/Median Monthly Salary |
|---|---|---|
| https://www.indeed.com/career/cloud-engineer/salaries as of 2022-11-05 | US$122,058.00 | US$10,171.50 |
| https://www.salary.com/research/salary/listing/cloud-engineer-salary | US$130,475.00 | US$10,872.92 |
| https://www.glassdoor.com/Salaries/cloud-engineer-salary-SRCH_KO0,14.htm (use Incognito mode) as of 2021-12-13 | US$90,327.00 | US$7,527.25 |
| https://www.payscale.com/research/US/Job=Cloud_Engineer/Salary as of 2022-11-01 | US$91,409.00 | US$7,617.41 |
| https://www.ziprecruiter.com/Salaries/Cloud-Engineer-Salary as of 2022-11-02 | US$127,554.00 | US$10,629.50 |
| https://www.monster.com/salary/q-cloud-architect-salary | US$136,358.00 | US$11,363.16 |
| https://www.talent.com/salary?job=cloud+engineer | US$127,579.00 | US$10,631.58 |
| Average | US$117,965.71 | US$9,830.47 |
More generic, starting job title:
| Source | Average/Median Yearly Salary[26] | Average/Median Monthly Salary |
|---|---|---|
| https://www.indeed.com/career/software-engineer/salaries | US$87,907 | US$7,325.58 |
| https://www.salary.com/research/salary/benchmark/software-engineer-i-salary as of 2022-10-27 | US$74,777 | US$6,231.42 |
| https://www.glassdoor.com/Salaries/software-engineer-salary-SRCH_KO0,17.htm (use Incognito mode) as of 2021-12-13 | US$84,264 | US$7,022.00 |
| https://www.payscale.com/research/US/Job=Junior_Software_Engineer/Salary as of 2022-10-18 | US$64,102 | US$5,341.83 |
| https://www.ziprecruiter.com/Salaries/Software-Engineer-I-Salary | US$81,664 | US$6,805.33 |
| https://www.monster.com/salary/q-software-developer-engineer-salary | US$102,219 | US$8,518.25 |
| https://www.talent.com/salary?job=entry+level+software+engineer | US$76,331 | US$6,360.92 |
| Average | US$81,609.14 | US$6,800.76 |
- See https://www.bls.gov/ooh/computer-and-information-technology/computer-programmers.htm for statistics from the U.S. Bureau of Labor Statistics
System Administrator[]
Alternatively, sysadmin could be another title for this position.
| Source | Average/Median Yearly Salary[27] | Average/Median Monthly Salary |
|---|---|---|
| https://www.indeed.com/career/systems-administrator/salaries as of 2023-02-05 | US$78,671 | US$6,555.92 |
| https://www.glassdoor.com/Salaries/systems-administrator-i-salary-SRCH_KO0,23.htm as of 2022-09-15 | US$65,098 | US$5,424.83 |
| https://www.salary.com/research/salary/benchmark/systems-administrator-i-salary as of 2023-01-26 | US$69,207 | US$5,767.25 |
| https://www.payscale.com/research/US/Job=Systems_Administrator/Salary as of 2023-01-17 | US$65,032 | US$5,419.33 |
| https://www.ziprecruiter.com/Salaries/What-Is-the-Average-Systems-Administrator-Salary-by-State as of 2023-02-07 | US$74,687 | US$6,223.92 |
| https://www.zippia.com/systems-administrator-jobs/salary/# as of 2023-02-06 (using entry level salary) | US$59,000 | US$4,916.66 |
| Average | US$68,615.83 | US$5,717.99 |
- See https://www.bls.gov/ooh/Computer-and-Information-Technology/Network-and-computer-systems-administrators.htm for statistics from the U.S. Bureau of Labor Statistics
Living Wage[]
USA is pretty comparable for determining upper bound of global cost of living so you can use their numbers to determine an average living wage that is globally applicable (i.e. regardless of where you live, you can survive with this income, outside of outliers like Hong Kong). As of 2022, Hawaii is the most expensive state to live in on average, requiring a minimum of US$45,739.20 yearly full-time salary (US$3,811.60 monthly) to meet average cost of living for a single adult with no dependents.[28]
This salary is comparable to labor positions like Content Moderator or Social Media Manager which may be relevant to wiki development.
Case Studies[]
Weird Gloop Ltd. (Runescape wikis before hosting Minecraft wiki)[]
Source: https://meta.weirdgloop.org/w/Forum:Mid-2023_business_update
As of August 2023 (note that all dollar amounts are approximates):
- Owns Weird Gloop USA, Inc.
- Income:
- Say average US$35,000 per month from advertisement revenue (using Playwire)[29]
- US$1,900 per month from Patreon
- Plus negligible extra cash from Jagex who is covering some infrastructure costs
- = US$36,900 per month ≈ US$37,000 per month income
- Expenditures:
- 2 full-time US employees ("system administrators") each around US$6,000 a month (US$72,000 yearly salary)
- 6k figure includes taxes, insurance, pension
- US$1,800 per month on Google Cloud infrastructure
- US$200 per month on Cloudflare CDN and secondary DigitalOcean webservers
- US$2,000 per year on legal expenses
- Say US$166.67 per month
- US$4,000 per year on accounting and payroll services
- Say US$333.33 per month
- Plus US$20,000 to US$30,000 per year for community IRL events, team-building, or other projects
- Say US$2083.33 per month (25k/12)
- = US$16,583.33 ≈ US$17,000 per month expenditure
- 2 full-time US employees ("system administrators") each around US$6,000 a month (US$72,000 yearly salary)
- Savings:
- US$20,000 per month
External Links[]
- https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API
- https://medium.com/kono-engineering/measure-network-performance-by-resource-timing-api-68652c7897b8
- https://blog.logrocket.com/how-to-practically-use-performance-api-to-measure-performance/
- https://meta.miraheze.org/wiki/Tech:Server_usage - Miraheze wiki farm's infrastructure as reference for comparable hardware specs
- https://runescape.wiki/w/Forum:Funding_the_wikis - RuneScape wikis' discussion on introducing ads to pay sysadmins
- uBlockOrigin as a case study for hosting a CDN that has ~100,000 GiB of egress in ~700,000,000 requests: costs US$6,000 per month (https://github.com/uBlockOrigin/uBlock-issues/discussions/2958)
- ↑ Bytes transferred over network; smaller the number the better, less bandwidth used
- ↑ Total number of bytes of data that make up webpage, independent of network; typically smaller the number the better, less client-heavy CPU load to decompress/process resource sent over network
- ↑ Bytes transferred over network; smaller the number the better, less bandwidth used
- ↑ Total number of bytes of data that make up webpage, independent of network; typically smaller the number the better, less client-heavy CPU load to decompress/process resource sent over network
- ↑ 5.0 5.1 5.2 5.3 5.4 Large media file is a 15-second TurboTax ad in .mp4 format. 2nd media request was a redirect to same ad.
- ↑ 29-second local government ad on recycling in .mp4 format
- ↑ Lee, Alexander (2023, April 6). Why Fandom is investing in live event programming for its DreamHack partnership. Digiday. Accessed 2023-04-06. Archived from the original on 2023-04-06. "'We have a lot of evergreen wikis for gaming, because they're so large and have such massive fan bases,' said Fandom director of sales research and insights Alexandra Saraniti, who told Digiday that an average of 17 million Minecraft fans read Fandom content every month.".
- ↑ https://warframe.fandom.com/wiki/Special:SocialActivity
- ↑ https://ubuntu.com/server/docs/installation
- ↑ https://www.mediawiki.org/wiki/Manual:Installation_requirements
- ↑ https://www.mediawiki.org/wiki/Manual:Reduce_size_of_the_installation
- ↑ Products offered may differ per availability zone
- ↑ Most vendors require signing up with a valid payment method before being eligible for free trial/services, credit card is most common but may extend to PayPal or other payment processing services
- ↑ Most vendors have a flexible pay-per-usage model that can scale up for cloud bursting so actual monthly/hourly rate may vary depending on use case and actual traffic. Base rates may also change without notice so these values may be outdated
- ↑ Amazon Elastic Block Store
- ↑ https://aws.amazon.com/s3/pricing/?nc=sn&loc=4
- ↑ (Expensive) Data manipulation operations like inserts, updates
- ↑ Data queries like gets
- ↑ https://azure.microsoft.com/en-us/pricing/details/storage/blobs/#pricing
- ↑ https://docs.openstack.org/swift/latest/index.html
- ↑ If want Amazon S3 support may need to use Swift s3api middleware as per https://support.us.ovhcloud.com/hc/en-us/articles/4408821185043-Getting-Started-with-the-Swift-S3-API
- ↑ https://docs.storj.io/dcs/billing-payment-and-accounts-1/pricing/billing-and-payment as of 2022-08-15
- ↑ Most vendors require signing up with a valid payment method before being eligible for free trial/services, credit card is most common but may extend to PayPal or other payment processing services
- ↑ Most vendors require signing up with a valid payment method before being eligible for free trial/services, credit card is most common but may extend to PayPal or other payment processing services
- ↑ Base pay
- ↑ Base pay
- ↑ Base pay
- ↑ https://livingwage.mit.edu/states/15
- ↑ "The nature of ad agencies is that they often pay out to publishers in "NET D" terms, where the revenue recognized for a specific month isn't paid out for some number of days afterwards. In our case, we have "NET 60" terms with Playwire, which means that ad revenue from (say) the month of July won't be paid out until about 60 days after the end of the invoice period. [...] This kinda sucks for cash flow, since it means we're always 2-3 months behind, and our bills still come due at normal times. But Jagex did something pretty neat, which is that they pre-paid our invoice for the entire year, which (besides just generally being less paperwork for them and us) also gave us a lot more cash-flow flexibility for the year as we slowly build up a war chest from the ad revenue." - Cook

