I’ve been looking at Amazon’s S3 service recently. S3 is a great deal for storage, but I wondered how cost-effective it is at serving content. After a little computation, the answer seems to be: “It’s not that great”.
S3 is a tremendously cheap place to store things on-line, especially as compared to storing data with a hosting provider. S3 offers two basic advantages. First, its costs are truly incremental, since storage is metered at the GB-month, and charges are only levied for storage actually used. Second, the incremental cost is low.
Traditional hosting providers sell storage capacity, not storage itself. Consider two reputable providers of slightly different services: Slicehost, which offers VPSes, and Hurricane Electric, which offers shared hosting. Both providers offer multiple plans; they are summarized below.
|Plan name||Storage capacity (GB)||Cost ($/mo)||$/GB-mo|
These costs are not directly comparable to those of S3, because storage and storage capacity are different goods. For the sake of simplicity, I will assume that storage capacity will be 50% utilized. Applying this assumption to the data above yields a range of storage costs (in $/GB-mo) from $2 to $10. This is vastly higher than S3’s $0.15 / GB-month.
S3 does not offer the same sort of dominant price advantage for bandwidth, but it does offer truly incremental pricing, which weighs in its favor. S3 also offers scale beyond the reach of hosting providers, which merits a comparison with the costs of a dedicated port.
The Slicehost and Hurricane Electric plans discussed above also include bandwidth capacity. They, together with a dedicated 100Mbps port plan from Staminus Communications, are summarized below.
|Plan name||Bandwidth capacity (GB/mo)||Cost ($/mo)||$/GB|
As with storage, a usage factor must be assumed to compare capacity prices with S3’s incremental usage pricing. Again assuming 50% utilization, the preceding data yield $/GB costs between 4 and 40 cents/GB.
S3’s bandwidth pricing is complicated by two factors: First, it is tiered, and second, S3 applies a surcharge of $0.01 per 10,000 GET requests. Assuming the average size of your objects is 25K (graphics, biggish JS files, and so on) then it will take 40,000 GET requests to download a GB, adding $0.04 to the real cost of serving a GB; this is non-trivial, given the costs discussed above. S3’s quoted and effective (including the estimated GET request surcharge) rates are summarized below.
|Tier start (GB)||Tier stop (GB)||$/GB (quoted)||$/GB (effective)|
It must be noted that S3’s pricing indicates that it is capable of formidable scale: It’s top pricing tier begins at a level of bandwidth usage that would saturate 5 100Mbps connections. Nevertheless, at any particular level of usage, S3’s pricing is actually pretty poor.
S3 offers great flexibility; it can supposedly scale (with predictable cost, and without necessitating a reshuffling of your infrastructure) from several GB to hundreds of TB a month. S3 offers high, but not extortionate, pricing that can be made to look more attractive based on the assumptions you make about the bandwidth utilization of other options and the impact of the GET request surcharge. S3 will save you a lot of money compared to other storage options, but it does not appear to be a huge win as a content delivery solution.