Amazon CloudFront - Support For Dynamic Content
aws.typepad.com
aws.typepad.com
It's an infuriating bug, because I can't see how we could confirm that this kind of thing isn't an issue any more. I'd love to go back to CloudFront but I'm just not confident that it will reach all of our users.
This thread has reports from other users - https://forums.aws.amazon.com/thread.jspa?messageID=246418
I had the same issue in one of my websites
1. http://www.webpagetest.org/result/111114_HM_263JS/1/details/ 2. http://www.webpagetest.org/result/111114_2N_263HM/1/details/
You can see that cloudfront takes upto 5 seconds for some images. And these are files which were cached in cloudfront (X-Cache: Hit from cloudfront)
Because of this issue, I moved away from cloudfront.
> The following URLs fail to load: > http://cdn.lanyrd.net/css/core.221dbc4b.min.css > http://cdn.lanyrd.net/js/jquery-1.4.3.min.97be02d1.min.js > http://cdn.lanyrd.net/js/jquery.jplayer.min.72d89d00.min.js > http://cdn.lanyrd.net/js/lang.ENG.4f594a71.min.js > http://cdn.lanyrd.net/js/global.f0851851.min.js > This is on the basic page - http://lanyrd.com/services/badges/. As far as I can tell, no files from the domain cdn.lanyrd.net will load. > > Also, it seems the Lanyrd.com site doesn't can't load any resources from the CDN domain as well - the homepage is totally broken for me. > > Oh, and I'm situated in Slovenia, if that helps.
I replied and asked them to run "host" and "ping" against cdn.lanyrd.net and they sent back the following:
> Host cdn.lanyrd.net not found: 3(NXDOMAIN) > ping:unknown host cdn.lanyrd.net
I also had an incident a few months later where our assets failed to load for a period for me sitting at my desk in London - GitHub's assets were affected as well, which lead me to suspect it was a CloudFront failure. Unfortunately I don't have any notes from that.
Why are you confident you will serving directly off S3?
$ curl -i http://d.not.mn/test_javascript.js
$ curl -i -H "Accept-Encoding: gzip" http://d.not.mn/test_javascript.js
This isn't trying to take away from their announcement. I'm always impressed by Amazon's ability to rapidly deliver features.I don't see the requirement of storing the data in cloud files as a very heavy burden, but I'm not the most unbiased source on that.
http://docs.amazonwebservices.com/AmazonCloudFront/latest/De...
I wonder how well this works for content that is truly dynamic. Seems like it would necessarily be slower for those pages that change on every request.
Simplified example (ignoring DNS latency, assuming symmetric paths):
User to CloudFront RTT is 30ms
User to Origin RTT is 100ms
CloudFront to Origin RTT is 100ms
It seems clear that User to Origin is faster than User to CloudFront to Origin, but not if you consider TCP mechanics.
If the User makes an HTTP request for a 4KB file to the Origin directly, it will take 100ms to set up the connection, 50ms for the request to reach the Origin, and another 50ms for the first response byte to arrive. Total: 200ms. If the origin does not have a big initial congestion window, it will take another 100ms for the last byte to arrive. Total: 300ms.
If the User makes an HTTP request for a 4KB file through CloudFront, it will take 30ms to set up the TCP connection. The request packet(s) will take 15ms to reach CloudFront. CloudFront tries to maintain a persistent TCP connection to the Origin, which avoids set-up time and slow start. The request to the Origin will take 100ms to complete, and another 15ms to reach the User. Total: 160ms.
Using CloudFront as an intermediary could reduce latency by a lot, even if no caching is going on.
Also, CloudFlare offers the same service, but with added security and anti-spam features.
Thanks a lot.
I only use S3 now - and Heroku - but I am excited about where this will continue going.
The future looks bright and I can't wait until the right application comes along for me to build it on top of a fully scalable infrastructure that I only have to pay as I use.
My suggestion for almost all businesses is to use AWS for S3, SQS, SWF etc and then get dedicated/VPS servers in the same data center. I actually get faster ping times to SQS from my dedicated server than from EC2 (both in US-East).
EC2 is the biggest ripoff going around. And all the other AWS services are some of the most awesome going around.
OVH should have their east coast data centre open for customers in August. http://www.datacenterknowledge.com/archives/2012/04/30/europ... I am an alpha testing and their service is great. They are not just a data centre that leases bandwidth from others. They are an internet backbone with ownership in back haul fibre. They are big enough to add 290gbps to their network in days. http://forum.ovh.co.uk/showpost.php?p=42216&postcount=66
Most of the links are 10gbps so it is just a simple hardware upgrade to 40gbps or 100gbps.
Ping times are on average 2.75ms.
Voxel is NYC Incero has Texas and NC locations.
Voxel is larger, great network, great reputation, good prices. Incero is smaller, insanely good prices, new, reliable and great CS so far.
http://codemonkeyism.com/dark-side-virtualized-servers-cloud...
"You can see that if you utilize the servers 100%, then EC2 is between 2x and 3.3x more expensive than renting servers Additionally looking at the CUs the EC2 images are less powerful than rented hardware, so you probably need more of them."
Ideally you'd automatically recreate AMI snapshots whenever your code changes. In other words, erm, Heroku.
http://en.wikipedia.org/wiki/Server_Name_Indication
Essentially, the cloudfront server doesn't know the certificate to present.
The difference between San Diego and Chicago, or San Diego and New York, when I compare it to running my application locally, makes me really want some kind of quantum instant communication. But since we don't have that, I really would like something like a CloudFront. Pretty much for every single application or web page that I make, I would actually like to have that.
Actually, I think it would be better if everyone and every web site had that, a way that sites could automatically be cached in servers local to everyone's city. Wouldn't that be nice?
Which reminded me of the whole concept of content-centric networking.
Here is one related project that I found: http://code.google.com/p/haggle/
http://en.wikipedia.org/wiki/Content-centric_networking
The hard part about this is that to really be effective it probably means really changing the way things work. It is tough to ease into it.
This could also help with reducing the amount of data that needed to be transferred. Maybe we could figure out a way so that every website in the world would be compressed referencing a very large global dictionary that was shared on every client (or possibly partitioned for local clusters, but that is more complicated..)
Regardless of the level of compression, it would still probably be possible to distribute quite a lot of the trending web content to be cached locally. Maybe it could be a bit like a torrent client for people's desktops, or maybe web application servers could have an installed program that participates in the distribution system and also publishes to it.
Maybe it could be a browser extension or just userscript (Greasemonkey) (probably has to be an extension) that would cache and distribute web pages you view. So for example as we are clicking on Hacker News headlines we are caching those pages on our local machines. Then when another person who has the same script/extension installed clicks on that headline, it will first check his local peers, and if I am in the same city and have that file already, I can give him all of the content in a fraction of the time. If a lot of people used that extension, the web would be much faster, and it would solve a lot of problems.
I wonder if there isn't already a system like that. I mean there are probably RSS feeds that come off of Hacker News and Reddit, and a reader could actually precache all of that content. But more comprehensively, I bet there is quite a bit of content that large numbers of say programmers are constantly accessing, that could benefit from that type of system.
Can we make something like a gzip but not limited to within 32kb or anything, instead it is a giant dictionary that is a GB in size with all of the most common sequences for all of the software engineering web sites that are popular today. Then instead of sending a request to San Francisco or Chicago, I can just send a request to a guy less than a mile away who also happens to be interested in Node.js or whatever.
Maybe something like http://en.wikipedia.org/wiki/Freenet or an open source CDN.
Or something like this http://en.wikipedia.org/wiki/Osiris_(Serverless_Portal_Syste...
HTTP over NNTP. I see a great need…