Ask HN: How would you store 10PB of data for your startup today?

307 points by philippb ↗ HN
I'm running a startup and we're storing north of 10PB of data and growing. We're currently on AWS and our contract is up for renewal. I'm exploring other storage solutions.

Min requirements of AWS S3 One Zone IA (https://aws.amazon.com/s3/storage-classes/?nc=sn&loc=3)

How would you store >10PB if you'd be in my shoes? Thought experiment can be with and without data transfer cost our of current S3 buckets. Please mention also what your experience is based on. Ideally you store large amounts of data yourself and speak of first hand experience.

Thank you for your support!! I will post a thread once we got to a decision on what we ended up doing.

Update: Should have mentioned earlier, data needs to be accessible at all time. It’s user generated data that is downloaded in the background to a mobile phone, so super low latency is not important, but less than 1000ms required.

The data is all images and videos, and no queries need to be performed on the data.

373 comments

[ 5.1 ms ] story [ 281 ms ] thread
It definitely depends on how you accumulate and the usage patterns. More clarity is needed there to make recommendations.

As an aside, you can often get nice credits for moving off of AWS to Azure or GCP. I recommend the later.

Is the storage of the data critical to the future growth of the business?
(comment deleted)
Agree with someone else's comment questioning how is the data ingested and used.

10PB seems like a lot to store in S3 buckets. I assume much of that data is not accessed frequently or would be used in a big data scenario. Maybe some other services like Glacier or RedShift (I think).

Compression is always a good alternative, which is especially effective when modification is infrequent.
If they are a good data storage company, the data is encrypted so they can't compress what they already have. Perhaps they could compress the new incoming data client side before encryption to save a few bits.
Backblaze B2, ingress and egress are free through Cloudflare, and it's S3 compatible. It's peanuts by comparison but I've been storing ~22TB on there for years and love it.

Wasabi and Glacier would be my 2nd choices.

>Backblaze B2, ingress and egress are free through cloudflare

AFAIK cloudflare ToS prohibits you from using it as a file hosting proxy. You might not run into issues if you're transferring a few gigabytes a month, but if you're transferring multiple terabytes it's just asking for trouble.

edit:

https://www.cloudflare.com/terms/ section 2.8 Limitation on Serving Non-HTML Content

You can definitely serve way more than a few GB per month through Cloudflare on the free plan. I serve tens of terabytes a month for free. If OP needs to serve hundreds of terabytes per month they may get an email asking to upgrade, but the backblaze/Cloudflare setup would probably still be the cheapest. BunnyCDN is great too.
OTOH I've been told (by CloudFlare support, in contact with their engineers) that for their "for hosting game levels and other content" use case[1], any of their ordinary plans should be fine.

I'm not... super confident in that answer, because despite that being a use case they promote on the site the terms seem a bit murkier, and the page on that use-case doesn't say much about which plan(s) they expect you to use (I'd have expected an "enterprise" plan for serving hundreds of TB of transfer of game-assets per month, but they said no, any normal plan's fine, which... I was up front with them about what our usage would look like, and they held that line, but that seems too good to be true).

I haven't tested these claims yet.

[1] https://www.cloudflare.com/gaming/

I’ve looked at them. Would love to talk to you about your usage and experience with them.
Definitely not backblaze. If you get a signed URL it remains valid for 24hrs and can be used over and over. If they are going through a proxy, that would be different, but I imagine they don't want that as that doubles bandwidth cost. You definitely don't want your client to be able to upload all the data they can in your bucket.
I would consider moving to my own metal and using hadoop.
In my opinion, knowing what you're planning to do w/the data once it's stored is the important piece to giving you some idea of where to put it.
Agreed - though I feel like every data use comes after the fact. Original software engineers/developpers rarely have the foresight that the data scientists need the information for (at least imho).
To be fair, the data scientists rarely have the foresight to know what the data scientists need the information for. The only time I've seen a data scientist correctly include all the data they needed (but still be wrong) was when they answered "All of it. We need all of the data".
So true. Tough to know in advance which data will hold the secrets.
And you can't build a time machine to go and get it once you do know. Want X days of historical data for training/backtesting and we just implemented the metric this sprint? Good luck meeting your deadline!
Good point. I updated the post with some more infos
What is your loss tolerance? If a file is gone, who is annoyed: a free user, a $50/year customer, or a $10k/year customer?

Are these files WORM?

S3 + Glacier. For data you're accessing via Spark/Presto/Hive I believe Parquet is a good format. At your scale AWS should prob provide discounts, worth connecting w/ an account rep.

I'd recommend reaching out to some data eng in the various Bigs, they certainly have more clear numbers. Happy to make an intro if you need, feel free to dm me.

RAM?
Lol. A stick of 256gb RAM costs ~$3000. 1TB needs 4. 1PB needs 4000. 10PB needs 40,000. So this would be an upfront cost of $120M.

And this doesn't even cover how you'd fit 40,000 sticks of RAM together.

10PB of RAM being only $120M blows my mind, to be honest. I would have guessed that price was closer to the SSD cost for 10PB.
This made me curious about what the SSD cost would be. It looks like you can get a 2TB SSD for $200. So that's $100/TB = $1M for 10PB. Of course prices may be higher for enterprise SSDs and you may need redundancy. Then again, you could probably get a bulk discount at that scale.
Tape is still very cost effective. Load latency might be a few minutes though
Wasabi is a good option. They’re S3 compatible and don’t charge any egress or ingress fees. Been using them for a few years. Great speeds and customer support.
10PB with their pricing calculator comes out to over $60,000/mo. Feels like a lot.

edit: perhaps their RCS option would be cheaper if you know exactly how much data you need to store in advance.

To be fair, purchasing and hosting even the most basic mirrored RAID array of that scale comes to well over half a million for the disks alone. Then you need to manage them.
10x Supermicro SSG-6049P-E1CR60H servers (60 x 3,5" HDD in 4U enclosure) - $5k each

600x WESTERN DIGITAL Ultrastar DC HC550 18TB (10800PB in total) - $500 each

~$350k in hardware, up to 20kW energy consumption, should fit in two rack towers. You can host it for about $1.5k somewhere. All assuming no redundancy :)

Don’t forget labor. You need to find talent to manage your little data center. And deal with it when it shits the bed at 4:12am on Christmas morning.

So toss in at least one SRE type person. Say $200k/year.

Since you only have one, they are gonna be on call 24/7, so assume you’ll burn them out after a year and a half and need to hire a new one....

Since redundancy is a thing, double that $350k. And 10pb is what they have now so double it again for 20pb. Add in $10k per rack for switches, routers, wires, etc.

So probably you are looking at a million dollars of capital plus labor to actually execute on this. And don’t forget the lead time might be a month to get the hardware and a week or two to install it. Plus all the configuration management that needs to be built up. Not to mention monitoring. So maybe a quarter of work just to have it functional.

I haven’t even factored in opportunity costs. What could this business be doing that adds more value than building out a little data center?

I dunno. Maybe it does make sense to manage your own hardware. But it helps to calculate the entire cost of ownership, not just the cost of the servers.

Thanks for laying this out. Never rented rack space my self
> Since you only have one, they are gonna be on call 24/7, so assume you’ll burn them out after a year and a half and need to hire a new one....

This person's entire job is managing a few racks of hard drives? How often do you think they're actually going to get called in?

> Since redundancy is a thing, double that $350k.

True, but you can do redundancy for cheaper with parity or tape.

> And 10pb is what they have now so double it again for 20pb.

> So probably you are looking at a million dollars of capital plus labor to actually execute on this.

You can go a couple PB at a time if the upfront cost is daunting.

> Add in $10k per rack for switches, routers, wires, etc.

Yep, though that's not very much in comparison.

> Plus all the configuration management that needs to be built up. Not to mention monitoring. So maybe a quarter of work just to have it functional.

This is the one I'd really worry about.

> I haven’t even factored in opportunity costs. What could this business be doing that adds more value than building out a little data center?

You always have to keep opportunity costs in mind, but something like this can pay for itself in under a year if there's significant bandwidth cost too, and that's an amazing ROI.

> How often do you think they're actually going to get called in?

Not often. But the server gods are a cruel mistress and it will definitely shit the bed when you are on your honeymoon, or maybe the day after your first kid is born.

> True, but you can do redundancy for cheaper with parity or tape.

At this volumes you probably do want a carbon copy at another site to mitigate disasters like datacenter fires.

>>> This person's entire job is managing a few racks of hard drives? How often do you think they're actually going to get called in?

How about every day?

Quick guess how often disks need to be replaced when there are thousands of them. ;)

