Cloud Computing Demystified: Everything You Need to Know to Stay Ahead of the Game
Did you know that 94% of enterprises use some form of cloud service? Cloud computing is transforming how businesses operate and innovate in the digital age. Telegram, WhatsApp, Google Drive, ChatGPT—you name it! They all leverage the computing power offered by cloud computing to efficiently handle the millions of requests on their applications every day without incurring business-wrecking operational costs.
Chatting with many of my friends who are into frontend development, backend development, data science, and various other fields in the software development pipeline, I realized many do not really understand what it means to see the word "cloud computing." I wouldn't blame them because I also didn't really understand it until I read extensively about it and became interested in the field.
So I thought, "Why not write a blog to help my friends and others understand this seemingly vague concept?” This will be the first blog in a series of blogs that will break down the details of the "cloud" and help you understand how to leverage it in various software-related fields.
By the end of this blog post, you will understand the concept of cloud computing, its various models, and how it is used in various software development fields.
Let's dive in!
What is Cloud Computing?
The first time I heard the word "cloud computing," I thought some scientists had somehow figured out how to use the cloud (yes, the cloud in the sky🤷♂️) to perform computing tasks. Even though it didn't make so much sense to me, that was the best way I could understand it then.
To understand cloud computing, let's visualize a traditional software infrastructure setup. Suppose a multinational cosmetic company has decided to adopt e-commerce to increase the growth and reach of its business. They've hired a software developer to help them build an e-commerce website that allows their customers to purchase their products online. Before the website can go live, the company has to estimate the amount of traffic they expect on the website and then purchase physical computing hardware like servers, cables, and storage systems to help them handle the expected load. They'll load up this hardware in a data center where there must be 24/7 electricity if they want their websites to always be accessible, and they'll hire system and operations engineers who will set up the hardware, connect it as appropriate, and maintain it.
While this traditional setting gives the company all the autonomy as to which type of hardware they want, who has access to their data center, and how, it has some major flaws. Firstly, the company needs to have enough budget to finance the purchase of these resources, regardless of whether their estimation is exaggerated or falls short. The infrastructure requires a dedicated physical location with a constant power supply and connection. Any glitch in any of these may lead to a major issue accessing the website. It also requires a lot of manual labor to set up and maintain the hardware, which may result in huge operational costs.
Likewise, say, for example, that the company estimated that their website would only receive a maximum of 2 million visitors at a time and purchased hardware that could handle just that. Consider a scenario where the company wants to do a Black Friday sale. As with all Black Fridays, there's always an influx of customers looking to win the flash sale simultaneously. During the Black Friday sales, the company's estimation fell short, and the website experienced an overwhelming 10 million customers trying to access the website simultaneously. This huge traffic crashes the website, leading to millions of frustrated customers, lost sales, and damage to the company's reputation. These are some of the problems caused by the traditional method.
For every artificial problem, there is a solution. Cloud computing is the solution to these problems caused by the traditional method.
Think of using computing resources to power your web applications and computing requirements without needing to buy the hardware, set it up, and maintain it physically. This is what cloud computing allows you to do. Providers such as AWS, Azure, and GCP, which are giant tech companies, buy hardware computing resources, store them in physical locations across the globe, and allow you to use them for your application. Cloud computing, or "cloud," simply means someone else's computing resources somewhere that you can access and use over the internet without needing to house them physically. Below is a more polished definition:
Cloud computing is the delivery of computing services such as servers, storage, databases, networking, software, analytics, and intelligence over the internet (the cloud).
Aside from eliminating the need for physical labor, cloud computing has many beneficial characteristics, some of which we will discuss next.
Characteristics of Cloud Computing
Cloud computing offers various benefits that are intertwined with its characteristics. Some of them include:
On-Demand Availability: Cloud computing provides on-demand availability of computing resources. Users can access the services and resources they need, such as virtual machines, storage, databases, or applications, without buying the resources upfront.
Scalability and Elasticity: Scalability in cloud computing refers to the ability to handle an increased or decreased workload by adding or removing resources dynamically. In the cosmetic company illustration we imagined earlier, we can see that a traditional computing infrastructure setup is limited to the maximum capacity of your available hardware—this is not the case in the cloud. Cloud computing allows businesses to scale their infrastructure to accommodate changes in demand. During periods of high traffic, additional computing resources can be quickly allocated to ensure optimal performance. During periods of low traffic, resources can be scaled down to avoid unnecessary costs. This ensures that the required resources are available when needed, without manual intervention or downtime, providing optimal performance and cost efficiency.
Cost-Effectiveness: Cloud computing offers cost-effective solutions compared to traditional infrastructure. Instead of upfront investments in hardware and infrastructure maintenance, cloud services operate on a pay-as-you-go model. Businesses only pay for the resources they use, allowing for better cost optimization. Additionally, the elimination of the need for businesses to manage and maintain their own physical infrastructure reduces operational costs and enables better financial planning.
Flexibility: Cloud computing provides flexibility regarding resource allocation and service choices. It offers a wide range of options in types of resources, including storage, databases, networking, and more, allowing businesses to choose the specific services and configurations that align with the requirements of their applications.
Reliability: Cloud service providers invest in robust infrastructure and redundancy measures to ensure high reliability and availability. They operate multiple data centers in different locations, allowing for data replication and redundancy. This minimizes the risk of data loss or service disruptions due to hardware failures or natural disasters. Additionally, cloud providers often offer service level agreements (SLAs) that guarantee a certain level of uptime and performance, ensuring reliable access to data and applications.
Security: Cloud computing providers prioritize security measures to protect data and infrastructure. They implement industry-standard security practices like data encryption, access controls, and regular security audits. Cloud services often have dedicated security teams and technologies in place to detect and mitigate security threats. Major cloud providers also comply with various security and privacy regulations, helping businesses maintain compliance with data protection laws and industry standards.
Cloud Service models
With the number of SaaS products available today and how much the word is used across the tech space, I would be surprised if anyone on the planet has never heard the word by now—even if they don't really understand how it works.
Software as a Service (SaaS) is one of the three main types of cloud computing services, along with Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).
Let's understand each of these models:
Software as a Service (SaaS): Traditionally, if you want to use software applications such as Microsoft Word, Excel, or PowerPoint, you need to install the software on your computer—which must meet the requirements of the software—and update it periodically. By leveraging cloud computing capabilities, you can now use applications such as Figma, Google Docs, and Zoom without having to install any software on your computer. This, too, is regardless of whether you use a Windows computer from 2011 or the latest MacBook Pro. Software applications are hosted on a cloud provider's servers and offered to users, who can access them from anywhere with an internet connection using the SaaS model. SaaS is a popular choice for businesses of all sizes, as it offers a number of benefits, such as cost savings, scalability, and ease of use.
Platform as a Service (PaaS): Often, when frontend and backend developers build a project and wish to make it available online, they use services such as Heroku or Vercel, which handle the storage, networking, and server configuration. These services are examples of PaaS offerings. PaaS is a type of cloud computing service that provides a complete development environment for building, testing, and deploying applications. This is usually offered through a graphical interface, with many of the underlying technical details abstracted away. Other examples of PaaS offerings are AWS Lambda, Elastic Beanstalk, and Google App Engine.
Infrastructure as a Service (IaaS): In the traditional setup, businesses need to invest in and maintain their own physical infrastructure, including servers, networking equipment, and storage systems. However, with Infrastructure as a Service (IaaS), the burden of managing and maintaining infrastructure is lifted. IaaS provides all the servers, networking, storage, and other computing resources you need to manage and customize the infrastructure for your application. This is similar to having a data center physically, where you will need a systems administrator to monitor and manage the resources; in this case, they only do it over the Internet.
Note: Observe the difference between SaaS, PaaS, and IaaS. IaaS provides access to all the infrastructure resources to configure resources, build, test, and deploy an application; PaaS provides a platform to build, test, and deploy the application; and SaaS provides a complete application that can be accessed over the internet. Each model is an increased layer of abstraction over the other.
Uses of Cloud Computing in Software Development
Now that we understand what cloud computing is and the various types of cloud offerings, let's explore some of the uses of cloud computing across various software development fields.
Development and Testing: As we've seen earlier, software developers can use the cloud to provision on-demand environments for developing and testing software applications without investing in expensive hardware.
For example, a company may want their employees to work on a dedicated laptop with specific specs as their work may require. Instead of buying new laptops for every employee, the company may decide to provide virtual machines for each employee on the cloud with their preferred specifications. Employees then get to log in to their virtual machines from anywhere and use them as though they were physical computers. This will save money as the cloud provider will only charge for the time that the machines run. Likewise, suppose you're a developer with a Windows laptop and want to test the functionality of your application on a Macbook. In that case, you can easily provision a macOS instance and test your application without buying a new laptop.
Web and Mobile Applications: On the cloud, you don't need to know the amount of traffic your application will get beforehand. You can host and scale your web and mobile applications in the cloud without worrying about server capacity or bandwidth issues. For example, when OpenAI launched ChatGPT, the application received an overwhelming 1 million users in less than 5 days. Thanks to the Azure cloud, the application could scale with increasing traffic and handle the traffic with commendable efficiency.
Big Data and Analytics: The cloud is big enough to store as much data as you have. With the increasing collection of different types of data for use in data science, data analytics, and machine learning, there's a need for efficient storage and querying. You can store and process large volumes of data in the cloud using various tools and services that enable you to gain insights and make data-driven decisions.
Internet of Things (IoT): As devices get more interconnected, the cloud provides various platforms and services that enable you to connect and manage your IoT devices and collect, analyze, and act on data from sensors and smart devices.
Artificial Intelligence and Machine Learning: The machine learning process requires efficient storage and querying. To make the process faster and less painful, you can harness the power of cloud-based services that provide you with access to advanced AI capabilities such as natural language processing, computer vision, speech recognition, etc.
Conclusion
In this blog post, you learned about the basics of cloud computing, its various models, and how it is used in various software development fields.
This is the first blog in a series that will explain all the basics of cloud computing and get you acquainted with the technology. In the next part, we'll dive into the major cloud providers and how to choose the right one for your use case. Kindly follow this blog to get a notification when the next part of the series drops.
Thank you for reading, and anticipate the next part.