I run all my tikaro web stuff (blog, Jira, Confluence) off a single dedicated server that’s somewhere in, I don’t know… Tampa? Or something?
It took me a while to get used to the fact that my server might be anywhere, and that I don’t know what it physically looks like. Actually, back in 1999, when I first had a dedicated server, I explicitly chose a host located in Kuala Lumpur, because I thought it was so awesome that my packets were going ALL THAT WAY to reach me. I liked to imagine that half the packets were going east, and half going west, because the server was as far away from me as it’s possible to be. Since I was losing half my packets (stuck in the Khyber pass?) I ended up moving the box to the States, but it’s still more of an idea to me than a machine. But it is a machine somewhere.
Anyhow, enthusiastic young programmer Dustin Whitney at [my current employer] (ha! ha! newbie blogger!) send around a coders-list email extolling the benefits of the Amazon Elastic Computing Cloud (EC2). Which works like this:
- You make a “virtual machine”, which is a computer that thinks it’s a computer, but really it’s a piece of software that thinks it’s a computer.
Okay, so far so good. My copy of Windows XP running on my MacBook thinks it’s a beige Dell box, but really it’s software. This is futuristic, but I’m used to it.
- You package up this virtual machine, and you upload it to the formless, massive grey mist of Amazon S3, the Simple Storage Service.
This is where my head starts to hurt, imagining a global mist of, you know, files and stuff. “S3 was without form and void, and darkness was on the face of the deep.”
- You issue a web-service command, and lo! The virtual machine living in the mist comes to life, and becomes AN ACTUAL COMPUTER THAT YOU CAN MAKE DO THINGS.
And the spirit of God moved on the face of the waters, and OH MY GOD IT’S A SHELL PROMPT! (crack of lightning)
- You pay by the hour during the time your “machine” actually “exists” (from ten cents to fifty cents per hour, depending on how “powerful” your “computer” is.)
See how I’m having to use scare quotes everywhere? Because nothing’s REAL, man!
- Your EC2-hosted application got Slashdotted? Issue some magical web-service incantations, and your virtual computer clones itself.
Like marching brooms! Like a magical pasta pot that makes pasta until you say the magic word! Like an army of unstoppable homunculi! And they’re all real — but not real — they’re AMAZON EC2 CLOUD GOLEMS!
- Your web application can even be configured to do this itself — if it sees that demand is exceeding capacity, it can summon more instances of itself, becoming more and more powerful!
See? Do you see why I’m foaming at the mouth here? Jesus H. Montgomery Christ!!! Voltron! Skynet! The first chapter of the Gospel of John ALL ROLLED INTO ONE!
Excuse me while I go sob quietly in a corner. And try to figure out how to get this public/private PEM key pair working.
2 responses to “March of the UNSTOPPABLE AMAZON EC2 CLOUD GOLEMS”
I think I’m going to spend a good amount of time this weekend writing a server pool manager. I’ve decided starting and stopping new servers should be determined by the number of active sessions on a given site. So if I chose that magic number to be 100 sessions, a new server would spawn every 100 session increment. I originally thought spawning new servers based on CPU/memory usage would be the best way to determine when a new server should spawn, but I think monitoring CPU/memory usage will be too difficult in Java — it could probably be done quite easily in Ruby though.
I’m surprised more people didn’t respond to the coders list. This has the potential to save, what, like tens of thousands of dollars? hundreds of thousands of dollars? Not to mention it does this while providing a fantastic solution to some scalability problems we’ve encountered. I suppose I will have to cheer lead it.
You saw this? http://ec2onrails.rubyforge.org/