Skip to content

Instantly share code, notes, and snippets.

@torquemad
Last active September 6, 2015 12:19
Show Gist options
  • Select an option

  • Save torquemad/bb55c45290d9f97055e5 to your computer and use it in GitHub Desktop.

Select an option

Save torquemad/bb55c45290d9f97055e5 to your computer and use it in GitHub Desktop.
Ec2: Your basic server. This would be your web server or VPS in traditional means, but it can be anything you want. There's an entire market place, where you can start pre-built Ec2 instances. You can also make your own, and create an "AMI" or Amazon Machine Image. This is your entire computer, configurations, installs, everything captured into a file, which can turn into as many computers as a you want, at any compute size/performance you want.
S3: Essentially a hard drive with a network interface attached to it. Think of it like a NAS drive. It can't do any language processing like PHP, but it can serve files without the need for a web server. Expands dynamically, so it doesn't have a contained size, it will also expand to meet traffic needs. Everything is stored redundantly, in multiple physical locations, although that is designed for resilience, not performance. It does not serve attached hard drive functions very well in the same way a NAS doesn't act like a native hard drive. Also, attach it to a CloudFront distribution if you have any amount of traffic or care about performance.
Glacier: An extension of S3 for long term storage. Think tape drive replacement. Really cheap, but they charge you if you pull from it too often.
EBS: Hard drives, basically. You create hard drives however big you want, and then attach them to your servers. You can take snapshots for later recovery. You can select magnetic or SSD. With SSD, the bigger the drive, the better the performance. You can also purchase "provisioned IOPS" if you're hellbent on awesome performance.
RDS: A database server. It's managed MySQL, SQL, Oracle or more recently Amazon's own Aurora, which is MySQL with some enterprise features tacked on. It offers extra "out of the box" features compared to an Ec2 with MySQL installed, like automatic back-ups and trimming, automatic multi-zone fail-over and simple read replica creation.
Elasticache: Basically Memcache or Redis in managed form, like RDS. You can create clusters behind an endpoint in order for them to scale as much as you need. They'll also rebuild themselves upon failure.
Route 53: Your DNS servers. You know how you get "ns1.example.com" and "ns2.example.com" when you get a domain somewhere. Those are most likely located in the same datacenter. AWS gives you 4 servers per domain, which are geographically diverse. They also provide some extra, integrated tricks like health checks and alias records.
CloudFront is a Content Distribution Network (CDN). Clusters of servers all around the globe designed to deliver your assets, or in some cases your entire website, from locations which are closer to your customers. Also good (necessary) for streaming. Also has persistent TCP connections back to their data centers, which don't arrive in, say, CloudFlare until you reach their pricey business class.
SES: SMTP Email service for delivering a large number of emails. Since they're regulated by Amazon, the IPs, combined with DKIM entries, are much more likely to land in an inbox instead of a spam trap. Can scale to thousands of emails in minutes, if needed.
CloudWatch: Monitoring of various metrics, and also ingests logs, if you set it up, so logs can continue to exist even after an instance is terminated.
SNS: For sending notifications, text or email, anytime something happens according to CloudWatch. It can also send notifications via http to other apps upon some defined event.
There's a lot more, as you know, but those are the basics for hosting.
The magic, IMO, is that you can control all of this with scripting. The concept, "infrastructure as code" makes your infrastructure as controllable as the rest of your app is, and that's powerful.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment