I'm going to to try and be as detailed as possible, as I'm aware these questions are often too loose.
I'm running some smaller services on EC2/RDS and have begun organising myself to migrate my entire service to EC2.
Current service runs:-
- Around 200 Apache requests a minute / 12,000 per hour
- Service is PHP driven with both front and back end functionality (I'd suggest roughly half all traffic is PHP requests)
- Around 250mb mb uploaded via PHP per day
- FFMPEG encoding (note; this will be portable, so could run on other instances of it got too heavy
- Numerous daily processes parsing large quantities of logs and compressing database dump backups
- Database - Will now migrate to RDS. Easy one.
I'm looking for some orientation on:-
- Indicators of what instance-type would be best to run permanently. Do you need more idea of usage to get this idea?
- An idea of whether it is worth using AWS load balancing facilities? I sense from the docs that these are targetted at larger scale implmentations. I'd certainly like the flexibility to start duplicate AMIs and distribute traffic, but whether to do this at DNS/Scripting level or use their services - not sure.
- An idea of a hitlist of things to do/be aware in an ec2 environment would be awesome.
I hope this isn't too vague.
Trying to figure out a "permanent" instance type on EC2 is a waste of your time. Just fire up an instance type you think should meet the needs and adjust it up or down based on measured performance and your budget.
Here's an article I wrote on how to switch instance types after the instance has already been running:
The biggest decision is whether to start with 32- or 64-bit architecture as most instance types only support one or the other today. To switch between 32- and 64-bit architectures, you'll need to build a new instance (and perhaps AMI). So... always document/automate exactly how you create your instance/AMI and always keep your data on separate EBS volumes so it can be moved between instances.
Implement AWS load balancing if you find that a single instance doesn't comfortably cover your needs and/or if you want to have live servers to support traffic if a single instance fails and/or if you want to use auto scaling because your traffic varies a lot between the lows and highs.
Don't be afraid to run multiple instances to serve different tasks. For example, the batch processing, log file analysis, backup handling might be better off if they weren't done on the web server(s).
Yeah, that is a bit vague. Read as much as you can of the AWS/EC2 documentation and blogs that relate to the topics. Experiment and try different approaches; throw away things that don't work. Document everything you do so that you can reproduce it.