Cloud Computing is the delivery of IT resources over the Internet, the cloud is like a virtual data center accessible via the Internet
Pay as you go - you pay only for what you use and only when your code runs
Autoscaling - the number of active servers can grow or shrink based on demand
Serverless - allows you to write and deploy code without having to worry about the underlying infrastructure
Benefits:
- stop guessing about capacity
- avoid huge capital investments up front
- pay for only what you use
- scale globally in minutes
- deliver faster
Infrastructure-as-a-Service (IaaS) - the provider supplies virtual server instances, storage, and mechanisms for you to manage servers
Platform-as-a-Service (PaaS) - a platform of development tools hosted on a provider's infrastructure
Software-as-a-Service (SaaS) - a software application that runs over the Internet and is managed by the service provider
Public Cloud - a public cloud makes resources available over the Internet to the general public
Private Cloud - a private cloud is a proprietary network that supplies services to a limited number of people
Hybrid Cloud - a hybrid model contains a combination of both a public and a private cloud
Logging provides visibility into your cloud resources and applications. For applications that run in the cloud, you will need access to logging and auditing services to help you proactively monitor your resources and applications
Cloud Trail allows you to audit (or review) everything that occurs in your AWS account. Cloud Trail does this by recording all the AWS API calls occurring in your account and delivering a log file to you
Features:
- who has logged in
- services that were accessed
- actions performed
- parameters for the actions
- responses returned
Cloud Watch is a service that monitors resources and applications that run on AWS by collecting data in the form of logs, metrics, and events
Features:
- collect and track metrics
- collect and monitor log files
- set alarms and create triggers to run your AWS resources
- react to changes in your AWS resources
Infrastructure as Code allows you to describe and provision all the infrastructure resources in your cloud environment. You can stand up servers, databases, runtime parameters, resources, etc. based on scripts that you write. Infrastructure as Code is a time-saving feature because it allows you to provision (or stand up) resources in a reproducible way
AWS Cloud Formation allows you to model your entire infrastructure in a text file template allowing you to provision AWS resources based on the scripts you write
Region - a region is considered a geographic location or an area on a map Availability Zone - an availability zone is an isolated location within a geographic region and is a physical data center within a specific region Edge Location - an edge location is as a mini-data center used solely to cache large data files closer to a user's location
Notes:
- there are more Availability Zones (AZs) than there are Regions
- there should be at least two AZs per Region
- each region is located in a separate geographic area
- AZs are distinct locations that are engineered to be isolated from failures
AWS is responsible for security OF the cloud, we are responsible for security IN the cloud
AWS is responsible for:
- securing edge locations
- monitoring physical device security
- providing physical access control to hardware/software
- database patching
- discarding physical storage devices
You are responsible for:
- managing AWS Identity and Access Management (IAM)
- encrypting data
- preventing or detecting when an AWS account has been compromised
- restricting access to AWS services to only those users who need it
Elastic Cloud Compute or EC2 is a foundational piece of AWS' cloud computing platform and is a service that provides servers for rent in the cloud
Pricing Options:
- On Demand - pay as you go, no contract
- Dedicated Hosts - you have your own dedicated hardware and don't share it with others
- spot - you place a bid on an instance price, if there is extra capacity that falls below your bid, an EC2 instance is provisioned, if the price goes above your bid while the instance is running, the instance is terminated
- Reserved Instances - you earn huge discounts if you pay up front and sign a 1-year or 3-year contract
Elastic Block Store (EBS) is a storage solution for EC2 instances and is a physical hard drive that is attached to the EC2 instance to increase storage
Virtual Private Cloud (VPC) allows you to create your own private network in the cloud. You can launch services, like EC2, inside of that private network. A VPC spans all the Availability Zones in the region
VPC allows you to control your virtual networking environment, which includes:
- IP address ranges
- subnets
- route tables
- network gateways
AWS Lambda provides you with computing power in the cloud by allowing you to execute code without standing up or managing servers.
- the code you run on AWS Lambda is called a “Lambda function”
- Lambda code can be triggered by other AWS services
- AWS Lambda supports Java, Go, PowerShell, Node.js, C#/.NET, Python, and Ruby
- there is a Runtime API that allows you to use other programming languages to author your functions
- Lambda code can be authored via the console
Elastic Beanstalk is an orchestration service that allows you to deploy a web application at the touch of a button by spinning up (or provisioning) all of the services that you need to run your application. Elastic Beanstalk can be used to deployed web applications developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker. You can run your applications in a VPC.
Amazon Simple Storage Service (S3) is an object storage system in the cloud. S3 offers several storage classes, which are different data access levels for your data at certain price points
Storage Classes:
- S3 Standard
- S3 Glacier
- S3 Glacier Deep Archive
- S3 Intelligent-Tiering
- S3 Standard Infrequent Access
- S3 One Zone-Infrequent Access
DynamoDB is a NoSQL document database service that is fully managed. Unlike traditional databases, NoSQL databases, are schema-less. Schema-less simply means that the database doesn't contain a fixed (or rigid) data structure
- DynamoDB can handle more than 10 trillion requests per day
- DynamoDB is serverless as there are no servers to provision, patch, or manage
- DynamoDB supports key-value and document data models
- DynamoDB synchronously replicates data across three AZs in an AWS Region
- DynamoDB supports GET/PUT operations using a primary key
RDS (Relational Database Service) is a service that aids in the administration and management of databases. RDS assists with database administrative tasks that include upgrades, patching, installs, backups, monitoring, performance checks, security, etc.
Redshift is a cloud data warehousing service to help companies manage big data. Redshift allows you to run fast queries against your data using SQL, ETL, and BI tools. Redshift stores data in a column format to aid in fast querying
- Redshift delivers great performance by using machine learning
- Redshift Spectrum is a feature that enables you to run queries against data in Amazon S3
- Redshift encrypts and keeps your data secure in transit and at rest
- Redshift clusters can be isolated using Amazon Virtual Private Cloud (VPC)
A Content Delivery Network (CDN) speeds up delivery of your static and dynamic web content by caching content in an Edge Location close to your user base.
CloudFront is used as a global content delivery network (CDN). Cloud Front speeds up the delivery of your content through Amazon's worldwide network of mini-data centers called Edge Locations
- amazon countinously adds new Edge Locations
- cloudFront ensures that end-user requests are served from the closest edge location
- cloudFront works with non-AWS origin sources
- you can use GeoIP blocking to serve content (or not serve content) to specific countries
- cache control headers determine how frequently CloudFront needs to check the origin for an updated version your file
- the maximum size of a single file that can be delivered through Amazon CloudFront is 20 GB
As adoption of cloud services has increased, so has the need for increased security in the cloud. The great thing about cloud security is that it not only protects data, it also protects applications that access the data. Cloud security even protects the infrastructure (like servers) that applications run on
AWS Shield is a managed DDoS (or Distributed Denial of Service) protection service that safeguards web applications running on AWS. AWS Shield is a service that you get "out of the box", it is always running (automatically) and is a part of the free standard tier. If you want to use some of the more advanced features, you'll have to utilize the paid tier
AWS WAF (AWS Web Application Firewall) provides a firewall that protects your web applications. WAF can stop common web attacks by reviewing the data being sent to your application and stopping well-known attacks
- WAF can protect web sites not hosted in AWS through Cloud Front.
- you can configure CloudFront to present a custom error page when requests are blocked
Identity & Access Management (IAM) is an AWS service that allows us to configure who can access our AWS account, services, or even applications running in our account. IAM is a global service and is automatically available across ALL regions
Networks reliably carry loads of data around the globe allowing for the delivery of content and applications with high availability. The network is the foundation of your infrastructure
Cloud networking includes:
- network architecture
- network connectivity
- application delivery
- global performance
- delivery
Route 53 is a cloud domain name system (DNS) service that has servers distributed around the globe used to translates human-readable names like www.google.com into the numeric IP addresses like 74.125.21.147
Features:
- scales automatically to manage spikes in DNS queries
- allows you to register a domain name (or manage an existing)
- routes internet traffic to the resources for your domain
- checks the health of your resources
- allows you to route users based on the user’s geographic location.
One of the main benefits of the cloud is that it allows you to stop guessing about capacity when you need to run your applications. Sometimes you buy too much or you don't buy enough to support the running of your applications. With elasticity, your servers, databases, and application resources can automatically scale up or scale down based on load
EC2 Auto Scaling is a service that monitors your EC2 instances and automatically adjusts by adding or removing EC2 instances based on conditions you define in order to maintain application availability and provide peak performance to your users
Features:
- automatically scale in and out based on needs
- included automatically with Amazon EC2
- automate how your Amazon EC2 instances are managed
- EC2 Auto Scaling adds instances only when needed, optimizing cost savings
- EC2 predictive scaling removes the need for manual adjustment of auto scaling parameters over time
Elastic Load Balancing automatically distributes incoming application traffic across multiple servers
Elastic Load Balancer is a service that:
- balances load between two or more servers
- stands in front of a web server
- provides redundancy and performance
- elastic Load Balancing works with EC2 Instances, containers, IP addresses, and Lambda functions
- you can configure Amazon EC2 instances to only accept traffic from a load balancer
There are often times that users of your applications need to be notified when certain events happen. Notifications, such as text messages or emails can be sent through services in the cloud. The use of the cloud offers benefits like lowered costs, increased storage, and flexibility
Amazon Simple Notification Service (SNS) is a cloud service that allows you to send notifications to the users of your applications. SNS allows you to decouple the notification logic from being embedded in your applications and allows notifications to be published to a large number of subscribers
Features:
- SNS uses a publish/subscribe model
- SNS can publish messages to Amazon SQS queues, AWS Lambda functions, and HTTP/S webhooks
- SNS Topic names are limited to 256 characters
- a notification can contain only one message
A queue is a data structure that holds requests called messages. Messages in a queue are commonly processed in order, first in, first out (or FIFO). Messaging queues improve performance, scalability and user experience
Amazon Simple Queue Service (SQS) is a fully managed message queuing service that allows you to integrate queuing functionality in your application. SQS offers two types of message queues: standard and FIFO
Features:
- FIFO queues support up to 300 messages per second
- FIFO queues guarantee the ordering of messages
- standard queues offer best-effort ordering but no guarantees
- standard queues deliver a message at least once, but occasionally more than one copy of a message is delivered
Enterprises are adopting container technology at an explosive rate. A container consists of everything an application needs to run: the application itself and its dependencies (e.g. libraries, utilities, configuration files), all bundled into one package. Each container is an independent component that can run on its own and be moved from environment to environment
ECS is an orchestration service used for automating deployment, scaling, and managing of your containerized applications. ECS works well with Docker containers by:
- launching and stopping Docker containers
- scaling your applications
- querying the state of your applications
Features:
- you can schedule long-running applications, services, and batch processeses using ECS
- docker is the only container platform supported by Amazon ECS
Infrastructure as Code allows you to describe and provision all the infrastructure resources in your cloud environment. You can stand up servers, databases, runtime parameters, resources, etc. based on scripts that you write. Infrastructure as Code is a time-saving feature because it allows you to provision (or stand up) resources in a reproducible way
AWS Cloud Formation allows you to model your entire infrastructure in a text file template allowing you to provision AWS resources based on the scripts you write
The AWS CLI (Command Line Interface) allows you to access and control services running in your AWS account from the command line. To use the CLI, simply download, install, and configure it