WHAT IS CLOUD COMPUTING?
Tags: devops
Published: 2020-08-26 23:25:24

Contrary to what you might think the cloud is basically someone else’s computer that you can communicate with and computing is when that computer offers you certain resources to use. C’est fini!. Combining them together cloud computing is simply an organization offering up its computing resources to the general public as services that can be used resources like Networking, Storage, Machine Learning, Deployments, Logging, and so on are offered and managed by the cloud provider and you can choose to purchase these resources and use them as needed.

![A server room-Image from Silicon Republic](https://dev-to-uploads.s3.amazonaws.com/i/o3rkjbhgugrsrb01ypq3.jpg)

That image above is basically the cloud. A server is a piece of computer hardware or software that provides functionality for other programs or devices. So instead of setting up our own server and resources we just request from someone.

To better understand what cloud computing came to solve, let's deploy a fictitious social media application together.

1. We build our application using the most awesome front end and backend frameworks(React,.NetCore 😌).

2. We get a server to host our application, Now we really believe in the value of our application and we expect to see 50,000 users per month so we need a high-performance server with decent storage and a good amount of RAM this will probably set us back a couple of thousands of dollars.💰

3. We get a network engineer to configure our server’s network with the necessary firewalls and permissions.

4. We publish the application and send it to our live environment server with the necessary dependencies and then we are good. Voila, The application is live.
Now our application becomes a huge success 50,000 new subscribers in the first month. Life is good the only problem is that our server is continuously crashing it can't handle all these requests. so what do we do?

##Get Additional Servers

We get more servers, configure the network, get a Load Balancer to push some requests to server A and others to server B. Problem solved. But then something surprising happens the next couple of months due to unforeseen circumstances our user base drops to 25,000 users🤔now we have more server resources fewer users and we are burning through cash on maintenance costs for these servers coupled with the resources that are wasting.
What if there is a better way. What if all we had to do was build the application and then request only the server resources we needed at the time? This was where the concept of Iaas was born(Infrastructure as a service).

##Infrastructure As A Service
In infrastructure as a service a cloud provider company like (Google cloud Platform, Mircosoft Azure and Amazon Web Services) manages the infrastructure of your application for you, things like servers, storage, networking, virtualization are being handled by the provider and all you do is request for the resources needed, you choose the type of machine you want with the necessary specifications and resources you require and in minutes you can deploy your application and scale as needed as your userbase grows. See how fast that was?.

##Platform As A Service

Platform as a service builds on infrastructure as a service, here the cloud provider provides both hardware and software tools to developers to maintain, build and deploy applications whilst the provider manages the other chain of operations. The predominant difference between Iaas and Paas is that in Paas you also get access to software tools as well as hardware tools from your cloud provider. You need a way to manage all your different servers running different services? They provide it for you. You need a database to store information? They provide it for you. Perhaps you need machine learning tools to analyze user data? They provide it for you. You need a tool to monitor and test your application?. They got you covered. Some cloud providers even offer preconfigured servers with the necessary applications and dependencies to run your deployed applications. And all these are managed by the provider. Pretty cool right?. As you can see this frees up a lot of the complexities involved in deploying, and maintaining applications. It allows the developer to focus on the creative side of development. The developers can use their energy constructively in designing, building, and deploying applications.

##Software As A Service

The SaaS provider manages everything from hardware installation to app functioning. The customer is not responsible for anything in this model other than using the software. If you use an app like Google drive, You are using Google's infrastructure to store your data. How it is stored, the process involved in storing the data does not matter to you. All you do is press a button to back up and that's it. In saas, all you do is use the application the provider manages the whole control chain.

##Quick Comparison Diagram
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gwrq8k7tei0yhw4yq9ke.jpg)

Follow me here and across my social media for more content like this [Twitter](https://twitter.com/ElegberunDaniel?s=09) [Linkedin](https://www.linkedin.com/in/olugbenga-elegberun/)