You can replace disks once a month or less. That's not an on-call thing, even if you do make your $200k admin do that grunt work.

Also for one or two thousand disks I would expect less than one failure per week.

You're right. I'm wasn't really serious. Since I'm in the middle of calculating costs of own servers in rented racks in Poland (you're right labor is more difficult than hardware) let me imagine the rest of the infrastructure (probably not all) for this "projects", just for fun:

- network switch Juniper EX4600 (10Gbps ports) + 3rd party optics ~$11k

- cheap 1Gbps switch for management access <$1k

- some router for VPN for management network - $500

- 1Gbps (not guaranteed) internet access with few IPs ~$350 / month

- 100Mbps low traffic internet access for the management/OOB network.

Time to get the hardware - 2 months. Time to rent and install hardware in rack - about 1 month. I don't count configuring the software.

This setup is full of single points of failure so I would consider it one "region" and use something like CEPH + some spare servers in each "region". That way you don't need to react immediately to hardware failures. Just send a box of hardware from time to time to the DC and use ~$20-40h/h remote hands service to replace the failed drives or whole servers. You could also buy on-site service from the hardware vendor for 1-3 years adding some cost.

I think the most important thing would be have a cleaver person who design a fault tolerant system, automatic failover, good monitoring and alerting so that any on-call and maintenance job is easy and based on procedures. That way you could outsource it. Only then it might have some sense.

10 petabytes at AWS is $210,000 per month just for storage (even excluding AWS's very high egress and transaction pricing), so even $1M (which seems like a high estimate indeed) would be amortized in less than six months.

Also, the hardware can be depreciated, which reduces its net (of taxes) cost dramatically over time.

Five years (probably the useful life of the equipment in general) of $210,000 per month is $12.6M. That's a lot of savings.

At this scale you should be able to negotiate with AWS and get a deal better than the listed price.

Regarding accounting, the AWS monthly charges are also net of taxes so it makes no difference.

I see from their home page they do not charge for egress, but the FAQ clarifies this is only valid if your monthly egress total is less than or equal to your storage total, otherwise they suspend your service. Should be clarified on the home page in my opinion. At least with an asterisk beside "No egress charges".
At this scale, there's no one perfect answer. You need to consider your usage patterns, business needs, etc.

Is the data cold storage, that is rarely accessed? Is it OK to risk losing a percentage of it? Can you identify that percentage? If it's actively utilized, is it all used, or just a subset? Which subset? How much data is added every day? How much is deleted? What are the I/O patterns?

Etc.

I have direct experience moving big cloud datasets to on-site storage (in my case, RAID arrays), but it was a situation where the data had a long-tail usage pattern, and it didn't really matter if some was lost. YMMV.

Are you fundamentally a data storage business or are you another business that happens to store a tremendous amount of data?

If it's the former, then investing in-house might make sense (a la Dropbox's reverse course).

He's the CTO of KeepSafe.
Ok, so it seems that they are indeed a data storage company.
We are.
Do you want to grow your business by finding other ways to sell people storage, or by adding features to your app that may or may not require any additional storage to develop?
Can you elaborate on what the >10PB of data is and why it’s important to your startup? Is it archived customer data, like backups? Or is it data purchased from vendors for analysis and ML?
See updated question. Thanks for asking
I would host in a datacenter of your choice and do a cross connect into AWS: https://aws.amazon.com/directconnect/pricing/

This allows you to read the data into AWS instances at no cost and process it as needed since there is 0 cost for ingress into AWS. I have some experience with this (hosting using Equinix)

Thanks for the pointer. Never thought about this as an option. Great stuff!!!
I had a similar problem at a past job. Though we only had a PB of data. We used a products called SwiftStack. It is open source, but they have paid support. I recommend getting support, as their support is really good. It is an object store like S3, but it has its own API. Though I think they now have an S3 compatible gateway now.

We had about 25 Dell R730xd servers. When the cluster would start to fill up, we would just replace drives with larger drives. Upgrading drives with SwiftStack is a piece of cake. When I left we were upgrading to 10TB drives as that was the best pricing. We didn't buy the drives from Dell as they were crazy expensive. We just bought drives from Amazon/New Egg, and kept some spares onsite. We got a better warranty that way too. Dell only had a 1 year warranty, but the drives we were buying had a 5 year warranty.

Way late to the discussion, but I second the positive remarks on SwiftStack. It's in the easy button category in this case. The core storage engine of SwiftStack is open source (OpenStack Swift). However, the nice wrap-around tooling and web dashboard is not open source.
I’m not an AWS pricing expert, but you should be aware you’re still on the hook for S3 requests even if you can get out of paying for bandwidth. Is AWS direct connect a pure peering arrangement? I wonder what their requirements are for that. Guess I’ll read the link :)

