Windows Server instances on the free tier may be a tight fit. Depending on what you plan to do, the amount of memory apportioned to a Windows Server instance may not be enough to run anything terribly ambitious. If you're not doing more than serving up static Web pages, it should be fine. I was able to install MySQL/Apache instances on such a machine (via the AMPPS Web stack) and run it with about 20 percent RAM free.
On the plus side, if you're using a database via an AWS-hosted database instance (RDS), the database is launched entirely apart from the machine you're running. With RDS, you don't have to worry about running a database server on the actual instance you're using (and thus gobbling up that much more memory with it).
You don't get a consistent IP address by default. Because of the way AWS provisions addresses, instances do not come with a static IP address or a consistent private DNS name automatically. This makes it tough to host a free site for use by the outside world without some DNS trickery, as resetting the instance you're using will cause its IP address to also reset.
Fortunately, this limitation is easy to overcome. If you want a machine to be consistently reachable by the general public, you can use EC2 Elastic IP Addresses to provision a static IP for a free instance. Bear in mind that if you reserve an address and don't actually associate it with an instance, you'll be charged a small fee.
Best practices with the free tier
Clearly, the free tier has many gotchas. The resource limits make it all too easy to run up charges if you're not careful. As you strive to make the most of your micro instance, keep these guidelines in mind.
Keep an eye on your billing. It should go without saying, but check in regularly with your AWS account activity page to see if you're running up charges you're not aware of. By default Amazon doesn't warn you if you've exceeded the free tier; you're just silently billed for any usage that isn't covered. If you want to be alerted to what your estimated usage is going to be and create alarms to warn you if you might exceed your budget, Amazon provides a billing alert system for your use. However, the number of alarms and notifications you can generate is limited by the free tier.
Keep an eye on your I/O usage. If you're using the server for yourself, you're not likely to run up a big I/O usage bill. But if you make your server public, that could change everything -- dramatically.
Figuring out the I/O usage for your instances isn't difficult, but it requires diligence and scrutiny. The EC2 management console provides monitoring tools, although the ones in the free tier aren't as granular as you otherwise get. You can't poll a free instance at more than five-minute intervals, whereas you get one-minute polling with for-pay instances.
You can also poll I/O usage from within the instance itself, using the OS's own tools. Here's one way to do it on Linux. In Windows you can use the Disk Transfers/Sec performance counter.
You can track your service charges through Amazon's reporting system, which also allows you to download the gory details in CSV/XML formats.