What is Cloud Computing? What is a Cloud Provider?
Cloud computing refers to the delivery of on-demand computing services over the internet on a pay-as-you-go basis.
In simple words, Cloud computing is a service that lets you use any computing service such as a server, storage, networking, databases, and intelligence, right through your browser without owning anything. You can do anything you can think of unless it doesn’t require you to stay close to your hardware.
Cloud service providers are companies that establish public clouds, manage private clouds, or offer on-demand cloud computing components (also known as cloud computing services) like Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service(SaaS). Cloud services can reduce business process costs when compared to on-premise IT.
What are the advantages of cloud computing? Mention at least 3 advantages
- Pay as you go: you are paying only for what you are using. No upfront payments and payment stops when resources are no longer used.
- Scalable: resources are scaled down or up based on demand
- High availability: resources and applications provide seamless experience, even when some services are down
- Disaster recovery
True or False? Cloud computing is a consumption-based model (users only pay for for resources they use)
True
What types of Cloud Computing services are there?
IAAS - Infrastructure as a Service PAAS - Platform as a Service SAAS - Software as a Service
Explain each of the following and give an example:
- IAAS
- PAAS
- SAAS
What types of clouds (or cloud deployments) are there?
- Public - Cloud services sharing computing resources among multiple customers
- Private - Cloud services having computing resources limited to specific customer or organization, managed by third party or organizations itself
- Hybrid - Combination of public and private clouds
What are the differences between Cloud Providers and On-Premise solution?
In cloud providers, someone else owns and manages the hardware, hire the relevant infrastructure teams and pays for real-estate (for both hardware and people). You can focus on your business.
In On-Premise solution, it's quite the opposite. You need to take care of hardware, infrastructure teams and pay for everything which can be quite expensive. On the other hand it's tailored to your needs.
What is Serverless Computing?
The main idea behind serverless computing is that you don't need to manage the creation and configuration of server. All you need to focus on is splitting your app into multiple functions which will be triggered by some actions.
It's important to note that:
- Serverless Computing is still using servers. So saying there are no servers in serverless computing is completely wrong
- Serverless Computing allows you to have a different paying model. You basically pay only when your functions are running and not when the VM or containers are running as in other payment models
Can we replace any type of computing on servers with serverless?
Is there a difference between managed service to SaaS or is it the same thing?
What is auto scaling?
AWS definition: "AWS Auto Scaling monitors your applications and automatically adjusts capacity to maintain steady, predictable performance at the lowest possible cost"
Read more about auto scaling here
What is the difference between horizontal scaling and vertical scaling?
A "horizontally scalable" system is one that can increase capacity by adding more computers to the system. This is in contrast to a "vertically scalable" system, which is constrained to running its processes on only one computer; in such systems the only way to increase performance is to add more resources into one computer in the form of faster (or more) CPUs, memory or storage.
Horizontally scalable systems are oftentimes able to outperform vertically scalable systems by enabling parallel execution of workloads and distributing those across many different computers.
True or False? Auto Scaling is about adding resources (such as instances) and not about removing resource
False. Auto scaling adjusts capacity and this can mean removing some resources based on usage and performances.
How to secure instances in the cloud?
- Instance should have minimal permissions needed. You don't want an instance-level incident to become an account-level incident
- Instances should be accessed through load balancers or bastion hosts. In other words, they should be off the internet (in a private subnet behind a NAT).
- Using latest OS images with your instances (or at least apply latest patches)