Pretty Clouds
When I was at I Love Rewards we need to keep costs low, but we also needed scalability. When we re-wrote our enterprise platform, our Director of I.T. at the time (Amin Lalji) got us in on the beta of Amazon's EC2 (Elastic Compute Cloud). We were one of the first people to run a cluster on it, which was pretty cool. You pay per CPU-hour. Unfortunately, we later determined that running a cluster for 10 concurrent users didn't make much sense. Fortunately, we had spent some time architecting things to be abstract & swappable, so scaling back to a single box was easy. When I left, traffic was getting high enough that we were about to upgrade to two servers (1 for the database, and one for the application). I'm sure that has been easy for them, and that it'll be easy to scale back up to a cluster when the time comes.
We also stored all of our images on Amazon's S3 (Simple Storage Service). As much as possible lived in the Cloud.
At my new job, we ain't got no clouds... but we're about to. This time, however, it won't be Amazon. It looks like we'll using Nirvanix. Unlike Amazon, they have a nice Zend_Framework_Nirvanix class for accessing their web services. Why go with them and not S3? The big reason is that on top of simply offering storage, they offer some VERY handy multimedia services. Specifically, they do image resizing, video transcoding from one format to another, and video frame extraction. Pretty hot stuff. Their pricing is good, too. You pay a certain rate to store data on their network, and either $1/GB pay-as-you-go, or $0.20/GB to have all your content transcoded & frame-extracted! Nice
I'm looking forward to playing with it!
What can Nirvanix' services do for you? (no, I'm not getting paid for this)
Reusability and the DOM
I consider my PHP to be well-written and at least somewhat re-useable (as much as any code can be), but my javascript? Not so much.
Is it because I haven't chosen sides in the framework wars? (dojo, jquery, prototype, yui...) Is it because javascript has evolved beyond it's display-logic roots into a "full-service language", without also having it's documentation mature? Is it because so many 'designers' don't know how or why the id & name of form fields can be different?
Maybe it is due to the hooks provided by the DOM? Each page can have hundreds of unique hooks, and you need to go into the project with a sense of structure & organization, otherwise you'll be including 20 javascript libs on each pageload.
And what about decoupling? I see people selecting elements based on their classes all the time. I think that's ok if the class is structural in nature, but is it right to select on presentational classes?
Maybe it's about standardizing the mapping between the database, the HTML, the CSS, and javascript, so that there's consistency, predictability,reliability, and the potential for a whole lot of process streamlining via frameworks & integrated development environments.
Or does something like this already exist? Have I missed the boat?