The Cloud is often synonymous with the internet. Perhaps more accurately, it is the infrastructure that powers the internet, i.e., the networking, computers, and to a certain extent, the software.
Cloud providers offer internet-connected infrastructure that you can use to power your own applications. In other words, Cloud providers remove the need for you to purchase and maintain the hardware yourself.
Many organizations use cloud platforms such as Microsoft's Azure, Amazon's AWS, or Google Cloud, to power not just externally facing applications but also internally facing solutions.
Cloud Service Models
Cloud services are generally broken down into three areas - Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). More recently, Functions as a Service (FaaS) and Serverless have started to become more prevalent, however in many ways they are more like nuances of the original 3.
A common distinction between these areas is the responsibility you have for maintenance, often referred to as the responsibility matrix.
If we consider an on-premises environment, you are responsible for everything - i.e., you are responsible for the physical hardware, OS, security, applications, and data.
Infrastructure as a Service represents the first move away from full control in that the need to look after the physical data centre, including the OS of the virtual hosting infrastructure, is moved from you to the cloud vendor, in this case, Microsoft. IaaS components typically include the setup and configuration of virtual networks or VNETs, virtual machines, and to a certain extent, storage.
With virtual machines, you are responsible for patching the guest OS and everything on top. However, Azure manages the underlying physical host.
Platform as a Service removes the management of the underlying operating system and provides the services you need to build your applications without needing to worry about OS patching, maintenance, security updates, etc. Common examples are Azure Web Apps and Azure SQL - in both cases, Microsoft provides these as services that you can simply deploy your code too. The cloud vendor also worries about availability - if the underlying hardware fails, the vendor will automatically move your services over to healthy servers.
A common feature with PaaS is that you generally define the amount of CPU and RAM you want your service to use. Because of this, you are committing to a minimal amount of spend whether the service is in use or not.
With Serverless, or Functions as a Service, removes any concept of the underlying compute. In other words, you don't define any RAM or CPU, instead you pay per execution or for the amount of time the service is running. If the service isn't used, you don't pay anything, this makes such services the most cost efficient options. Some components, such as Azure Functions or Azure SQL, can be serverless or PaaS - i.e. you can choose to have a set amount of resources provisioned or have it completely dynamic.
Finally, Software as a Service is a fully managed service. Office 365 is a typical SaaS application. With SaaS, the vendor is completely responsible for everything, including the application itself. Because of this, we won't be covering any SaaS components in these tutorials.