What is Cloud Computing? Cloud refers to the Internet. Cloud computing usually means services that are provided over the Internet. For example, Dropbox is a cloud company. You can upload files to Dropbox, and you can access them from anywhere.
Dropbox buys the servers, network cables, and disks. You simply go to their website, and you can start to store your files in the cloud. You pay Dropbox based on how much you store. The terms SaaS, PaaS, and Iaas are different classifications of cloud computing. SaaS stands for Software As A Service.
It generally refers to a full service solution. Some examples are: Dropbox, Gmail, and Salesforce.
SAS is intended to be used by the general public. IaaS is another class of cloud computing. IaaS stands for Infrastructure As A Service.
Unlike a SaaS, Infrastructure As A Service is intended to be used by IT departments or software developers. Infrastructure here refers to IT infrastructure, such as machines and networking switches. Except in this case, we are not talking about actual machines but virtual machines. Virtual machine is conceptually a computer within a physical machine. You can log into the virtual machine, install software, and run your application.
It behaves just like an actual machine, but it is actually just a program run on a physical machine. Users can use Infrastructure As A Service to build web application. The provider maintains a physical server and network connection. The user maintains the virtual machine and anything within it, including middleware, runtime, web framework, and the business logic. Since users have access to a virtual machine, they can install any software that they want.
They can also set up any network topology that they want. Developers have a lot of flexibility. At the same time they also need to show shoulder a lot of responsibilities.
Developers need to install all the software dependencies that they need. For example, they may need to install Python, Java, any web framework, and databases.
In addition, developers need to set up monitoring to check the application they are running is working correctly. Further, they need to set up alerting service to notify themselves if anything goes wrong. They also need to set up release process to roll out new versions of their application. They are also responsible for any misconfigurations. Some of the examples of IaaS providers are Amazon EC2, Google Compute Engine, and Digital Ocean.
To lighten the load on developers, people invented a third category of cloud computing: PaaS. Platform As A Service is also intended for software developers.
In PaaS, the providers maintain not only the physical infrastructure, but a large portion of the virtual infrastructure as well. For example, PaaS providers will have installed all the necessary middleware and runtime. They also have automated process for release, rollout, and some basic monitoring.
The developers just need to build their web application and upload it to pass provider. The developers can focus more of their time on building their application rather than spend time on maintenance. It is arguably faster to productionize an application because most of the tools are already built.
The downside is that developers do not have much flexibility on a software stack. They can only use the stack that the platform supports.
If they want to do some custom modification, it is very difficult or impossible to do. In addition, path may also be more expensive than IAS when scaling up. Some examples of PaaS providers include AWS Beanstalk and Google App Engine. How do you choose between these three options? This answer really depends on your use case.
SaaS is very good for specialized use case. For example, using Gmail or slack for internal communication will work very nicely. However, SaaS may not work well outside of their intended purposes. For example, YouTube won’t work well as a messaging app. In addition, some services are charged by subscription.
You may be charged even without using it. PaaS is intended for developers to build an application. It is good when the web application’s language and framework is supported by the provider. However, if your application needs to grow beyond that, then PaaS becomes a limitation. For example, say you are using Amazon’s Beanstalk to build a dashboard.
If you want to use Java with Tomcat, then it will be a good fit because Beanstalks supports it. However, if you use Scala, then Beanstalk won’t work because Scala is not supported. Infrastructure-as-a-Service is also intended for developers to build application.
It is great when a web application doesn’t fit any standard PaaS framework. For example, a web crawler that periodically scrapes a news website, and has a machine learning model to analyze the result.
However, if your application is sufficiently simple, IAS may bring unnecessary configuration headache than you need. Lastly, sometimes you may hear the term “on-prem”. This stands for on-premise. This means the hardware are physically owned and operated by the company. It is the opposite of cloud computing.
Before cloud became ubiquitous, on-prem was the standard for many companies. Today, there are still many companies using on-prem due to legacy reasons or security reasons. For example, some financial institutions are required to keep customers data on-prem to keep customer’s data safe. Thanks for watching! Remember, don’t play with fire.