Foundations of Cloud Computing and AWS for Cloud and DevOps Engineers
Learning path for the AWS Cloud Practitioner exam
📝Introduction
In this post, we will cover the basic Foundations of Cloud Computing and AWS.
📝What is Cloud Computing?
It is a delivery of computing services over the Internet.
These are the elements of Cloud Computing:
Compute (i.e. EC2, Lambda)
Networking (i.e. VPC, Direct Connect)
Storage (i.e. S3, EBS)
Analytics (i.e. Athena, Redshift)
Development (i.e. Cloud9, CodeCommit)
Security (i.e. IAM, Macie)
Databases (i.e. RDS, DynamoDB)
📝Usage of Cloud Computing
Pay only when you access the resources and only for what you use.
Types of usage:
On-Demand -> No Long-term commitments or Upfront payments
Pay-As-You-Go -> Pay by the hour or second for only what you use
📝6 Advantages of Cloud Computing
Go Global in minutes -> To deploy applications around the world at the click of a button
Stop spending money running and maintaining DCs -> To be focused on building applications instead of Managing HW
Benefit from massive Economies of Scale -> To get volume discounts with the use of lower pay-as-you-go prices
Increase Speed and Agility -> Innovate more quickly and deliver applications faster
Stop Guessing Capacity -> Capacity matched exactly to the demand
Trade Capital expose for variables expense -> Pay for what you use instead of making huge Upfront investments
📝Benefits of Cloud Computing
High Availability(HA) -> Designed to operate continuously without failure for a long time / Avoid loss of service by reducing or managing failures
Elasticity -> Do not have to plan ahead of time how much capacity you need / Provision only what you need and then grow and shrink based on demand
Agility -> Increased agility / Innovate faster
Durability -> Long-term data protection / Data will remain intact without corruption
📝Capex vs. Opex
Capex -> Capital Expenditures are Upfront purchases toward fixed assets
Opex -> Operating Expenses are funds used to run day-to-day Operations
📝Cloud Computing Models
There are 3 common models:
IaaS (Infrastructure as a Service) -> Cloud provider manages IT infrastructures such as storage, server and networking resources, and delivers them to subscriber organizations via virtual machines accessible through the internet (i.e. AWS EC2, GCP Compute Engine and Azure VMs).
IaaS architecture -> Cloud provider hosts the infrastructure components that are traditionally present in an on-premises data centre. This includes servers, storage and networking hardware, as well as the virtualization or hypervisor layer.
IaaS providers also supply a range of services to accompany those infrastructure components. These can include the following:
detailed billing;
monitoring;
log access;
security;
load balancing;
clustering; and
storage resiliency, such as backup, replication and recovery.
These services are increasingly policy-driven, enabling IaaS users to implement greater levels of automation and orchestration for important infrastructure tasks.
PaaS (Platform as a Service) -> Third-party provider delivers hardware and software tools to users over the internet. Usually, these tools are needed for application development. A PaaS provider hosts the hardware and software on its own infrastructure. As a result, PaaS frees developers from having to install in-house hardware and software to develop or run a new application (i.e. AWS Lambda, Google App Engine, Azure CDN).
PaaS architecture -> Does not replace a company's entire IT infrastructure for software development. It is provided through a cloud service provider's hosted infrastructure. Users most frequently access the offerings through a web browser. PaaS can be delivered through public, private and hybrid clouds to deliver services such as application hosting and Java development.
Other PaaS services include the following:
development team collaboration;
application design and development;
application testing and deployment;
web service integration;
information security; and
database integration.
Users will normally have to pay for PaaS on a per-user basis. However, some providers charge a flat monthly fee for access to the platform and its applications.
SaaS (Software as a Service) -> It is a software distribution model in which a cloud provider hosts the entire infrastructure and applications, and makes them available to end users over the internet (i.e. Amazon Chime, Office365, Gmail).
SaaS architecture -> SaaS applications and services typically use a multi-tenant approach, which means a single instance of the SaaS application will be running on the host servers, and that single instance will serve each subscribing customer or cloud tenant. The application will run on a single version and configuration across all customers, or tenants. Though different subscribing customers will run on the same cloud instance with common infrastructure and platform, the data from different customers will still be segregated.
SaaS removes the need for organizations to install and run applications on their own computers or in their own data centres. This eliminates the expense of hardware acquisition, provisioning and maintenance, as well as software licensing, installation and support.
Other benefits of the SaaS model include:
Flexible payments -> Rather than purchasing software to install, or additional hardware to support it, customers subscribe to a SaaS offering. Transitioning costs to a recurring operating expense allows many businesses to exercise better and more predictable budgeting. Users can also terminate SaaS offerings at any time to stop those recurring costs.
Scalable usage -> Cloud services like SaaS offer high Vertical scalability, which gives customers the option to access more or fewer services or features on demand.
Automatic updates -> Rather than purchasing new software, customers can rely on a SaaS provider to automatically perform updates and patch management. This further reduces the burden on in-house IT staff.
Accessibility and persistence -> Since SaaS vendors deliver applications over the internet, users can access them from any internet-enabled device and location.
Customization -> SaaS applications are often customizable and can be integrated with other business applications, especially across applications from a common software
Private Clouds -> It is related to internal databases and local network
Also called "on-premises"
Exists in your internal data center
Does not offer the advantages of cloud computing
Public Clouds ->It is related to having all infrastructure and applications on the internet
Offered by Cloud Providers (CSPs)
You are not responsible for the physical hardware
Provides all the advantages of cloud computing
Hybrid Clouds -> A hybrid cloud is a combination of public and private clouds (i.e. AWS Direct Connect)
Sample architecture for a hybrid solution
Highly sensitive data stored locally
Web application runs on AWS infrastructure
AWS provides tools so they talk to each other
📝Leveraging the AWS Global Infrastructure
Region -> A Region is a physical location. AWS logically groups its Regions into geographic locations.
Region Characteristics
Fully Independent and Isolated. If one Region is impacted, the others will not be.
Resource and Service Specific. Regions are isolated, and resources are not automatically replicated across them.
A Region is global and has 2 or more AZs.
Regions are geographically isolated locations around the globe.
Availability Zones -> Availability Zones (AZs) consist of one or more physically separated data centres, each with redundant power, networking, and connectivity, housed in separate facilities.
Characteristics of AZs
AZs are connected among themselves in a single Region
Physically separated
Connected through low-latency links
Fault-tolerant
Allows for high availability
Multi-AZ deployments provide high availability. Systems that are highly available are dependable enough to operate continuously without failure.
An AZ has multiple data centres. You can think of an AZ as a collection of data centres.
Edge Locations -> They are cache content for fast delivery to your users.
- Edge locations ensure low latency by placing content closer to users. There are more edge locations than Regions and AZs.
📝Exploring Your Amazon Web Services (AWS) Account
AWS Management Console -> To allow you to access your AWS account and manage applications running in your account from a web browser.
The console makes it easy to search for and find services.
The root user should be protected with MFA
There are certain things that only the root user can do.
AWS Command Line Interface (CLI) -> To allow you to access your AWS account through a terminal or command window.
Sometimes new features are available via the CLI before the console.
The CLI is mainly used by developers.
Understand what Is stored on your local machine to access AWS via the CLI.
Programmatic Access -> Programmatic access provides access to your AWS resources through an application or a tool like the CLI.
Using CLI to manage AWS services from a terminal session on your laptop.
AWS services can be accessed from application code using SDKs and programmatic calls.
SDKs allow you to access AWS services from popular programming languages like Java, Python, C#, and many more.
Thank you for reading. I hope you were able to understand and learn something helpful from my blog.
Please follow me on Hashnode and on LinkedIn franciscojblsouza