Original Post
Has anyone else worked with Amazon's Web Services lately? About a month or two ago I moved LucidChart onto an EC2 instance with them. Here are some observations: You definitely need to be a system administrator to effectively use EC2 to host a traditional web site/web application. It took me about one full work day to get a basic LAMP stack up and running with all the cool features turned on, and I'm reasonably experienced in system administration in Linux. The feature set, though, is so compelling that I will never be back to a traditional shared/VPS/dedicated hosting provider. My persistent storage is logically separate from my server "instance", so in the case of my server crashing I can simply boot up a new one and attach my storage to it (e.g. database, code, etc). I recently moved to a higher-CPU instance at no downtime due to this feature. I get instant incremental point-in-time snapshots of your storage (EBS, Elastic Block Store) volumes that automatically get backed up to multiple data centers. I have full hourly MySQL backups that only lock the database against new writes (not at all against reads) for about 1 second. This took a little engineering to get just right, but nothing too grueling. Creating new MySQL slaves is therefore a zero-pain procedure. If you've ever set up MySQL replication before, you'll understand how important that is. I lock the database, dump a SHOW MASTER STATUS to the persistent storage, lock the file system, take a snapshot, and unlock the file system and database. This takes about 1-2 seconds. I then create a new MySQL server instance from a server image I have created, attach a new EBS volume made from that snapshot, set the slave parameters based on what's in the master status file, and start up MySQL. It's pretty much up to date with the master already, and there was basically no downtime. Elastic IP addresses are what glue all this together. You can allocate up to 5 static IP addresses that you can remap instantly from one instance to another. So on major system upgrades, I just create a new instance from an image of my current instance, do whatever upgrade is necessary, and remap the production IP address to that instance. Done. Zero downtime. And I only get charged for exactly what I use! No more "500GB bandwidth included, $2/GB overages". I pay $0.17/GB with no minimums. I pay by the server-hour for processing power and by the GB/month for persistent and backup storage (again, no minimums). They recently introduced "reserved" instances, which mean you can reserve a certain instance type for 1 or 3 years (at up-front cost) and then pay dramatically-reduced rates. I'm paying $0.03/hr for my MySQL master, having paid $500 upfront to reserve that instance for three years. That works out to something like $35/mo for a 1.4Ghz Xeon with 1.7GB of RAM. One major frustration: You can't assign multiple elastic IP addresses to a single instance. So putting multiple SSL certificates on one Apache server is out (you can still get by with a UCC certificate for multiple domains). Anyway, anyone else used AWS lately?