Why Use Cloud? How Is Cloud Computing Different from Traditional Computing?
Cloud has become the norm for hosting web apps in the present era & there are obvious reasons for it. Businesses & indie devs want to design their apps for the cloud right from the start.
Why is cloud preferred by everyone when it comes to hosting? Why not rent out or buy the traditional servers to host our apps? What’s the difference?
This write-up is a deep dive into traditional hosting or computing whatever you may want to call it vs cloud computing. This is also the answer to the most frequently asked question why use cloud computing?
I’ll start by discussing the primary differences between the two point by point & will then move into the architectural differences of both.
By the end of the article, you’ll be crystal clear on what infrastructure to pick to host your million-dollar service.
So, without any further ado. Let’s get on with it.
1. Provisioning the Right Amount of Hardware
No service wants to go down ever, no matter how much traffic load it has to deal with. To pull this off, we need the right amount of computing power/hardware to bear the load of massive traffic at peak times.
Businesses have to anticipate the maximum amount of traffic their platforms could receive & then they have to go shopping for the required hardware. This is technically known as provisioning.
In traditional hosting, businesses have to buy all the hardware upfront investing quite a sum of money preparing for the traffic surge.
Now here are a few things to consider when buying all the hardware upfront:
What if the platform doesn’t receive the amount of predicted traffic? The traffic falls short by quite an extent.
What if there are just a few days in a month when the traffic really spikes, the rest of the days go pretty normal?
In the above scenario, all the extra servers just sit there waiting for the next traffic spike. Isn’t this an underutilization & waste of resources? Just to handle spikes for a very small percentage of days the business has to spend quite an amount of money.
What if the platform receives 3x traffic? Thrice the amount of traffic predicted? How will the modest server fleet handle that amount of traffic?
Well now, the business has to rush to the market to buy new hardware & set everything up pretty quick or they lose customers.
Or just buy hardware upfront like crazy, 3x times the anticipated traffic. Well, this is not a practical solution, is it?
In the case of the traffic surge, the required number of servers are deployed dynamically to meet the demands. When the traffic subsides, the additional servers are removed.
And all this addition & removal of servers happens automatically on the fly without any kind of human intervention. How convenient.
Why make our lives hard, as if it isn’t enough already, buying and managing all the hardware upfront when the cloud makes our lives much easier.
A good real-life example of this is when Pokemon GO engineering team deployed their augmented reality game on the Google Cloud platform.
They anticipated for 1X player traffic with a worst-case estimate of 5X the anticipated traffic. But the popularity of the game spiked like a rocket and went upto 50X. Google cloud scaled pretty well spinning up additional instances and handling the traffic smoothly.
If it wasn’t for the cloud. Scaling a service with 50X traffic was just not possible.
2. Infrastructure Maintenance
Technology evolves at a crazy pace. When we buy hardware, we also have to keep upgrading it. Install the latest software & security patches, comply with regulations, protocols & stuff.
Naturally, the developers won’t do this. We need a dedicated infrastructure team to keep doing this stuff, ensuring that the servers are healthy & always running.
Alright, but what was our goal when we started out? To innovate, make customers happy, bring new features to the market as fast as we can to stay competitive in the market.
We didn’t realize that this infrastructure maintenance thing would demand a major chunk of our time.
With the cloud, we don’t have to worry about this stuff. Public cloud providers in the industry like GCP, AWS take the onus of everything. Server maintenance, security updates, hardware upgrades etc etc.
All businesses have to do is deploy their apps, focus on the customers, innovate, think about releasing the next feature.
Not only cloud computing platforms allow us to be more productive, but we also save a ton of money avoiding getting our hands dirty with infrastructure maintenance & stuff.
Evernote moved to Google Cloud with over 200 million customers to allow itself to focus more on innovation & spend less time thinking about its infrastructure.
Security is a key consideration when designing our systems. More for services in spaces like military, healthcare, government, law etc. For businesses that just cannot afford a data breach. It’s always safe to have our data on-prem instead of streaming over to the public cloud.
Though the data is completely encrypted when at rest or in motion but still moving data is vulnerable to security breaches.
This doesn’t mean we have to work with the traditional hosting when hosting our data on-prem. We can leverage the open source cloud computing solutions like OpenStack to setup our on-prem cloud infrastructure.
We can also leverage a hybrid cloud architecture to host not so sensitive data on the public cloud & retain the super-sensitive data on-prem in the private cloud. Holding data within the premises enables greater control over it as opposed to holding it in a public server.
Slack is the industry’s most popular workplace communication tool but to use that teams have to stream their data over to the slack’s servers which might not be suitable for a few organizations holding sensitive data. Hence mattermost an open source team communication tool with Slack like features is preferred by teams to communicate in-house.
4. Data Safety
To prevent data loss it needs to be replicated across several data centres across different geographical zones as a contingency for power outages or natural calamities.
Taking backup of data across the globe is not something which every self-hosted business can do. Think about businesses just starting up. Also, losing customer data is not an option.
If I just say expensive it would be an understatement, it’s a super expensive process setting up data centres all across the globe let alone setting a few in the same geographical zone.
But when businesses deploy their data on a public cloud, they have it backed up across the globe in several different locations.
5. Cost Effectiveness
Leveraging the infrastructure of a public cloud provider like AWS averts the need to invest in the hardware upfront. Rather, we have to pay as per the traffic our business receives. This comes in as pretty cost effective.
Cloud deployments allow us to make better infrastructural investment decisions as we go. Also, with many big cloud providers in the market such as Google cloud, AWS, Oracle, Alibaba & other niche players the market has become pretty competitive with providers trying to attract the customers with better competitive plans.
Serverless has got pretty popular which is a step further in cutting the deployment costs as much as possible. Now we do not have to pay for the idle time of our instances just pay for the minutes or hours of the computing power consumed.
As our business grows, along the way we need several custom infrastructural solutions, new technologies for instance machine learning, blockchain integration etc.
Imagine writing everything from the ground up when hosting our business on-prem. Feasible?
Cloud offers a plethora of services, features, infrastructural solutions on different levels to enable us to bring our product to the market in minimum time.
I’ll start with the different types of cloud service offerings. There are IaaS Infrastructure as a Service, PaaS Platform as a Service, SaaS Software as a Service.
Different Types of Cloud Services
Need more control over the underlying hardware, want to pick the technologies running on your hardware? Go with the Infrastructure as a Service.
You do not care about the underlying hardware rather are more focused on building stuff. Just want to deploy your app on the server & use the tech provided by the cloud provider? Pick PaaS platform as a service.
Already have the app running just need a messaging solution or a database or any other specific service to add additional functionality to your app? Pick SaaS Software as a Service.
Leverage the Cloud Marketplace
Besides having their own products, public cloud platforms have a marketplace with pretty extensive custom third-party solutions. Which allows businesses to pick services other than those already on the cloud, for instance, better security solutions, data parsing APIs, monitoring & analytics tools etc. Marketplaces make cloud platforms a one-stop-shop for everything.
Products Designed for Specific Spaces
Cloud platforms have customers from different spaces such as Energy, Law, Gaming, IoT etc. They have battle-tested infrastructure running services in specific domains. They are aware of the intricacies of running services in these domains.
Leverage the extensively researched & fine-tuned product cloud offerings in your space.
Alright, time to move to the technical differences, the underlying fundamental design differences between traditional hosting & the cloud infrastructure.
7. How Is Traditional Computing Different from Cloud Computing in terms of the Underlying Infrastructural Architectural Design?
Cloud services are designed a little differently than the traditional computing architecture that’s what enables the cloud to scale. How? Let’s find out.
Traditional Computing Infrastructure Design
Think of traditional computing servers as the vertical monolith hardware with additional redundant servers to come into action in case of any failure of the primary servers. The diagram below will provide you with a clearer picture of what I am talking about.
In the diagram as you can see, in case any of the nodes fails other nodes are in action, the application has a whole doesn’t go down.
This ensures the availability of the service. Also, in this kind of application, the nodes/servers in the cluster are aware of each other.
Cloud Computing Infrastructure Design
In cloud different services are split as individual logical services working in conjunction with other loosely coupled individual services in the cloud.
In the above section, I brought up that the cloud offers SaaS Software as a Service, that software can be a database, a messaging server or any other service.
To manage, scale & make that service multi-tenant, those are designed as logical layers spread across different geographical zones as opposed to having vertical monolithic servers.
The below diagram will give a clearer picture of what I am talking about.
As you can see in the diagram database is a separate layer, storage service is a separate layer, UI is a separate layer etc.
This kind of design makes the cloud better available, fault tolerant, scalable, & cost effective.
Now in the worst-case scenario even if a particular service let’s say storage goes down. The other layers UI, messaging etc. are still up.
Also, it’s comparatively easy to manage, modify & scale individual services as opposed to the entire application.
Also, these zones have zero dependence on each other. Even if the entire zone goes down, the application doesn’t get impacted. It is still up from the other availability zones.
8. More On the Blog
Well, Guys, this is pretty much it on why use cloud computing? How different is it when compared with traditional computing? I think you have a clear idea of things by now.
If you liked the article. Share it with your folks. You can follow scaleyourapp.com on social media. Subscribe to browser notification to stay notified on the new content on the blog.
I’ll see you in the next write-up.
- Distributed Systems, Scalability & System Design #1 – Heroku Client Rate Throttling
- Zero to Software/Application Architect – Learning Track
- Java Full Stack Developer – The Complete Roadmap – Part 2 – Let’s Talk
- Java Full Stack Developer – The Complete Roadmap – Part 1 – Let’s Talk
- Best Handpicked Resources To Learn Software Architecture, Distributed Systems & System Design