December 29th, 2020
In this post, I'll simply try to merge some resources online about the topic "Cloud Computing" at the most basic level possible.
In the scope of computer science, cloud means servers that are accessed over the Internet. By using cloud computing companies can get rid of the responsibility of running servers at different levels.
Cloud computer services are provided by several big providers and learning how to choose between those apps is a topic on its own, this post focuses on "Cloud Computing Types" only.
The thing that separates cloud computing types from each other is basically the amount of work you do when you use a cloud computing service. A clearer explanation could be like that; cloud computing types differ from each other by the amount of the traditional server work you gave someone else by using cloud computing.
The picture below explains that logic visually. It's taken from the book "Go in Practise Includes 70 Techniques".
The following parts of the tutorial will cover my take and simplification of how those covered in the book that is mentioned above.
As you can see in the picture above all three types of cloud computing are just
simplified versions of the Traditional Server/Rack approach.
IaaS is basically just you are deploying a VM (Virtual Machine) image to a cloud provider instead of your machine. IaaS is the most basic cloud service you can possibly get in terms of passing your work to the cloud.
IaaS approach can provide a fully-fledged and flexible VMs for relatively smaller costs. Yet it comes with several downsides and all downsides are basically coming from the same trade-off, flexibility vs simplicity. What that means is basically when you deploy a VM server management, security, deployment processes and other matters like the traffic management becomes your duty to fulfill.
Digital ocean, Amazon Web Services EC2 can be counted as some of the major IaaS providers.
PaaS is a service that allows users to deploy their code directly without using any sort of VMs or their own server. The user gets rid of all the server and most of the security work, by choosing PaaS platforms because those platforms handle all the scaling and load balancing work automatically.
The 2 biggest downsides of choosing PaaS are the limited numbers of languages that you can work with that way and the higher pricing compare to IaaS solutions. Also, one other thing is you can, for most cases, only deploy web applications that way.
Google App Engine, Heroku can be counted as some of the major PaaS providers.
I'll use some parts of the definition of the book directly because I found it pretty straight forward and it matches well with the visual I'm about to provide much better than my explanation.
Say your application needs a database to store data in. You could create a cluster of virtual machines using IaaS, install the database software and configure it, monitor the database to make sure everything works properly, and continually update the system software for security. Or you could consume a database as a service and leave the operations, scale, and updates to a service provider. Using APIs, you set up a database and access it. This ladder case is an example of software as a service (SaaS), shown in figure 9.2.
I found that part on a Turkish Developer's youtube video about cloud computing, and I wanted to add here what I took from it.
Here is the link for the video.
With CaaS developer/user just creates a container from the source code of the application and deploys the container on the cloud service of the choice. It saves lots of problems like PaaS and also comes with similar problems like pricing and so on. Being able to containerize your application with tools like Docker is also a must for that approach.
Google Cloud Run, AWS Fargate can be counted as some of the major CaaS providers.
FaaS is basically parts of real applications hosted on cloud providers to do a specific given duty given. With that approach, the user can easily create and deploy functions of choice on the cloud. It provides lots of benefits like PaaS approaches while minimizing the attack surface of the application because of using so little code.
They also are known as Lambda Functions because Amazon is the pioneer of that kind of cloud service.
Google Cloud Functions, AWS Lambda, Azure Functions, Firebase Functions can be counted as some of the major FaaS providers.
I hope you find that post useful, I'll try to mix the tutorial type of posts with the ones like this one. See you next time. :)