Idk what your team’s expertise is, but I’d advise avoiding the cloud as long as possible. If you can build out an on-premise infrastructure, it will be a huge competitive advantage for your company because it will allow you to offer features that your competitors can’t.

Examples of this:

- Cloudflare built up their own network and infrastructure and it’s always been their biggest asset. They set the standard for free tier of CDN pricing, and nobody who builds a CDN on top of an existing cloud provider will ever beat it.

- Zoom. By hosting their own servers and network, Zoom is similarly able to offer a free tier where they are not subject to variable costs from free customers losing them money on bandwidth charges.

- WhatsApp. They scaled to hundreds of millions of users with less than a dozen engineers, a few dozen (?) servers, and some Erlang code.

IMO defaulting to the cloud is one of the worst mistakes a young company can make. If your app is not business critical, you can probably afford up to a day of downtime or even some data loss. And that is unlikely to happen anyway, as long as you’ve got a capable team looking after it who chooses standard and robust software.

I run cloud infra for a living. Have been managing infrastructure for 20 years. I would never for one second consider building my own hosting for a start-up. It would be like a grocery delivery company starting their own farm because seeds are cheap.
Depends what you’re doing I suppose. I think the three companies I mentioned (CloudFlare, Zoom and WhatsApp) are good examples of infrastructure investment as a competitive advantage.
None of those are start-ups, though. They've either IPOed (CloudFlare, Zoom) or been acquired by publicly-traded companies (WhatsApp).

