1. Directing traffic with Elastic Load Balancing
1.1. Elastic Load Balancing automatically distributes incoming application traffic across multiple resources, such as Amazon EC2 instances.
1.1.1. Although ELB and EC2 Auto Scaling are separate services, they work together to help ensure that applications running on EC2 can provide high performance and availability.
2. Messaging and Queuing
2.1. Coupling
2.1.1. In a microservices approach, application components are LOOSELY COUPLED.
2.1.2. Two services facilitate application integration: Amazon Simple Notification Service (Amazon SNS) and Amazon Simple Queue Service (Amazon SQS).
2.2. Amazon Simple Notification Service (Amazon SNS)
2.2.1. Amazon Simple Notification Service (Amazon SNS) is a publish/subscribe PUB/SUB service.
2.2.1.1. Using Amazon SNS topics, a publisher publishes messages to subscribers.
2.3. Amazon Simple Queue Service (Amazon SQS)
2.3.1. Amazon Simple Queue Service (Amazon SQS) is a message queuing MQ service.
2.3.1.1. You can send, store, and receive messages between software components, without losing messages or requiring other services to be available.
3. Additional compute services
3.1. Compute Options
3.1.1. Functions
3.1.1.1. Event Driven Compute Service
3.1.2. Containers
3.1.2.1. Containers provide you with a standard way to package your application's code and dependencies into a single object.
3.1.3. Virtual Machines
3.2. Containers
3.2.1. Amazon Elastic Container Service (Amazon ECS)
3.2.1.1. AWS Orchestrator for Containers
3.2.1.1.1. ECS
3.2.2. Amazon Elastic Kubernetes Service (Amazon EKS)
3.2.2.1. Is a fully managed service that you can use to run Kubernetes on AWS.
3.2.2.1.1. EKS
3.2.3. AWS Fargate
3.2.3.1. AWS Fargate is a serverless compute engine for containers.
3.3. Functions
3.3.1. AWS Lambda
3.3.1.1. AWS Lambda is a service that lets you run code without needing to provision or manage servers.
3.3.1.1.1. Event Driven Application
4. Amazon Elastic Compute Cloud (EC2)
4.1. Virtual Machines
4.1.1. Overview
5. Amazon EC2 instance types
5.1. GENERAL purpose instances
5.1.1. General purpose instances provide a BALANCE of compute, memory, and networking resources.
5.1.2. application servers
5.1.2.1. gaming servers
5.1.2.1.1. backend servers for enterprise applications
5.1.3. (T-type and M-type)
5.2. COMPUTE optimized instances
5.2.1. Compute optimized instances are ideal for COMPUTE-BOUND applications that benefit from high-performance processors.
5.2.2. high-performance web servers
5.2.2.1. compute-intensive applications servers
5.2.2.1.1. dedicated gaming servers
5.2.3. (C-type)
5.3. MEMORY optimized instances
5.3.1. Memory optimized instances are designed to deliver fast performance for workloads that process LARGE DATASETS in memory.
5.3.2. high-performance database
5.3.2.1. real-time processing of a large amount of unstructured data
5.3.3. (R-type, X-type and Z-type)
5.4. ACCELERATED computing instances
5.4.1. Accelerated computing instances use hardware accelerators, or coprocessors such as FLOATING-POINT number calculations
5.4.2. graphics applications
5.4.2.1. game streaming
5.4.2.1.1. application streaming
5.4.3. (F-type, G-type and P-type)
5.5. STORAGE optimized instances
5.5.1. Storage optimized instances are designed for workloads that require HIGH, SEQUENTIAL READ and WRITE access to large datasets on local storage.
5.5.2. distributed file systems
5.5.2.1. data warehousing applications
5.5.2.1.1. high-frequency online transaction processing (OLTP) systems
5.5.3. (D-type, H-type and I-type)
6. Amazon EC2 pricing
6.1. On-Demand Instances
6.1.1. On-Demand Instances are ideal for SHORT-TERM, irregular workloads that cannot be interrupted.
6.1.2. developing and testing applications
6.1.2.1. running applications that have unpredictable usage patterns
6.2. Savings Plan
6.2.1. Savings Plans enable you to reduce your compute costs by committing to a consistent amount of compute usage for a 1-YEAR or 3-YEAR term.
6.2.2. This term commitment results in savings of up to 72% over On-Demand costs.
6.3. Reserved Instances (RI)
6.3.1. Reserved Instances are a billing discount applied to the use of On-Demand Instances in your account.
6.3.2. Standard Reserved Instances for a 1-year or 3-year term
6.3.3. Convertible Reserved Instances for a 1-year or 3-year term
6.3.4. Scheduled Reserved Instances for a 1-year term
6.4. Spot Instances
6.4.1. Spot Instances are ideal for workloads with flexible start and end times, or that can withstand interruptions.
6.4.2. Spot Instances use unused Amazon EC2 computing capacity and offer you cost savings at up to 90% off of On-Demand prices.
6.5. Dedicated Hosts
6.5.1. Dedicated Hosts are physical servers with Amazon EC2 instance capacity that is fully dedicated to your use.
6.5.2. Dedicated Hosts are the most expensive.
6.5.2.1. Hardware bound license's can be reused on Dedicated Hosts
7. Scaling Amazon EC2
7.1. Amazon EC2 Auto Scaling enables you to automatically add or remove Amazon EC2 instances in response to changing application demand.
7.2. Approaches
7.2.1. Dynamic scaling responds to changing demand.
7.2.2. Predictive scaling automatically schedules the right number of Amazon EC2 instances based on predicted demand