I, too, have wondered about the technical details when I see stories like this. If the data was originally stored in S3, they probably used the Cloud Storage Transfer Service (https://cloud.google.com/storage/transfer/). The secret sauce appears to be parallelization of the transfers.
When I copied hundreds of GB of data from one bucket of to another AWS bucket, it took me days to do! Then I realized it was because I was running a single threaded process. The slowest part was getting the list of objects to copy. If I had a separate, faster index of the objects, then I could have done a copy in parallel much more quickly and max out the bandwidth available to me. (Maybe that is part of the rationale of Netflix's S3mper?).
I'm curious to hear other thoughts on accomplishing fast transfers of S3 data.
Edit: theoretically speaking, if you had 1 TB of data to transfer, and a paltry 100 Mbps (12.5 MB/s) connection, you could do this in under 24 hours if the entire network was fully utilized. Not a network engineer so go easy on me if I am wrong!
As for costs, sending 1 TB out will cost $90,000 in S3 transfer costs, before any other discounts.
Unfortunately, a technical deep dive on the exact parameters of the transition wasn't really in scope for this piece. I tried to include detail where I could, and Evernote has a really wonderful 5-part blog series that goes into many of the details of the transition. (It's now linked in this post.)
To provide some additional details on the transfer: Evernote was going from data centers in California that it owned and operated to Google, not from S3. Technically speaking, the migration isn't 100% complete, as Evernote is still finishing the transfer of its attachment files to Google.
Evernote did not disclose the exact details of how that transfer was executed on the record, and thus it did not end up in my piece. Thanks for reading!
For what it's worth, the Evernote team seems genuinely happy with the way the transition went, along with their interactions with Google.
I think the only other option left is use Spot Fleet EMR. I believe the S3 API takes a marker for pagination so you can probably keep paginate to list the next N keys (of course assume your current bucket is no longer accepting new objects... otherwise create a Lambda function and let new file to be copied to the new bucket on create event).
I don't remember if aws s3 cp --recursive bucket1 bucket2 requires local copies first, or it is a remote copy-only operation.
I have always wanted AWS to allow S3 bucket to be transferred from one account to another with simply transferring ownership.
I suspect Evernote, if using S3, would have a similar data profile of many small objects.
1TB out would be closer to $0.09 * 1024 == $92.16 (still expensive) -- think you may have misplaced a decimal there.
TLDR: Shard at a time was replicated over the network, then live traffic was cut over to the Google Cloud replica.
[1] https://blog.evernote.com/tech/2017/02/08/part-1-evernote-se...
https://students.googleblog.com/2017/02/intern-impact-brotli...
Since this would be a simple connection from Evernote's existing location to Google, I don't think the cost would be a significant factor.
-Author of the piece first linked here.
Disclosure: I work on Google Cloud (but wasn't involved in this migration, nor even particularly aware).
First, getting data into the cloud is cheap, it's outbound bandwidth that's expensive.
Second, that's peanuts for a big company. Most wouldn't notice a 100k bills for a one of transfer. Not to mention it's negligible compared to the size of storage and processing.