Main image of article Storing Web Assets for Performance and Scale
Google App EngineThere are a lot of good cloud platforms out there, and it seems like more are popping up every day. When evaluating them, you need to understand what your real needs are and not simply pick one because it’s a well-known name. For example, if storage of Web assets is critical you should choose a platform that offers the best content delivery network at the best price. If such storage is not your primary concern, and a flexible set of elastic servers is more critical, then a different cloud platform vendor may be right. Don’t try to use a one-size-fits-all or a one-vendor solution. Today, I’m going to focus on storing Web assets in the cloud for maximum rendering performance and scale. Just to be clear, Web assets are images, videos, HTML pages or anything that needs a physical storage location and is used to render content to your browser. This can also include back-end data services.

Back in the Day

Not too long ago, when you decided to build a new website you secured the domain name and pointed the DNS to your favorite Web hosting company’s funky-looking CNAME of your newly created site, which was running Linux or Windows Server (depending on your favorite poison). But before you did anything, you used your Web hosting company’s cpanel tool to create your virtual site, then FTP’d all of your Web assets into place. Everything was great, until your Web hosting company had an issue or the site got mentioned on Oprah. Of course you could have picked another solution, like a managed hosting site or even your own equipment in a co-lo data center, but that’s another discussion.

Modern Times

Today we do things differently. We evaluate cloud platform vendors to determine how they scale and how they store data (both static and data services). We also evaluate to see whether the data is replicated and how geo location services are used, if at all, to determine the closest network edge for a given client request. I know you’re wondering about why CDN-type questions come into play on cloud platforms. The reason is simple: performance. Not only do you try to make sure that your servers are able to scale on demand, you want your data as close to your users as possible, and you want the it cached at the edge of your vendor’s network. Several of the larger cloud platform providers provide CDN-like services out of the box, while smaller providers have teamed up with CDNs. Of those that have out-of-the box service, Google seems to have a very rich platform-as-a-service called Google App Engine. In addition to automatic scaling and CDN-like services for all data, Google App Engine provides a robust Java and Python development environment that allows you to test your site locally and then automatically push the site to the cloud. You can find out how simple it is to create a robust and scalable website with Google App Engine here. Later, I'll show you how to create a simple Java and Python app for it.