EC2
The tldr is it's a virtual machine. Like getting a dedicated server but it's not. You do all the normal stuff with it such as picking an OS, doing all the config, sshing in and all of that stuff.
Types
There are tYpEs of these, because of course there are.
General purpose
Good for
- Application servers
- Gaming servers
- Backend for enterprise shit.
- Small/medium databases
Compute
When you need CPU, as if that wasn't obvious. It says you can also use these for web and gaming servers too, but iDeAl for hIgH pEfOrMaNcE (again, if it wasn't obvious) things. Tldr, if you need the cpu, use this.
Memory optimized
Good, I guess, if you're doing something that processes large bits of data in memory. Idk, I guess a big SQL command?
The examples it gives are things like real-time processing. Maybe like ATC?
Accelerated computing
Use accelerators (no shit) to make things more eFfIcEnT. The examples it gives are for floating-point numbers (so maths), graphics processing (idk, rendering?) and data pattern matching (idk, I guess like facial recognition?).
Storage optimized
Good for things that are doing lots of read/write things, or large data sets. Maybe also real-time? Idk it doesn't give examples.
Pricing
Cause, while AWS usually names things so you can tell what they are, other things not so much. You really do have to be an AWS salesman to remember all of this.
On-demand
For short term, irregular things that can't be interupted. Run until stopped. Maybe good for developing and testing things, like a staging enviorment I guess.
Savings plans
If you're usage is consistant, you can use a savings plan for 1 or 3 years.
Applies to the entire AWS bill (compute, storage, load balancers, etc).
Reserved instance
These are savings plans for compute instances. An old product they can't get rid of yet.
For example, you can reserve an EC2 instance with the lowest quality CPU on a "savings plan" which this would make this a standard reserved instance.
A Convertible reserved instance is like the above, but you can upgrade/downgrade the CPU. Both for 1 or 3 years.
A Scheduled reserved instance is also like the above two, but the need comes up on a weekly/daily/monthly schedule. Say a dedicated EC2 instance to do the weekly report on. For a 1 year plan.
Spot instances
For things with flexible start/end times that are ok with being interrupted. See this is what should be called 'on demand'.
The difference between this and on-demand is if your thing can be interupted, use spot. If not, use on-demand.
Dedicated hosts
This is where the server is fully yours. No virtual one like normal EC2.
This fucks me up because they use instances to mean type of servers, but this is a price model. But dedicated servers are a thing themselves.
So, this should, 100%, be a server (fuck you 'instance') type, not a price model term. If you look at any other hosting company it's set this way.
Scaling
I really don't need to explain this to myself. More demand? More servers. Less demand? Less servers?
Auto scaling
Does this for you - wait, hold your hats - automatically. And, get this, there is
Dynamic
Which is, as I said, more demand, more servers. Less demand, less servers.
Predictive
Predicted demand. Training doesn't say if this is done by you, or AWS.
Vertical or horizontal?
Vertical (or up/down) is adding more power. Horizontal is adding more of them.
ELB
Elastic Load Balancing. This is the load balancer. It does the balancing on the current instances and (I think) it tells the auto scaliler to actually boot up a new instance.
SNS
Publish/subscribe. Send messages between parts of a system. Push notifications, emails, text messages, order updates, all that kind of stuff.
SQS
Queue system. System 1 pushes to queue, queue holds them then passes to message 2. Good if 2 gets overloaded or stops.
Lambda
Like EC2, but you just upload the code and it runs when triggered. Meant for things under 15 minutes. You don't need to manage the underlying OS and such.
Elastic Container Service (ECS)
Run container (think, Docker) things. It's a management tool of sorts where you push to this (or EKS) and that pushes to EC2.
Elastic Kubernetes Service (EKS)
Like ECS, but for Kubernetes. It's a management tool of sorts where you push to this (or ECS) and that pushes to EC2.
Fargate
Serverless ECS.