We're involved with building what will become a high traffic event management system in an application based on C5
These notes are from our experience so far and there may be inaccuracies so treat them as a general guide rather then specifics. We'll try and get it right
The AWS people have basically shared their own enterprise platform with anyone who wants to use it. They do this partially because the massive scale means predictable resource management. If you want to know more about that reasoning then just ask
Think of AWS as a massive instance of VirtualBox or WMWare ESX or similar. At a conceptual level, everything is a file even a computer or disk is a file.
You can create a machine (windows / linux ) in minutes, shift it to any world region you want to in minutes and snapshot it without putting any load on the machine you are using - infrastructure handles that
There's lots of other stuff on AWS but the services we need to talk about are
- EC2 - Virtual and disks -- here's where you build your servers
- Route 53 - This is where you generate zone records for dns etc
- VPC - Virtual Private Cloud -- Use these to make sure other people don't get into your stuff
- RDS Relational Data service -- Consider it for our purposes to be a managed MySQL service on steroids
- Cloudwatch - this is the service that gives stats on everything and also notification services
EC2
Elastic Compute Cloud. Just what it says. Computers made of elastic Components in EC2
- AMIs - These are blueprints for a server. When you create your server(s) you have to use an AMI -- either yours or one of the many available.
Instances - An instance is a virtual computer which is an instance of an AMI
EBS - Elastic Block. This is the AWS equivalent of a hard disk. Little difference practically
- Snapshot - This is a point in time copy of an EBS instance used for backups and maybe pushing to another region for safe storage. Snapshots work in an incremental way. Two snapshots will not double the size but just the difference between the two points in time
- Elastic Load Balancers -- These are hooked up to your EC2 instances to share traffic amongst all servers registered with the ELB. They can also to the HTTPS bit leaving your servers to deal just with http. They are wired to health checks and you can easily set them up in a way that will look for unhealthy nodes and drop them out of service automatically. You can also hook up an autoscaler which automatically adds instances (copies of the original AMI) if load increases
- Elastic IP s (EIP) - EIPs are dedicated IP addresses that can be allocated when you want, instantly. You can then connect them to any instance or ELB as needed. If one of your servers breaks then you start up a new one from the AMI, delete the old one and then reconnect the same IP to the new server. Cool.
- Security Groups - These are simple to use firewalls. Whenver you use an AMI you have to nominate a security group. Two main types of security groups - ordinary and VPC. The VPC ones have much more flexibility
Route 53
Just like a DNS zone record on steroids. Does everything a zone record does and more. eg can do health checks on whatever is on the end of an A record and if necessary switch traffic somewhere else. We strongly advise using R53 for DNS if you are using AWS services. There are other things that R53 can do that other services can't
Virtual Private Cloud
VPCs are used to isolate from a network point of view a given set of AWS resources. Like a cloud within a cloud. Main sub components
- Subnets -- can be private or internet facing
- Intenet Gateways -- allow the connection of a subnet to the public internet
- Route tables - direct traffic within subnets
- Security groups -- like firewalls
RDS
Relational Data Service is a enterprise level purposed relational database server -- can be MySQL, Oracle etc. Can be run across availability zones -- AWS talk for different data centres. If one database server falls over then the other takes the load
CloudWatch
This is the monitoring and stats system that watches over AWS services.
- Includes notification services -- alarms etc
- Includes charting services for monitoring
- Includes triggers for [say] telling a load balancer to do something.
Many AWS elements are organized into regions US West, Calfornia, Singapore etc Regions are split into availability zones (AZs) AZs are data centers separated physically.
This HowTo is just to give the basics of AWS relevant to someone in the C5 community who wants to get a grip on how to get started.
Happy for critique and questions
If this is helpful let us know and we will get on with how to make it happen