A startup is a company that might still need to pivot to find its final business model, potentially shedding its entire existing infrastructure base in the process. Start-ups are why IaaS providers don't default to instance reservations — because, as a startup, you might suddenly realize that you won't be needing that $10k/hr of compute, but rather $10k/hr of something else.

Or suppose you run the most successful/profitable Fantasy Sports League start-up on the internet (used to work for 'em) and host your own gear. Every year you have to analyze trends in use and predict future load, to build the capital needed to buy all new racks of servers every 2-3 years, pay for all the IT staff, datacenter costs.

That was before the cloud existed. They had to poach experts from hosting companies to build and maintain their gear. They built a 24/7 NOC, did server repair, became network experts, storage experts, database experts. Besides being incredibly complex and burdensome, it was financially risky. If they missed their projections they could over-invest by 1-2 million bucks, or even worse, not have the capacity needed to meet demand.

If somebody told us back then that we could pay a premium to be able to scale at any time as much as we needed, when we needed it? We would have flipped out. We had heard about Amazon building some kind of "grid computing" thing, but it seemed like a pipe dream for universities, like parallel computing. Turns out it was a different kind of grid.

WhatsApp ran on bare metal in SoftLayer prior to (and well after) being acquired by FB.

CloudFlare went well beyond leasing servers and built their own POPs with network etc prior to IPO. Much of what they built wouldn't have made economic sense with AWS tax.

I didn't mean to imply that IPOing is the point at which a start-up becomes a not-start-up. None of these three were a start-up for quite a few years before their IPO, either.
In most of these cases, the companies growth from startup to not-startup was only possible because of their infrastructure advantage. Do you think Cloudflare the startup could have offered a free tier if they had to pay Amazon $0.10 per GB that their users sent over the network?

Of course not. But the free tier was a vital component of Cloudflare's growth, first-mover advantage and wide adoption.

> as long as you’ve got a capable team looking after it who chooses standard and robust software.

And cheap.

If you put people in charge who are looking for ways of expanding their empire and budget through spending money on EMC/VMWare/Oracle/etc/etc then you can quickly wind up spending a lot more money.

Simplistic network designs, simplistic server designs, simplistic storage designs with mostly open source software used everywhere can be highly competitive with Cloud services.

Mostly all that Amazon did to create AWS/EC2 was to fire anyone who said words like SAN or EMC and do everything very cheaply using open source software, and evolved away from Enterprise vendors and towards commodity hardware.

If you make "frugality" a core competency in your datacenter design like Amazon did, then you can easily beat the cloud.

You also need to have [dev]ops people who are inclined to say "yes" to the business and who know how to debug things and can operate independently of needing to phone up EMC.

> fire anyone who said words like SAN

Is EBS not, itself, a SAN?

If you narrowly focus on the words outside of the context of what "SAN" has meant in the industry for decades now, yes it is. But no, it isn't.
Can you explain more? Because I honestly don't know enough about SANs to know the difference.

To me, a "Storage Area Network" is 1. a cluster of disk-servers, serving the role of exposing logical block-storage over a protocol like iSCSI (whether directly to client machines, or managed and dynamically allocated by hypervisor software like vSphere), where 2. machines are connected to that storage cluster over a dedicated network interface, to keep LAN/WAN packets from contending for throughput with SAN packets.

By that definition, EBS is definitely a SAN. (And technically, so is my two-drive NAS, if I configure it as an iSCSI target and then run a second switch that connects to its second network port and my workstation's second network port.)

Does "SAN" imply some specific internal architecture for the storage cluster or something?

And, if so, then what do you call the type of thing that EBS is?

> Does "SAN" imply some specific internal architecture for the storage cluster or something?

It implies purchasing dedicated hardware. SANs are CAPEX heavy solutions.

> And, if so, then what do you call the type of thing that EBS is?

If you insist, you could call EBS a SAN-as-a-Service, I suppose.

EBS is absolutely SAN-as-a-Service, and it's fantastic.

For a SAN, not only do you have to become a "storage expert", but their individual limitations will leave you with thousands of hours of wasted time and effort, constrain your architecture, and hold back your application's development.

For EBS, you don't need to know anything about storage. You just say "Give me some space and attach it to any VM I want" and you have it. "Expand that space" and you have it. "Give me a snapshot" and you have it. "Give me a bunch of performance guarantees" and you have it. "Make it all encrypted": Done.

You don't need to maintain it, repair it, upgrade it. No maintenance windows to apply a firmware patch. No waiting for someone to buy, deliver, and install a new storage array to get more space. No hoping your hardware has the right interconnects. No upgrading switch backbones to deal with performance issues. And I'm not even a storage person! I'm so happy that I don't deal with SANs anymore.

I’d like to add I’d agree with the parent comment and add some specifics.

Buy storage servers from 45drives they basically build same hardware as Backblaze uses. Add copper 10G nics to the servers.

https://www.45drives.com/

Get necessary switches 10G with 40G uplink ports. Whatever your favorite. Use 10GBaseT to the servers.

Install hardware in a quality data center. Like one of theirs -

https://www.digitalrealty.com/

And get 10G virtual cross connects to AWS.

Back of the envelope calculation you need 30TB raw, so about 60 servers. They aren’t really that power hungry so 10 per cabinet. 6 cabinets. at least 6+2 switches.

Software wise you have lots of options with this infra. High upfront cost but low MRC vs all other options. Assuming you have skilled sys admins who know what they are doing.

+ some deep archive glacier? I think waiting 12h for data is acceptable if your datacenter burns down but it may not be the case for you.
Direct Connect isn't required from a cost perspective - ingress into AWS is free in all cases I can think of, but certainly in the case of S3 [0]. DX is useful when customers need assurances of bandwidth/throughput, or if they want to avoid their traffic routing over the internet.

[0] "You pay for all bandwidth into and out of Amazon S3, except for the following: Data transferred in from the internet..." - https://aws.amazon.com/s3/pricing/

It's going to depend entirely on a number of factors.

How are you storing this data? Is it tons of small objects, or a smaller number of massive objects?

If you can aggregate the small objects into larger ones, can you compress them? Is this 10PB compressed or not? If this is video or photo data, compression won't buy you nearly as much. If you have to access small bits of data, and this data isn't something like Parquet or JSON, S3 won't be a good fit.

Will you access this data for analytics purposes? If so, S3 has querying functionality like Athena and S3 Select. If it's instead for serving small files, S3 may not be a good fit.

Really, at PB scale these questions are all critically important and any one of them completely changes the article. There is no easy "store PB of data" architecture, you're going to need to optimize heavily for your specific use case.

Great question. I updated the original post. It’s user generated images and videos. We download those to the phones in the background.

We don’t touch the data at all.

> Update: Should have mentioned earlier, data needs to be accessible at all time. It’s user generated data that is downloaded in the background to a mobile phone, so super low latency is not important, but less than 1000ms required.

> The data is all images and videos, and no queries need to be performed on the data.

OK, so this definitely helps a bit.

At 10PB my assumption is that storage costs are the major thing to optimize for. Compression is an obvious must, but as it's image and video you're going to have some trouble there.

Aggregation where you can is probably a good idea - like if a user has a photo album, it might make sense to store all of those photos together, compressed, and then store an index of photo ID to album. Deduplication is another thing to consider architecting for - if the user has the same photo, across N albums, you should ensure it's only stored the one time. Depending on what you expect to be more or less common this will change your approach a lot.

Of course, you want to avoid mutating objects in S3 too - so an external index to track all of this will be important. You don't want to have to pull from S3 just to determine that your data was never there. You can also store object metadata and query that first.

AFAIK S3 is the cheapest way to store a huge amount of data other than running your own custom hardware. I don't think you're at that scale yet.

Latency is probably an easy one. Just don't use Glacier, basically, or use it sparingly for data that is extremely rare to access ie: if you back up disabled user accounts in case they come back or something like that.

I think this'll be less of a "do we use S3 or XYZ" and more of a "how do we organize our data so that we can compress as much of it together, deduplicate as much of it as possible, and access the least bytes necessary".

Isn't Backblaze B2 cheaper than S3?
Yeah, I guess I shouldn't say S3 is the cheapest option there, I was thinking 'In AWS' but Backblaze is cheaper.
Take any credits you can get from a provider switch and then thoroughly map out your access patterns, ingestion, and egress. Do whatever you can to segment data by your needs for availability and modification.

If it's all archival storage then it's pretty straight forward. If you're on GCP you take it all and dump it into archival single region DRA (Durable Reduced Availability) storage for the lowest costs.

Otherwise, identify your segments and figure out a strategy for "load balancing" between standard, nearline, coldline, and archive storage classes. If you can figure out a chronological pattern, you can write a small script that uses the gsutils built-in rsync feature to mirror over data from a higher grade storage class to a lower one at the right time.

The strategy will probably be similar in any of the other big 3 providers as well, but fair warning, some providers archival grade storage does not have immediate availability last I checked.

See: https://cloud.google.com/storage/docs/storage-classes

https://cloud.google.com/storage/docs/gsutil/commands/rsync

Flip side. How much time would that migration take. As a startup focusing that time on product would lead to more VC investment or more sales sooner. With the seed/series funding and sales being many multiples of the cost savings.
If data storage isn't your startup's job then I would negotiate heavily on the AWS contract.
How much can you get the pricing reduced at AWS? At list price, 10PB of IA storage cost $1.5M/yr.
AWS will blow up your phone if they know you're interested in dealing. Various online forms smattered around the site will put you in this pipeline. Just ensure you have a competing quote for them to work against
Here's an unpopular answer - don't store 10PB of data. Find a way for your startup to work without needlessly having to store insane amounts of data that will likely never be needed.
Excellent advice for a data backup startup.
Doesn't this imply that they started a company without actually having a plan for the most fundamental part of what they are selling?

This is like an ISP asking how they can get hooked up to the internet.

No. They are already managing 10PB, planning for which would be very stupid when just starting up.
Why would planning to be able to execute the single focus of your startup be stupid?
I tend to agree. If you are a storage company, I’d think that part of your secret sauce should be how to store tens or hundreds of petabytes of customer backups economically.

Maybe I’m wrong though. Perhaps the real secret sauce is the end user experience and the kind of storage you use on the backend doesn’t matter at all.

However I bet that the “cloud storage space” is pretty crowded and lots of people shop on price more than anything. If your business model is all about price, then finding economical storage is critical to your company and needs to be part of your core competency.

If price isn’t that important, perhaps it doesn’t matter... the “winners” would win no matter how expensive their storage solution is.

But honestly.... I feel like part of your core competency needs to be managing the storage system.

A rule of thumb for performance is every 10-100X involves changing up your fundamentals

It's a bit different nowadays that a lot of scaling tech is commoditized, but still means things like negotiating new contracts, finding & fixing the odd pieces that weren't stressed before, etc.

(congrats on hitting the new usage levels + good luck! we're at a much smaller scale, but trying to figure out some similar questions for stuff like web-scale publishing of data journalism without dying on egress $, so it's an interesting thread...)

I also tend to agree. I think AWS is great and use it as my default solution, but if I was starting a company that had high bandwidth and/or storage requirements, I would be looking for other solutions from day one.
It's more like a company that has validated product fit now needing to figure out how to scale economically.

Apple didn't start manufacturing with mega Foxconn contracts. They had to figure that out along the way as their scale demanded.

However I share your sentiment: doing things the same way but cheaper is usually not the solution. Doing things differently (in-sourcing) might be the path forward.

Figuring out how to scale is not just a part of a storage startup, it's the whole thing.

Apple created something people wanted and sold at a price that would still make money if it was assembled by hand. They didn't form a company around a commodity like data storage.

Data storage is a commodity. Everyone already has some, online storage companies already exist. If you don't know how to store a lot of data and your company's whole purpose is to store a lot of data, it sounds like something that should have been worked out before making the company.

If you can solve that for me without affecting revenue I have $1m in cash for you right there.

We are a photo/video storage service.

So from a completely evil (well, capitalist) perspective, do you have data on how often people retrieve backups, and at what 'age' they do so?

Because there may be an inflection point that offering monetary compensation for data loss, rather than actually trying to store the data, would make more financial sense. I.e., "All data > than 2 years gets silently expunged, and anyone trying to retrieve it at that point gets $10 per gig in compensation for 'our mistake'".

Please don't actually consider that though.

(A less evil approach that might still lead to reduced costs would be detecting old, unaccessed data of sufficient size and flagging it for users, with a small refund or service discount if they purge it. Though that assumes you have 'power users' who are storing massive amounts, to where the savings in storage costs would be worth it)

(And if you don't already, I would also consider making it so items that are in the trash for some period of time, say 30 days, get deleted automatically as well, possibly with a reminder email a few days before)

(And lastly, depending on user profiles and usage, incentives around reducing resolution/quality of photos and video, and automating that in the app as part of the sync process, might provide some opportunities to reduce costs of storage > the lost revenue of cheaper plans.)

What about storing the older things in some slower backup service that's slow to access but cheap? If the user eventually accesses those some day you would kick of some background job to get them fresh again. Not super UX friendly of course, but could reduce costs. Or is this already the standard thing to do?
"We used advanced machine learning algorithms to predict which users will need to retrieve which pieces of data in the future, and silently delete everything else."
I don't know if this is a crazy idea or if it creates scalability issues, but could you craft an algorithm to cold store data for users who do not show a need for instant access, and/or warm up the data when you predict it will be needed? Kind of like a physical logistics company would need to do with distributed warehousing.

Sticking points I see are, 1. If you get it wrong you'll need some form of UX that keeps the users from getting to angry about it. 2. The cost of moving the data between hot/cold storage might make this prohibitive until a much larger scale. 3. User behaviors might not be predictable enough.

You could probably put a fun marketing spin on that.

"We use ML to ensure we only store the highest quality data, freeing you from the chains of having too much worthless data and nothing to do with it."

GPT-3 that convinces you why you don't need to store this thing
Image processing to label each image ("baby with spaghetti on head", "cat playing with string", "naked person"), and then only save one image with each label.
Just save the label. Then you use generative techniques when they want to retrieve the image.
If AWS is what you know I'd stick with it.

Changing that can be very very difficult for not much gain. Plus AWS skills are very easy to recruit for vs Google cloud.

Meta-question: shouldn't there be a website dedicated specifically to reliable, crowd-sourced answers to questions like these? Does it really not exist? I'm thinking like StackShare, but you start from "What's the problem I'm trying to solve?", not "What products are big companies using?".
Having dealt with a lot of big data I often came to realization that we actually did not need most of it.

Try being intentional and smart in front of your data pipeline and purge data that is not useful. Too many times people store data "just in case" and that case never happens years later.

At that level of data you should be negotiating with the 3 largest cloud providers, and going with whoever gives you the best deal. You can negotiate the storage costs and also egress.
10PB is a crazy amount of data. Far more than any normal business would ever have to deal with. Presuming you aren't crazy, you must have an unusual business plan to legitimately need to handle that much data. That means it's tough for us to say much - any assumptions we might have about it could be invalid depending on your actual business needs. You're just going to have to tell us some more about your business case before we can say anything useful about it.
Unless they do video. In that case 10PB is not much at all.
It's not merely video

Machine data takes a lot of space, depending on how long you need/want to hold onto it - any given even might only be a few 100 bytes, but with 1000s or 10s of 1000s of devices sending even syslog turns into a metric buttload of data :)