IaaS vs PaaS vs SaaS: An Intro to Cloud Computing

We've finished building the application that we've wanted so we'll now focus on deployment. There's no use in having a great app if we can't deploy it for others to use! Before we dive into what form of deployment we're going to conduct, we'll talk about cloud computing and its importance when it comes to the world of deployment.

Project Source Code

Get the project source code below, and follow along with the lesson material.

Download Project Source Code

To set up the project on your local machine, please follow the directions provided in the README.md file. If you run into any issues with running the project source code, then feel free to reach out to the author in the course's Discord channel.

This lesson preview is part of the TinyHouse: A Fullstack React Masterclass with TypeScript and GraphQL - Part Two course and can be unlocked immediately with a \newline Pro subscription or a single-time purchase. Already have access to this course? Log in here.

This video is available to students only
Unlock This Course

Get unlimited access to TinyHouse: A Fullstack React Masterclass with TypeScript and GraphQL - Part Two, plus 70+ \newline books, guides and courses with the \newline Pro subscription.

Thumbnail for the \newline course TinyHouse: A Fullstack React Masterclass with TypeScript and GraphQL - Part Two

Now that we've finished building the application that we've wanted, let's focus on deployment. There's no use in having a great app if we can't deploy it for others to use. Now before we dive into what form of deployment we're going to actually conduct , let's talk about an important topic that might be obvious to some and pretty new to others, and that is cloud computing. Now, Microsoft's documentation or Microsoft Azure's documentation actually on cloud computing has a very good paragraph in introducing what this means. And essentially says that cloud computing is the delivery of computing services , including servers, storage, databases, networking, software, analytics, and intelligence over the internet, or that is otherwise known as the cloud, to offer faster innovation, flexible resources and economies of scale. Why is the topic of cloud computing important within the concept of deployment? This is because before cloud computing became widely adopted, if we wanted to deploy an application over the web, we most likely had to buy all the necessary hardware, such as the CPU, the RAM, the hard drive, the routers, etc. We had to install the hardware. We had to set up the networking and security. We also had to install an operating system that we wanted to use, and we had to install any other required software to actually run our application. And this is only some of the things that needed to be understood, and only when all of these steps are completed and made, then the ability to host an application on the internet is made possible. Now, what happens if the CPU, RAM, or hard drive on site or any other hardware fails? The application that is deployed would become offline. What happens if the app becomes very, very popular, and the hardware on site cannot keep up? The app may become sluggish, and it will have to buy more hardware to keep support. What if there is a usage peak at certain hours of the day? We'll have to buy hardware just to handle that peak, and perhaps for the remainder of the day, the hardware may not be fully utilized. And this is just some examples and some discussions of the things that need to be kept in mind, if you wanted to actually deploy an application with on-site equipment. With cloud computing, a lot of these concerns are addressed. For the same reasons we're hosting our database on the cloud, with MongoDB Atlas, we're going to deploy our application onto the cloud. By deploying our app onto the cloud, we'll have the following advantages, such as no hardware maintenance to perform, higher reliability and availability, we can configure our app to have multiple instances deployed around the globe. This minimizes latency and ensures our app stays online, even if one instance is to fail, easier scalability, there's no hardware upgrades to perform, so scaling is often done with a few button clicks. And for some services, like AWS or Google Cloud Platform, we can even choose to scale automatically depending on real-time load. And a lot of these factors often come into play and lead to lower cost as well. With that said, let's gather and explain some important definitions. If you've ever looked into cloud computing before, you've probably heard of one of these terms, infrastructure as a service, platform as a service, and software as a service. Infrastructure as a service essentially refers to having infrastructure provided to us as a service. So instead of buying racks of hardware, maintaining and updating that hardware, storing that hardware somewhere locally, we can rent this infrastructure, in other words, rent these servers or computation power. Amazon and Google, particularly AWS and Google Cloud, have infrastructure as a service solutions, with which we're able to actually rent some of their infrastructure. Now, however, keep in mind, with an infrastructure as a service solution, the developers, or in other words, we will be responsible for installing all the software to run the app. With platform as a service, we get everything from an infrastructure as a service solution, plus all the software required to run an application. In other words, here we won't have to worry about installing operating system like Linux, or the drivers or any runtime environments. All we'll have to do is build and develop an application and upload it to a platform as a service. However, compared with an infrastructure as a service approach, there's less customization here. Lastly, you've probably heard of software as a service. With software as a service, instead of software being installed onto a computer , the software resides on the cloud. So someone else has a physical server that is running and hosting a software, and the users or we will just be accessing a copy of it. Now, as an example, the local applications on, let's say, my Mac computer is actually physically installed onto my computer. However, if we go to a certain application on the browser, like Google Maps, for example, we're accessing an application hosted on Google server. So in this case, Google Maps, at least the browser version, is a software as a service. It's provided to us as a service through a web-based application. For infrastructure as a service or platform as a service, the end user is the developer or the programmer. These solutions are targeted towards the people building the application. For software as a service, the end user is the person that's going to be using the deployed application. So with these definitions in mind, we'll be using a platform as a service, Heroku, to deploy our own software as a service application, TinyHouse. Quick caveat, software as a service or the term software as a service is sometimes used differently in different contexts. You might see the term SAS or software as a service for applications where the software is only provided as a service within a recurring model, so perhaps on a monthly subscription or a daily subscription, etc. In our context, we're basically just seeing a software as a service application is an app that's essentially provided as a service to the end user. [BLANK_AUDIO]