topics/cloud/README.md
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. </b></details>
<details> <summary>What are the advantages of cloud computing? Mention at least 3 advantages</summary> <b>True </b></details>
<details> <summary>What types of Cloud Computing services are there?</summary> <b>IAAS - Infrastructure as a Service PAAS - Platform as a Service SAAS - Software as a Service </b></details>
<details> <summary>Explain each of the following and give an example: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. </b></details>
<details> <summary>What is Serverless Computing?</summary> <b>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:
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 </b></details>
<details> <summary>What is the difference between horizontal scaling and vertical scaling?</summary> <b>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. </b></details>
<details> <summary>True or False? Auto Scaling is about adding resources (such as instances) and not about removing resource</summary> <b>False. Auto scaling adjusts capacity and this can mean removing some resources based on usage and performances. </b></details>